@tiptap/core 2.0.0-beta.14 → 2.0.0-beta.143
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.
- package/LICENSE.md +1 -1
- package/README.md +2 -2
- package/dist/packages/core/src/CommandManager.d.ts +12 -5
- package/dist/packages/core/src/Editor.d.ts +19 -20
- package/dist/packages/core/src/EventEmitter.d.ts +8 -4
- package/dist/packages/core/src/Extension.d.ts +102 -26
- package/dist/packages/core/src/ExtensionManager.d.ts +6 -11
- package/dist/packages/core/src/InputRule.d.ts +42 -0
- package/dist/packages/core/src/Mark.d.ts +134 -30
- package/dist/packages/core/src/Node.d.ts +151 -32
- package/dist/packages/core/src/NodeView.d.ts +5 -9
- package/dist/packages/core/src/PasteRule.d.ts +42 -0
- package/dist/packages/core/src/Tracker.d.ts +11 -0
- package/dist/packages/core/src/commands/blur.d.ts +3 -3
- package/dist/packages/core/src/commands/clearContent.d.ts +3 -3
- package/dist/packages/core/src/commands/clearNodes.d.ts +3 -3
- package/dist/packages/core/src/commands/command.d.ts +2 -2
- package/dist/packages/core/src/commands/createParagraphNear.d.ts +3 -3
- package/dist/packages/core/src/commands/deleteNode.d.ts +13 -0
- package/dist/packages/core/src/commands/deleteRange.d.ts +3 -3
- package/dist/packages/core/src/commands/deleteSelection.d.ts +3 -3
- package/dist/packages/core/src/commands/enter.d.ts +3 -3
- package/dist/packages/core/src/commands/exitCode.d.ts +3 -3
- package/dist/packages/core/src/commands/extendMarkRange.d.ts +3 -3
- package/dist/packages/core/src/commands/first.d.ts +3 -3
- package/dist/packages/core/src/commands/focus.d.ts +5 -3
- package/dist/packages/core/src/commands/forEach.d.ts +14 -0
- package/dist/packages/core/src/commands/insertContent.d.ts +16 -0
- package/dist/packages/core/src/commands/insertContentAt.d.ts +16 -0
- package/dist/packages/core/src/commands/joinBackward.d.ts +3 -3
- package/dist/packages/core/src/commands/joinForward.d.ts +3 -3
- package/dist/packages/core/src/commands/keyboardShortcut.d.ts +3 -3
- package/dist/packages/core/src/commands/lift.d.ts +3 -3
- package/dist/packages/core/src/commands/liftEmptyBlock.d.ts +3 -3
- package/dist/packages/core/src/commands/liftListItem.d.ts +3 -3
- package/dist/packages/core/src/commands/newlineInCode.d.ts +3 -3
- package/dist/packages/core/src/commands/resetAttributes.d.ts +13 -0
- package/dist/packages/core/src/commands/scrollIntoView.d.ts +3 -3
- package/dist/packages/core/src/commands/selectAll.d.ts +3 -3
- package/dist/packages/core/src/commands/selectNodeBackward.d.ts +3 -3
- package/dist/packages/core/src/commands/selectNodeForward.d.ts +3 -3
- package/dist/packages/core/src/commands/selectParentNode.d.ts +3 -3
- package/dist/packages/core/src/commands/setContent.d.ts +4 -3
- package/dist/packages/core/src/commands/setMark.d.ts +3 -3
- package/dist/packages/core/src/commands/setMeta.d.ts +12 -0
- package/dist/packages/core/src/commands/setNode.d.ts +3 -3
- package/dist/packages/core/src/commands/setNodeSelection.d.ts +12 -0
- package/dist/packages/core/src/commands/setTextSelection.d.ts +12 -0
- package/dist/packages/core/src/commands/sinkListItem.d.ts +3 -3
- package/dist/packages/core/src/commands/splitBlock.d.ts +3 -3
- package/dist/packages/core/src/commands/splitListItem.d.ts +3 -3
- package/dist/packages/core/src/commands/toggleList.d.ts +3 -3
- package/dist/packages/core/src/commands/toggleMark.d.ts +8 -3
- package/dist/packages/core/src/commands/toggleNode.d.ts +3 -3
- package/dist/packages/core/src/commands/toggleWrap.d.ts +3 -3
- package/dist/packages/core/src/commands/undoInputRule.d.ts +3 -3
- package/dist/packages/core/src/commands/unsetAllMarks.d.ts +3 -3
- package/dist/packages/core/src/commands/unsetMark.d.ts +8 -3
- package/dist/packages/core/src/commands/updateAttributes.d.ts +13 -0
- package/dist/packages/core/src/commands/wrapIn.d.ts +3 -3
- package/dist/packages/core/src/commands/wrapInList.d.ts +3 -3
- package/dist/packages/core/src/extensions/clipboardTextSerializer.d.ts +1 -1
- package/dist/packages/core/src/extensions/commands.d.ts +19 -15
- package/dist/packages/core/src/extensions/editable.d.ts +1 -1
- package/dist/packages/core/src/extensions/focusEvents.d.ts +1 -1
- package/dist/packages/core/src/extensions/index.d.ts +1 -0
- package/dist/packages/core/src/extensions/keymap.d.ts +1 -1
- package/dist/packages/core/src/extensions/tabindex.d.ts +2 -0
- package/dist/packages/core/src/helpers/createChainableState.d.ts +5 -0
- package/dist/packages/core/src/helpers/createDocument.d.ts +3 -0
- package/dist/packages/core/src/helpers/createNodeFromContent.d.ts +7 -0
- package/dist/packages/core/src/helpers/defaultBlockAt.d.ts +2 -0
- package/dist/packages/core/src/helpers/findChildren.d.ts +3 -0
- package/dist/packages/core/src/helpers/findChildrenInRange.d.ts +6 -0
- package/dist/packages/core/src/helpers/generateHTML.d.ts +2 -2
- package/dist/packages/core/src/helpers/generateJSON.d.ts +2 -0
- package/dist/packages/core/src/helpers/generateText.d.ts +5 -0
- package/dist/packages/core/src/helpers/getAttributes.d.ts +3 -0
- package/dist/packages/core/src/helpers/getDebugJSON.d.ts +8 -0
- package/dist/packages/core/src/helpers/getExtensionField.d.ts +2 -0
- package/dist/packages/core/src/helpers/getHTMLFromFragment.d.ts +2 -2
- package/dist/packages/core/src/helpers/getMarkAttributes.d.ts +1 -2
- package/dist/packages/core/src/helpers/getMarkRange.d.ts +1 -1
- package/dist/packages/core/src/helpers/getNodeAttributes.d.ts +1 -2
- package/dist/packages/core/src/helpers/getRenderedAttributes.d.ts +2 -2
- package/dist/packages/core/src/helpers/getSchemaByResolvedExtensions.d.ts +3 -0
- package/dist/packages/core/src/helpers/getSplittedAttributes.d.ts +2 -2
- package/dist/packages/core/src/helpers/getText.d.ts +6 -0
- package/dist/packages/core/src/helpers/getTextBetween.d.ts +6 -0
- package/dist/packages/core/src/helpers/getTextSeralizersFromSchema.d.ts +3 -0
- package/dist/packages/core/src/helpers/isActive.d.ts +1 -2
- package/dist/packages/core/src/helpers/isExtensionRulesEnabled.d.ts +2 -0
- package/dist/packages/core/src/helpers/isMarkActive.d.ts +1 -2
- package/dist/packages/core/src/helpers/isNodeActive.d.ts +1 -2
- package/dist/packages/core/src/helpers/posToDOMRect.d.ts +2 -0
- package/dist/packages/core/src/helpers/splitExtensions.d.ts +3 -3
- package/dist/packages/core/src/index.d.ts +33 -5
- package/dist/packages/core/src/inputRules/markInputRule.d.ts +11 -2
- package/dist/packages/core/src/inputRules/nodeInputRule.d.ts +11 -2
- package/dist/packages/core/src/inputRules/textInputRule.d.ts +9 -0
- package/dist/packages/core/src/inputRules/textblockTypeInputRule.d.ts +14 -0
- package/dist/packages/core/src/inputRules/wrappingInputRule.d.ts +23 -0
- package/dist/packages/core/src/pasteRules/markPasteRule.d.ts +11 -2
- package/dist/packages/core/src/pasteRules/textPasteRule.d.ts +9 -0
- package/dist/packages/core/src/style.d.ts +1 -1
- package/dist/packages/core/src/types.d.ts +105 -52
- package/dist/packages/core/src/utilities/callOrReturn.d.ts +2 -1
- package/dist/packages/core/src/utilities/deleteProps.d.ts +1 -2
- package/dist/packages/core/src/utilities/findDuplicates.d.ts +1 -0
- package/dist/packages/core/src/utilities/isClass.d.ts +1 -1
- package/dist/packages/core/src/utilities/isEmptyObject.d.ts +1 -1
- package/dist/packages/core/src/utilities/isFunction.d.ts +1 -0
- package/dist/packages/core/src/utilities/isNumber.d.ts +1 -0
- package/dist/packages/core/src/utilities/isObject.d.ts +1 -1
- package/dist/packages/core/src/utilities/isPlainObject.d.ts +1 -1
- package/dist/packages/core/src/utilities/isRegExp.d.ts +1 -0
- package/dist/packages/core/src/utilities/isiOS.d.ts +1 -0
- package/dist/packages/core/src/utilities/mergeAttributes.d.ts +1 -2
- package/dist/packages/core/src/utilities/mergeDeep.d.ts +1 -2
- package/dist/packages/core/src/utilities/objectIncludes.d.ts +3 -2
- package/dist/tiptap-core.cjs.js +2723 -1455
- package/dist/tiptap-core.cjs.js.map +1 -1
- package/dist/tiptap-core.esm.js +3172 -1931
- package/dist/tiptap-core.esm.js.map +1 -1
- package/dist/tiptap-core.umd.js +3292 -2023
- package/dist/tiptap-core.umd.js.map +1 -1
- package/package.json +19 -16
- package/src/CommandManager.ts +59 -61
- package/src/Editor.ts +91 -95
- package/src/EventEmitter.ts +14 -4
- package/src/Extension.ts +202 -40
- package/src/ExtensionManager.ts +234 -70
- package/src/InputRule.ts +268 -0
- package/src/Mark.ts +248 -46
- package/src/Node.ts +275 -51
- package/src/NodeView.ts +105 -42
- package/src/PasteRule.ts +215 -0
- package/src/Tracker.ts +42 -0
- package/src/commands/blur.ts +9 -7
- package/src/commands/clearContent.ts +3 -3
- package/src/commands/clearNodes.ts +25 -19
- package/src/commands/command.ts +2 -2
- package/src/commands/createParagraphNear.ts +3 -3
- package/src/commands/deleteNode.ts +36 -0
- package/src/commands/deleteRange.ts +3 -3
- package/src/commands/deleteSelection.ts +3 -3
- package/src/commands/enter.ts +3 -3
- package/src/commands/exitCode.ts +3 -3
- package/src/commands/extendMarkRange.ts +8 -8
- package/src/commands/first.ts +3 -3
- package/src/commands/focus.ts +54 -12
- package/src/commands/forEach.ts +24 -0
- package/src/commands/insertContent.ts +23 -0
- package/src/commands/insertContentAt.ts +93 -0
- package/src/commands/joinBackward.ts +3 -3
- package/src/commands/joinForward.ts +3 -3
- package/src/commands/keyboardShortcut.ts +3 -3
- package/src/commands/lift.ts +3 -3
- package/src/commands/liftEmptyBlock.ts +3 -3
- package/src/commands/liftListItem.ts +3 -3
- package/src/commands/newlineInCode.ts +3 -3
- package/src/commands/resetAttributes.ts +61 -0
- package/src/commands/scrollIntoView.ts +3 -3
- package/src/commands/selectAll.ts +8 -6
- package/src/commands/selectNodeBackward.ts +3 -3
- package/src/commands/selectNodeForward.ts +3 -3
- package/src/commands/selectParentNode.ts +3 -3
- package/src/commands/setContent.ts +10 -5
- package/src/commands/setMark.ts +33 -10
- package/src/commands/setMeta.ts +18 -0
- package/src/commands/setNode.ts +3 -3
- package/src/commands/setNodeSelection.ts +28 -0
- package/src/commands/setTextSelection.ts +32 -0
- package/src/commands/sinkListItem.ts +3 -3
- package/src/commands/splitBlock.ts +13 -8
- package/src/commands/splitListItem.ts +39 -13
- package/src/commands/toggleList.ts +4 -4
- package/src/commands/toggleMark.ts +15 -5
- package/src/commands/toggleNode.ts +3 -3
- package/src/commands/toggleWrap.ts +3 -3
- package/src/commands/undoInputRule.ts +33 -5
- package/src/commands/unsetAllMarks.ts +3 -3
- package/src/commands/unsetMark.ts +32 -20
- package/src/commands/updateAttributes.ts +72 -0
- package/src/commands/wrapIn.ts +3 -3
- package/src/commands/wrapInList.ts +3 -3
- package/src/extensions/clipboardTextSerializer.ts +11 -35
- package/src/extensions/commands.ts +27 -21
- package/src/extensions/focusEvents.ts +0 -3
- package/src/extensions/index.ts +1 -0
- package/src/extensions/keymap.ts +6 -6
- package/src/extensions/tabindex.ts +19 -0
- package/src/helpers/createChainableState.ts +37 -0
- package/src/helpers/createDocument.ts +11 -0
- package/src/helpers/createNodeFromContent.ts +56 -0
- package/src/helpers/defaultBlockAt.ts +13 -0
- package/src/helpers/findChildren.ts +17 -0
- package/src/helpers/findChildrenInRange.ts +31 -0
- package/src/helpers/generateHTML.ts +3 -3
- package/src/helpers/generateJSON.ts +13 -0
- package/src/helpers/generateText.ts +29 -0
- package/src/helpers/getAttributes.ts +27 -0
- package/src/helpers/getAttributesFromExtensions.ts +26 -5
- package/src/helpers/getDebugJSON.ts +46 -0
- package/src/helpers/getExtensionField.ts +25 -0
- package/src/helpers/getHTMLFromFragment.ts +5 -5
- package/src/helpers/getMarkAttributes.ts +11 -8
- package/src/helpers/getMarkRange.ts +34 -6
- package/src/helpers/getMarkType.ts +4 -0
- package/src/helpers/getMarksBetween.ts +3 -3
- package/src/helpers/getNodeAttributes.ts +6 -7
- package/src/helpers/getNodeType.ts +4 -0
- package/src/helpers/getRenderedAttributes.ts +3 -5
- package/src/helpers/getSchema.ts +5 -132
- package/src/helpers/getSchemaByResolvedExtensions.ts +147 -0
- package/src/helpers/getSchemaTypeByName.ts +1 -9
- package/src/helpers/getSplittedAttributes.ts +3 -3
- package/src/helpers/getText.ts +18 -0
- package/src/helpers/getTextBetween.ts +45 -0
- package/src/helpers/getTextSeralizersFromSchema.ts +9 -0
- package/src/helpers/injectExtensionAttributesToParseRule.ts +12 -8
- package/src/helpers/isActive.ts +1 -2
- package/src/helpers/isExtensionRulesEnabled.ts +15 -0
- package/src/helpers/isList.ts +11 -4
- package/src/helpers/isMarkActive.ts +40 -16
- package/src/helpers/isNodeActive.ts +23 -31
- package/src/helpers/posToDOMRect.ts +34 -0
- package/src/index.ts +35 -5
- package/src/inputRules/markInputRule.ts +57 -38
- package/src/inputRules/nodeInputRule.ts +43 -11
- package/src/inputRules/textInputRule.ts +35 -0
- package/src/inputRules/textblockTypeInputRule.ts +37 -0
- package/src/inputRules/wrappingInputRule.ts +59 -0
- package/src/pasteRules/markPasteRule.ts +61 -53
- package/src/pasteRules/textPasteRule.ts +35 -0
- package/src/style.ts +15 -0
- package/src/types.ts +119 -37
- package/src/utilities/callOrReturn.ts +6 -3
- package/src/utilities/createStyleTag.ts +7 -0
- package/src/utilities/deleteProps.ts +2 -4
- package/src/utilities/elementFromString.ts +3 -4
- package/src/utilities/findDuplicates.ts +5 -0
- package/src/utilities/fromString.ts +1 -1
- package/src/utilities/isClass.ts +2 -2
- package/src/utilities/isEmptyObject.ts +2 -2
- package/src/utilities/isFunction.ts +3 -0
- package/src/utilities/isNumber.ts +3 -0
- package/src/utilities/isObject.ts +5 -5
- package/src/utilities/isPlainObject.ts +5 -5
- package/src/utilities/isRegExp.ts +3 -0
- package/src/utilities/isString.ts +3 -0
- package/src/utilities/isiOS.ts +12 -0
- package/src/utilities/mergeAttributes.ts +2 -3
- package/src/utilities/mergeDeep.ts +1 -2
- package/src/utilities/objectIncludes.ts +17 -5
- package/CHANGELOG.md +0 -294
- package/dist/packages/core/src/commands/insertHTML.d.ts +0 -12
- package/dist/packages/core/src/commands/insertNode.d.ts +0 -13
- package/dist/packages/core/src/commands/insertText.d.ts +0 -12
- package/dist/packages/core/src/commands/replace.d.ts +0 -13
- package/dist/packages/core/src/commands/replaceRange.d.ts +0 -13
- package/dist/packages/core/src/commands/resetNodeAttributes.d.ts +0 -13
- package/dist/packages/core/src/commands/updateNodeAttributes.d.ts +0 -13
- package/dist/packages/core/src/utilities/removeElement.d.ts +0 -1
- package/dist/tiptap-core.bundle.umd.min.js +0 -17
- package/dist/tiptap-core.bundle.umd.min.js.map +0 -1
- package/src/commands/insertHTML.ts +0 -28
- package/src/commands/insertNode.ts +0 -31
- package/src/commands/insertText.ts +0 -20
- package/src/commands/replace.ts +0 -20
- package/src/commands/replaceRange.ts +0 -36
- package/src/commands/resetNodeAttributes.ts +0 -31
- package/src/commands/updateNodeAttributes.ts +0 -33
- package/src/utilities/removeElement.ts +0 -5
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { deleteSelection as originalDeleteSelection } from 'prosemirror-commands'
|
|
2
|
-
import {
|
|
2
|
+
import { RawCommands } from '../types'
|
|
3
3
|
|
|
4
4
|
declare module '@tiptap/core' {
|
|
5
|
-
interface Commands {
|
|
5
|
+
interface Commands<ReturnType> {
|
|
6
6
|
deleteSelection: {
|
|
7
7
|
/**
|
|
8
8
|
* Delete the selection, if there is one.
|
|
9
9
|
*/
|
|
10
|
-
deleteSelection: () =>
|
|
10
|
+
deleteSelection: () => ReturnType,
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
}
|
package/src/commands/enter.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RawCommands } from '../types'
|
|
2
2
|
|
|
3
3
|
declare module '@tiptap/core' {
|
|
4
|
-
interface Commands {
|
|
4
|
+
interface Commands<ReturnType> {
|
|
5
5
|
enter: {
|
|
6
6
|
/**
|
|
7
7
|
* Trigger enter.
|
|
8
8
|
*/
|
|
9
|
-
enter: () =>
|
|
9
|
+
enter: () => ReturnType,
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
}
|
package/src/commands/exitCode.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { exitCode as originalExitCode } from 'prosemirror-commands'
|
|
2
|
-
import {
|
|
2
|
+
import { RawCommands } from '../types'
|
|
3
3
|
|
|
4
4
|
declare module '@tiptap/core' {
|
|
5
|
-
interface Commands {
|
|
5
|
+
interface Commands<ReturnType> {
|
|
6
6
|
exitCode: {
|
|
7
7
|
/**
|
|
8
8
|
* Exit from a code block.
|
|
9
9
|
*/
|
|
10
|
-
exitCode: () =>
|
|
10
|
+
exitCode: () => ReturnType,
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import { TextSelection } from 'prosemirror-state'
|
|
2
2
|
import { MarkType } from 'prosemirror-model'
|
|
3
|
-
import {
|
|
3
|
+
import { RawCommands } from '../types'
|
|
4
4
|
import getMarkType from '../helpers/getMarkType'
|
|
5
5
|
import getMarkRange from '../helpers/getMarkRange'
|
|
6
6
|
|
|
7
7
|
declare module '@tiptap/core' {
|
|
8
|
-
interface Commands {
|
|
8
|
+
interface Commands<ReturnType> {
|
|
9
9
|
extendMarkRange: {
|
|
10
10
|
/**
|
|
11
11
|
* Extends the text selection to the current mark.
|
|
12
12
|
*/
|
|
13
|
-
extendMarkRange: (typeOrName: string | MarkType) =>
|
|
13
|
+
extendMarkRange: (typeOrName: string | MarkType, attributes?: Record<string, any>) => ReturnType,
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
export const extendMarkRange: RawCommands['extendMarkRange'] = typeOrName => ({ tr, state, dispatch }) => {
|
|
18
|
+
export const extendMarkRange: RawCommands['extendMarkRange'] = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {
|
|
19
19
|
const type = getMarkType(typeOrName, state.schema)
|
|
20
20
|
const { doc, selection } = tr
|
|
21
|
-
const { $from,
|
|
21
|
+
const { $from, from, to } = selection
|
|
22
22
|
|
|
23
|
-
if (
|
|
24
|
-
const range = getMarkRange($from, type)
|
|
23
|
+
if (dispatch) {
|
|
24
|
+
const range = getMarkRange($from, type, attributes)
|
|
25
25
|
|
|
26
|
-
if (range) {
|
|
26
|
+
if (range && range.from <= from && range.to >= to) {
|
|
27
27
|
const newSelection = TextSelection.create(doc, range.from, range.to)
|
|
28
28
|
|
|
29
29
|
tr.setSelection(newSelection)
|
package/src/commands/first.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Command, RawCommands } from '../types'
|
|
1
|
+
import { Command, CommandProps, RawCommands } from '../types'
|
|
2
2
|
|
|
3
3
|
declare module '@tiptap/core' {
|
|
4
|
-
interface Commands {
|
|
4
|
+
interface Commands<ReturnType> {
|
|
5
5
|
first: {
|
|
6
6
|
/**
|
|
7
7
|
* Runs one command after the other and stops at the first which returns true.
|
|
8
8
|
*/
|
|
9
|
-
first: (commands: Command[] | ((props:
|
|
9
|
+
first: (commands: Command[] | ((props: CommandProps) => Command[])) => ReturnType,
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
}
|
package/src/commands/focus.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { EditorState, TextSelection } from 'prosemirror-state'
|
|
2
|
-
import {
|
|
1
|
+
import { EditorState, Selection, TextSelection } from 'prosemirror-state'
|
|
2
|
+
import { RawCommands, FocusPosition } from '../types'
|
|
3
3
|
import minMax from '../utilities/minMax'
|
|
4
4
|
import isTextSelection from '../helpers/isTextSelection'
|
|
5
|
+
import isiOS from '../utilities/isiOS'
|
|
5
6
|
|
|
6
7
|
function resolveSelection(state: EditorState, position: FocusPosition = null) {
|
|
7
8
|
if (!position) {
|
|
@@ -15,15 +16,22 @@ function resolveSelection(state: EditorState, position: FocusPosition = null) {
|
|
|
15
16
|
}
|
|
16
17
|
}
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
const { size } = state.doc.content
|
|
19
|
+
const { size } = state.doc.content
|
|
20
20
|
|
|
21
|
+
if (position === 'end') {
|
|
21
22
|
return {
|
|
22
23
|
from: size,
|
|
23
24
|
to: size,
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
27
|
|
|
28
|
+
if (position === 'all') {
|
|
29
|
+
return {
|
|
30
|
+
from: 0,
|
|
31
|
+
to: size,
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
27
35
|
return {
|
|
28
36
|
from: position,
|
|
29
37
|
to: position,
|
|
@@ -31,41 +39,75 @@ function resolveSelection(state: EditorState, position: FocusPosition = null) {
|
|
|
31
39
|
}
|
|
32
40
|
|
|
33
41
|
declare module '@tiptap/core' {
|
|
34
|
-
interface Commands {
|
|
42
|
+
interface Commands<ReturnType> {
|
|
35
43
|
focus: {
|
|
36
44
|
/**
|
|
37
45
|
* Focus the editor at the given position.
|
|
38
46
|
*/
|
|
39
|
-
focus: (
|
|
47
|
+
focus: (
|
|
48
|
+
position?: FocusPosition,
|
|
49
|
+
options?: {
|
|
50
|
+
scrollIntoView?: boolean,
|
|
51
|
+
},
|
|
52
|
+
) => ReturnType,
|
|
40
53
|
}
|
|
41
54
|
}
|
|
42
55
|
}
|
|
43
56
|
|
|
44
|
-
export const focus: RawCommands['focus'] = (position = null) => ({
|
|
57
|
+
export const focus: RawCommands['focus'] = (position = null, options) => ({
|
|
45
58
|
editor,
|
|
46
59
|
view,
|
|
47
60
|
tr,
|
|
48
61
|
dispatch,
|
|
49
62
|
}) => {
|
|
63
|
+
options = {
|
|
64
|
+
scrollIntoView: true,
|
|
65
|
+
...options,
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const delayedFocus = () => {
|
|
69
|
+
// focus within `requestAnimationFrame` breaks focus on iOS
|
|
70
|
+
// so we have to call this
|
|
71
|
+
if (isiOS()) {
|
|
72
|
+
(view.dom as HTMLElement).focus()
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// For React we have to focus asynchronously. Otherwise wild things happen.
|
|
76
|
+
// see: https://github.com/ueberdosis/tiptap/issues/1520
|
|
77
|
+
requestAnimationFrame(() => {
|
|
78
|
+
if (!editor.isDestroyed) {
|
|
79
|
+
view.focus()
|
|
80
|
+
|
|
81
|
+
if (options?.scrollIntoView) {
|
|
82
|
+
editor.commands.scrollIntoView()
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
})
|
|
86
|
+
}
|
|
87
|
+
|
|
50
88
|
if ((view.hasFocus() && position === null) || position === false) {
|
|
51
89
|
return true
|
|
52
90
|
}
|
|
53
91
|
|
|
54
92
|
// we don’t try to resolve a NodeSelection or CellSelection
|
|
55
93
|
if (dispatch && position === null && !isTextSelection(editor.state.selection)) {
|
|
56
|
-
|
|
94
|
+
delayedFocus()
|
|
57
95
|
return true
|
|
58
96
|
}
|
|
59
97
|
|
|
60
98
|
const { from, to } = resolveSelection(editor.state, position) || editor.state.selection
|
|
61
99
|
const { doc, storedMarks } = tr
|
|
62
|
-
const
|
|
63
|
-
const
|
|
100
|
+
const minPos = Selection.atStart(doc).from
|
|
101
|
+
const maxPos = Selection.atEnd(doc).to
|
|
102
|
+
const resolvedFrom = minMax(from, minPos, maxPos)
|
|
103
|
+
const resolvedEnd = minMax(to, minPos, maxPos)
|
|
64
104
|
const selection = TextSelection.create(doc, resolvedFrom, resolvedEnd)
|
|
65
105
|
const isSameSelection = editor.state.selection.eq(selection)
|
|
66
106
|
|
|
67
107
|
if (dispatch) {
|
|
68
|
-
|
|
108
|
+
if (!isSameSelection) {
|
|
109
|
+
tr.setSelection(selection)
|
|
110
|
+
}
|
|
69
111
|
|
|
70
112
|
// `tr.setSelection` resets the stored marks
|
|
71
113
|
// so we’ll restore them if the selection is the same as before
|
|
@@ -73,7 +115,7 @@ export const focus: RawCommands['focus'] = (position = null) => ({
|
|
|
73
115
|
tr.setStoredMarks(storedMarks)
|
|
74
116
|
}
|
|
75
117
|
|
|
76
|
-
|
|
118
|
+
delayedFocus()
|
|
77
119
|
}
|
|
78
120
|
|
|
79
121
|
return true
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { CommandProps, RawCommands } from '../types'
|
|
2
|
+
|
|
3
|
+
declare module '@tiptap/core' {
|
|
4
|
+
interface Commands<ReturnType> {
|
|
5
|
+
forEach: {
|
|
6
|
+
/**
|
|
7
|
+
* Loop through an array of items.
|
|
8
|
+
*/
|
|
9
|
+
forEach: <T>(
|
|
10
|
+
items: T[],
|
|
11
|
+
fn: (
|
|
12
|
+
item: T,
|
|
13
|
+
props: CommandProps & {
|
|
14
|
+
index: number,
|
|
15
|
+
},
|
|
16
|
+
) => boolean,
|
|
17
|
+
) => ReturnType,
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const forEach: RawCommands['forEach'] = (items, fn) => props => {
|
|
23
|
+
return items.every((item, index) => fn(item, { ...props, index }))
|
|
24
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ParseOptions } from 'prosemirror-model'
|
|
2
|
+
import { RawCommands, Content } from '../types'
|
|
3
|
+
|
|
4
|
+
declare module '@tiptap/core' {
|
|
5
|
+
interface Commands<ReturnType> {
|
|
6
|
+
insertContent: {
|
|
7
|
+
/**
|
|
8
|
+
* Insert a node or string of HTML at the current position.
|
|
9
|
+
*/
|
|
10
|
+
insertContent: (
|
|
11
|
+
value: Content,
|
|
12
|
+
options?: {
|
|
13
|
+
parseOptions?: ParseOptions,
|
|
14
|
+
updateSelection?: boolean,
|
|
15
|
+
},
|
|
16
|
+
) => ReturnType,
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const insertContent: RawCommands['insertContent'] = (value, options) => ({ tr, commands }) => {
|
|
22
|
+
return commands.insertContentAt({ from: tr.selection.from, to: tr.selection.to }, value, options)
|
|
23
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Fragment, Node as ProseMirrorNode, ParseOptions } from 'prosemirror-model'
|
|
2
|
+
import createNodeFromContent from '../helpers/createNodeFromContent'
|
|
3
|
+
import selectionToInsertionEnd from '../helpers/selectionToInsertionEnd'
|
|
4
|
+
import {
|
|
5
|
+
RawCommands,
|
|
6
|
+
Content,
|
|
7
|
+
Range,
|
|
8
|
+
} from '../types'
|
|
9
|
+
|
|
10
|
+
declare module '@tiptap/core' {
|
|
11
|
+
interface Commands<ReturnType> {
|
|
12
|
+
insertContentAt: {
|
|
13
|
+
/**
|
|
14
|
+
* Insert a node or string of HTML at a specific position.
|
|
15
|
+
*/
|
|
16
|
+
insertContentAt: (
|
|
17
|
+
position: number | Range,
|
|
18
|
+
value: Content,
|
|
19
|
+
options?: {
|
|
20
|
+
parseOptions?: ParseOptions,
|
|
21
|
+
updateSelection?: boolean,
|
|
22
|
+
},
|
|
23
|
+
) => ReturnType,
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const isFragment = (nodeOrFragment: ProseMirrorNode | Fragment): nodeOrFragment is Fragment => {
|
|
29
|
+
return nodeOrFragment.toString().startsWith('<')
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export const insertContentAt: RawCommands['insertContentAt'] = (position, value, options) => ({ tr, dispatch, editor }) => {
|
|
33
|
+
if (dispatch) {
|
|
34
|
+
options = {
|
|
35
|
+
parseOptions: {},
|
|
36
|
+
updateSelection: true,
|
|
37
|
+
...options,
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const content = createNodeFromContent(value, editor.schema, {
|
|
41
|
+
parseOptions: {
|
|
42
|
+
preserveWhitespace: 'full',
|
|
43
|
+
...options.parseOptions,
|
|
44
|
+
},
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
// don’t dispatch an empty fragment because this can lead to strange errors
|
|
48
|
+
if (content.toString() === '<>') {
|
|
49
|
+
return true
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
let { from, to } = typeof position === 'number'
|
|
53
|
+
? { from: position, to: position }
|
|
54
|
+
: position
|
|
55
|
+
|
|
56
|
+
let isOnlyBlockContent = true
|
|
57
|
+
const nodes = isFragment(content)
|
|
58
|
+
? content
|
|
59
|
+
: [content]
|
|
60
|
+
|
|
61
|
+
nodes.forEach(node => {
|
|
62
|
+
isOnlyBlockContent = isOnlyBlockContent
|
|
63
|
+
? node.isBlock
|
|
64
|
+
: false
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
// check if we can replace the wrapping node by
|
|
68
|
+
// the newly inserted content
|
|
69
|
+
// example:
|
|
70
|
+
// replace an empty paragraph by an inserted image
|
|
71
|
+
// instead of inserting the image below the paragraph
|
|
72
|
+
if (from === to && isOnlyBlockContent) {
|
|
73
|
+
const { parent } = tr.doc.resolve(from)
|
|
74
|
+
const isEmptyTextBlock = parent.isTextblock
|
|
75
|
+
&& !parent.type.spec.code
|
|
76
|
+
&& !parent.childCount
|
|
77
|
+
|
|
78
|
+
if (isEmptyTextBlock) {
|
|
79
|
+
from -= 1
|
|
80
|
+
to += 1
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
tr.replaceWith(from, to, content)
|
|
85
|
+
|
|
86
|
+
// set cursor at end of inserted content
|
|
87
|
+
if (options.updateSelection) {
|
|
88
|
+
selectionToInsertionEnd(tr, tr.steps.length - 1, -1)
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return true
|
|
93
|
+
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { joinBackward as originalJoinBackward } from 'prosemirror-commands'
|
|
2
|
-
import {
|
|
2
|
+
import { RawCommands } from '../types'
|
|
3
3
|
|
|
4
4
|
declare module '@tiptap/core' {
|
|
5
|
-
interface Commands {
|
|
5
|
+
interface Commands<ReturnType> {
|
|
6
6
|
joinBackward: {
|
|
7
7
|
/**
|
|
8
8
|
* Join two nodes backward.
|
|
9
9
|
*/
|
|
10
|
-
joinBackward: () =>
|
|
10
|
+
joinBackward: () => ReturnType,
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { joinForward as originalJoinForward } from 'prosemirror-commands'
|
|
2
|
-
import {
|
|
2
|
+
import { RawCommands } from '../types'
|
|
3
3
|
|
|
4
4
|
declare module '@tiptap/core' {
|
|
5
|
-
interface Commands {
|
|
5
|
+
interface Commands<ReturnType> {
|
|
6
6
|
joinForward: {
|
|
7
7
|
/**
|
|
8
8
|
* Join two nodes forward.
|
|
9
9
|
*/
|
|
10
|
-
joinForward: () =>
|
|
10
|
+
joinForward: () => ReturnType,
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RawCommands } from '../types'
|
|
2
2
|
|
|
3
3
|
const mac = typeof navigator !== 'undefined' ? /Mac/.test(navigator.platform) : false
|
|
4
4
|
|
|
@@ -57,12 +57,12 @@ function normalizeKeyName(name: string) {
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
declare module '@tiptap/core' {
|
|
60
|
-
interface Commands {
|
|
60
|
+
interface Commands<ReturnType> {
|
|
61
61
|
keyboardShortcut: {
|
|
62
62
|
/**
|
|
63
63
|
* Trigger a keyboard shortcut.
|
|
64
64
|
*/
|
|
65
|
-
keyboardShortcut: (name: string) =>
|
|
65
|
+
keyboardShortcut: (name: string) => ReturnType,
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
}
|
package/src/commands/lift.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { lift as originalLift } from 'prosemirror-commands'
|
|
2
2
|
import { NodeType } from 'prosemirror-model'
|
|
3
|
-
import {
|
|
3
|
+
import { RawCommands } from '../types'
|
|
4
4
|
import isNodeActive from '../helpers/isNodeActive'
|
|
5
5
|
import getNodeType from '../helpers/getNodeType'
|
|
6
6
|
|
|
7
7
|
declare module '@tiptap/core' {
|
|
8
|
-
interface Commands {
|
|
8
|
+
interface Commands<ReturnType> {
|
|
9
9
|
lift: {
|
|
10
10
|
/**
|
|
11
11
|
* Removes an existing wrap.
|
|
12
12
|
*/
|
|
13
|
-
lift: (typeOrName: string | NodeType, attributes?:
|
|
13
|
+
lift: (typeOrName: string | NodeType, attributes?: Record<string, any>) => ReturnType,
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { liftEmptyBlock as originalLiftEmptyBlock } from 'prosemirror-commands'
|
|
2
|
-
import {
|
|
2
|
+
import { RawCommands } from '../types'
|
|
3
3
|
|
|
4
4
|
declare module '@tiptap/core' {
|
|
5
|
-
interface Commands {
|
|
5
|
+
interface Commands<ReturnType> {
|
|
6
6
|
liftEmptyBlock: {
|
|
7
7
|
/**
|
|
8
8
|
* Lift block if empty.
|
|
9
9
|
*/
|
|
10
|
-
liftEmptyBlock: () =>
|
|
10
|
+
liftEmptyBlock: () => ReturnType,
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { liftListItem as originalLiftListItem } from 'prosemirror-schema-list'
|
|
2
2
|
import { NodeType } from 'prosemirror-model'
|
|
3
|
-
import {
|
|
3
|
+
import { RawCommands } from '../types'
|
|
4
4
|
import getNodeType from '../helpers/getNodeType'
|
|
5
5
|
|
|
6
6
|
declare module '@tiptap/core' {
|
|
7
|
-
interface Commands {
|
|
7
|
+
interface Commands<ReturnType> {
|
|
8
8
|
liftListItem: {
|
|
9
9
|
/**
|
|
10
10
|
* Lift the list item into a wrapping list.
|
|
11
11
|
*/
|
|
12
|
-
liftListItem: (typeOrName: string | NodeType) =>
|
|
12
|
+
liftListItem: (typeOrName: string | NodeType) => ReturnType,
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { newlineInCode as originalNewlineInCode } from 'prosemirror-commands'
|
|
2
|
-
import {
|
|
2
|
+
import { RawCommands } from '../types'
|
|
3
3
|
|
|
4
4
|
declare module '@tiptap/core' {
|
|
5
|
-
interface Commands {
|
|
5
|
+
interface Commands<ReturnType> {
|
|
6
6
|
newlineInCode: {
|
|
7
7
|
/**
|
|
8
8
|
* Add a newline character in code.
|
|
9
9
|
*/
|
|
10
|
-
newlineInCode: () =>
|
|
10
|
+
newlineInCode: () => ReturnType,
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { NodeType, MarkType } from 'prosemirror-model'
|
|
2
|
+
import getNodeType from '../helpers/getNodeType'
|
|
3
|
+
import getMarkType from '../helpers/getMarkType'
|
|
4
|
+
import getSchemaTypeNameByName from '../helpers/getSchemaTypeNameByName'
|
|
5
|
+
import deleteProps from '../utilities/deleteProps'
|
|
6
|
+
import { RawCommands } from '../types'
|
|
7
|
+
|
|
8
|
+
declare module '@tiptap/core' {
|
|
9
|
+
interface Commands<ReturnType> {
|
|
10
|
+
resetAttributes: {
|
|
11
|
+
/**
|
|
12
|
+
* Resets some node attributes to the default value.
|
|
13
|
+
*/
|
|
14
|
+
resetAttributes: (typeOrName: string | NodeType | MarkType, attributes: string | string[]) => ReturnType,
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export const resetAttributes: RawCommands['resetAttributes'] = (typeOrName, attributes) => ({ tr, state, dispatch }) => {
|
|
20
|
+
let nodeType: NodeType | null = null
|
|
21
|
+
let markType: MarkType | null = null
|
|
22
|
+
|
|
23
|
+
const schemaType = getSchemaTypeNameByName(
|
|
24
|
+
typeof typeOrName === 'string'
|
|
25
|
+
? typeOrName
|
|
26
|
+
: typeOrName.name,
|
|
27
|
+
state.schema,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
if (!schemaType) {
|
|
31
|
+
return false
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (schemaType === 'node') {
|
|
35
|
+
nodeType = getNodeType(typeOrName as NodeType, state.schema)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (schemaType === 'mark') {
|
|
39
|
+
markType = getMarkType(typeOrName as MarkType, state.schema)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (dispatch) {
|
|
43
|
+
tr.selection.ranges.forEach(range => {
|
|
44
|
+
state.doc.nodesBetween(range.$from.pos, range.$to.pos, (node, pos) => {
|
|
45
|
+
if (nodeType && nodeType === node.type) {
|
|
46
|
+
tr.setNodeMarkup(pos, undefined, deleteProps(node.attrs, attributes))
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (markType && node.marks.length) {
|
|
50
|
+
node.marks.forEach(mark => {
|
|
51
|
+
if (markType === mark.type) {
|
|
52
|
+
tr.addMark(pos, pos + node.nodeSize, markType.create(deleteProps(mark.attrs, attributes)))
|
|
53
|
+
}
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
})
|
|
57
|
+
})
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return true
|
|
61
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RawCommands } from '../types'
|
|
2
2
|
|
|
3
3
|
declare module '@tiptap/core' {
|
|
4
|
-
interface Commands {
|
|
4
|
+
interface Commands<ReturnType> {
|
|
5
5
|
scrollIntoView: {
|
|
6
6
|
/**
|
|
7
7
|
* Scroll the selection into view.
|
|
8
8
|
*/
|
|
9
|
-
scrollIntoView: () =>
|
|
9
|
+
scrollIntoView: () => ReturnType,
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Command, RawCommands } from '../types'
|
|
1
|
+
import { RawCommands } from '../types'
|
|
3
2
|
|
|
4
3
|
declare module '@tiptap/core' {
|
|
5
|
-
interface Commands {
|
|
4
|
+
interface Commands<ReturnType> {
|
|
6
5
|
selectAll: {
|
|
7
6
|
/**
|
|
8
7
|
* Select the whole document.
|
|
9
8
|
*/
|
|
10
|
-
selectAll: () =>
|
|
9
|
+
selectAll: () => ReturnType,
|
|
11
10
|
}
|
|
12
11
|
}
|
|
13
12
|
}
|
|
14
13
|
|
|
15
|
-
export const selectAll: RawCommands['selectAll'] = () => ({
|
|
16
|
-
return
|
|
14
|
+
export const selectAll: RawCommands['selectAll'] = () => ({ tr, commands }) => {
|
|
15
|
+
return commands.setTextSelection({
|
|
16
|
+
from: 0,
|
|
17
|
+
to: tr.doc.content.size,
|
|
18
|
+
})
|
|
17
19
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { selectNodeBackward as originalSelectNodeBackward } from 'prosemirror-commands'
|
|
2
|
-
import {
|
|
2
|
+
import { RawCommands } from '../types'
|
|
3
3
|
|
|
4
4
|
declare module '@tiptap/core' {
|
|
5
|
-
interface Commands {
|
|
5
|
+
interface Commands<ReturnType> {
|
|
6
6
|
selectNodeBackward: {
|
|
7
7
|
/**
|
|
8
8
|
* Select a node backward.
|
|
9
9
|
*/
|
|
10
|
-
selectNodeBackward: () =>
|
|
10
|
+
selectNodeBackward: () => ReturnType,
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { selectNodeForward as originalSelectNodeForward } from 'prosemirror-commands'
|
|
2
|
-
import {
|
|
2
|
+
import { RawCommands } from '../types'
|
|
3
3
|
|
|
4
4
|
declare module '@tiptap/core' {
|
|
5
|
-
interface Commands {
|
|
5
|
+
interface Commands<ReturnType> {
|
|
6
6
|
selectNodeForward: {
|
|
7
7
|
/**
|
|
8
8
|
* Select a node forward.
|
|
9
9
|
*/
|
|
10
|
-
selectNodeForward: () =>
|
|
10
|
+
selectNodeForward: () => ReturnType,
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { selectParentNode as originalSelectParentNode } from 'prosemirror-commands'
|
|
2
|
-
import {
|
|
2
|
+
import { RawCommands } from '../types'
|
|
3
3
|
|
|
4
4
|
declare module '@tiptap/core' {
|
|
5
|
-
interface Commands {
|
|
5
|
+
interface Commands<ReturnType> {
|
|
6
6
|
selectParentNode: {
|
|
7
7
|
/**
|
|
8
8
|
* Select the parent node.
|
|
9
9
|
*/
|
|
10
|
-
selectParentNode: () =>
|
|
10
|
+
selectParentNode: () => ReturnType,
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
}
|