@tiptap/core 2.0.0-beta.21 → 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.
- package/README.md +2 -2
- package/dist/index.cjs +4311 -0
- package/dist/index.d.ts +2330 -0
- package/dist/index.js +4311 -0
- package/package.json +39 -25
- package/src/CommandManager.ts +76 -86
- package/src/Editor.ts +120 -81
- package/src/EventEmitter.ts +14 -4
- package/src/Extension.ts +280 -108
- package/src/ExtensionManager.ts +254 -108
- package/src/InputRule.ts +260 -0
- package/src/Mark.ts +398 -147
- package/src/Node.ts +437 -171
- package/src/NodeView.ts +132 -63
- package/src/PasteRule.ts +240 -0
- package/src/Tracker.ts +38 -0
- package/src/commands/blur.ts +12 -6
- package/src/commands/clearContent.ts +3 -3
- package/src/commands/clearNodes.ts +31 -19
- package/src/commands/command.ts +2 -2
- package/src/commands/createParagraphNear.ts +5 -4
- package/src/commands/deleteCurrentNode.ts +41 -0
- package/src/commands/deleteNode.ts +37 -0
- package/src/commands/deleteRange.ts +3 -3
- package/src/commands/deleteSelection.ts +5 -4
- package/src/commands/enter.ts +3 -3
- package/src/commands/exitCode.ts +5 -4
- package/src/commands/extendMarkRange.ts +16 -12
- package/src/commands/first.ts +3 -3
- package/src/commands/focus.ts +47 -44
- package/src/commands/forEach.ts +24 -0
- package/src/commands/index.ts +50 -0
- package/src/commands/insertContent.ts +17 -24
- package/src/commands/insertContentAt.ts +94 -0
- package/src/commands/join.ts +53 -0
- package/src/commands/keyboardShortcut.ts +6 -6
- package/src/commands/lift.ts +8 -7
- package/src/commands/liftEmptyBlock.ts +5 -4
- package/src/commands/liftListItem.ts +7 -6
- package/src/commands/newlineInCode.ts +5 -4
- package/src/commands/resetAttributes.ts +18 -12
- package/src/commands/scrollIntoView.ts +3 -3
- package/src/commands/selectAll.ts +8 -6
- package/src/commands/selectNodeBackward.ts +5 -4
- package/src/commands/selectNodeForward.ts +5 -4
- package/src/commands/selectParentNode.ts +5 -4
- package/src/commands/selectTextblockEnd.ts +20 -0
- package/src/commands/selectTextblockStart.ts +20 -0
- package/src/commands/setContent.ts +9 -16
- package/src/commands/setMark.ts +90 -14
- package/src/commands/setMeta.ts +18 -0
- package/src/commands/setNode.ts +32 -8
- package/src/commands/setNodeSelection.ts +27 -0
- package/src/commands/setTextSelection.ts +31 -0
- package/src/commands/sinkListItem.ts +7 -6
- package/src/commands/splitBlock.ts +31 -41
- package/src/commands/splitListItem.ts +46 -29
- package/src/commands/toggleList.ts +88 -20
- package/src/commands/toggleMark.ts +19 -8
- package/src/commands/toggleNode.ts +11 -6
- package/src/commands/toggleWrap.ts +10 -10
- package/src/commands/undoInputRule.ts +34 -5
- package/src/commands/unsetAllMarks.ts +7 -11
- package/src/commands/unsetMark.ts +36 -23
- package/src/commands/updateAttributes.ts +27 -15
- package/src/commands/wrapIn.ts +7 -12
- package/src/commands/wrapInList.ts +7 -6
- package/src/extensions/clipboardTextSerializer.ts +15 -36
- package/src/extensions/commands.ts +3 -147
- package/src/extensions/editable.ts +2 -1
- package/src/extensions/focusEvents.ts +4 -6
- package/src/extensions/index.ts +1 -0
- package/src/extensions/keymap.ts +106 -13
- package/src/extensions/tabindex.ts +18 -0
- package/src/helpers/combineTransactionSteps.ts +21 -0
- package/src/helpers/createChainableState.ts +38 -0
- package/src/helpers/createDocument.ts +5 -6
- package/src/helpers/createNodeFromContent.ts +20 -28
- package/src/helpers/defaultBlockAt.ts +13 -0
- package/src/helpers/findChildren.ts +18 -0
- package/src/helpers/findChildrenInRange.ts +36 -0
- package/src/helpers/findParentNode.ts +4 -3
- package/src/helpers/findParentNodeClosestToPos.ts +13 -7
- package/src/helpers/generateHTML.ts +7 -6
- package/src/helpers/generateJSON.ts +12 -0
- package/src/helpers/generateText.ts +27 -0
- package/src/helpers/getAttributes.ts +26 -0
- package/src/helpers/getAttributesFromExtensions.ts +42 -14
- package/src/helpers/getChangedRanges.ts +83 -0
- package/src/helpers/getDebugJSON.ts +54 -0
- package/src/helpers/getExtensionField.ts +25 -0
- package/src/helpers/getHTMLFromFragment.ts +5 -6
- package/src/helpers/getMarkAttributes.ts +18 -11
- package/src/helpers/getMarkRange.ts +41 -8
- package/src/helpers/getMarkType.ts +8 -2
- package/src/helpers/getMarksBetween.ts +34 -10
- package/src/helpers/getNodeAttributes.ts +14 -13
- package/src/helpers/getNodeType.ts +8 -2
- package/src/helpers/getRenderedAttributes.ts +9 -7
- package/src/helpers/getSchema.ts +7 -133
- package/src/helpers/getSchemaByResolvedExtensions.ts +192 -0
- package/src/helpers/getSchemaTypeByName.ts +3 -11
- package/src/helpers/getSchemaTypeNameByName.ts +2 -2
- package/src/helpers/getSplittedAttributes.ts +4 -4
- package/src/helpers/getText.ts +19 -0
- package/src/helpers/getTextBetween.ts +46 -0
- package/src/helpers/getTextContentFromNodes.ts +26 -0
- package/src/helpers/getTextSerializersFromSchema.ts +11 -0
- package/src/helpers/index.ts +33 -0
- package/src/helpers/injectExtensionAttributesToParseRule.ts +22 -23
- package/src/helpers/isActive.ts +10 -6
- package/src/helpers/isExtensionRulesEnabled.ts +15 -0
- package/src/helpers/isList.ts +14 -7
- package/src/helpers/isMarkActive.ts +49 -27
- package/src/helpers/isNodeActive.ts +29 -39
- package/src/helpers/isNodeEmpty.ts +2 -2
- package/src/helpers/isNodeSelection.ts +3 -4
- package/src/helpers/isTextSelection.ts +3 -4
- package/src/helpers/posToDOMRect.ts +35 -0
- package/src/helpers/resolveFocusPosition.ts +42 -0
- package/src/helpers/selectionToInsertionEnd.ts +3 -3
- package/src/helpers/splitExtensions.ts +3 -3
- package/src/index.ts +15 -24
- package/src/inputRules/index.ts +5 -0
- package/src/inputRules/markInputRule.ts +59 -40
- package/src/inputRules/nodeInputRule.ts +45 -12
- package/src/inputRules/textInputRule.ts +35 -0
- package/src/inputRules/textblockTypeInputRule.ts +37 -0
- package/src/inputRules/wrappingInputRule.ts +59 -0
- package/src/pasteRules/index.ts +3 -0
- package/src/pasteRules/markPasteRule.ts +61 -53
- package/src/pasteRules/nodePasteRule.ts +37 -0
- package/src/pasteRules/textPasteRule.ts +35 -0
- package/src/style.ts +16 -3
- package/src/types.ts +170 -97
- package/src/utilities/callOrReturn.ts +6 -3
- package/src/utilities/createStyleTag.ts +12 -1
- package/src/utilities/deleteProps.ts +2 -4
- package/src/utilities/elementFromString.ts +4 -5
- package/src/utilities/escapeForRegEx.ts +4 -0
- package/src/utilities/findDuplicates.ts +5 -0
- package/src/utilities/fromString.ts +2 -2
- package/src/utilities/index.ts +20 -0
- package/src/utilities/isEmptyObject.ts +2 -2
- package/src/utilities/isFunction.ts +3 -0
- package/src/utilities/isMacOS.ts +5 -0
- package/src/utilities/isNumber.ts +3 -0
- package/src/utilities/isPlainObject.ts +8 -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 +2 -3
- package/src/utilities/minMax.ts +1 -1
- package/src/utilities/objectIncludes.ts +17 -5
- package/src/utilities/removeDuplicates.ts +15 -0
- package/CHANGELOG.md +0 -365
- package/LICENSE.md +0 -21
- package/dist/packages/core/src/CommandManager.d.ts +0 -13
- package/dist/packages/core/src/Editor.d.ts +0 -142
- package/dist/packages/core/src/EventEmitter.d.ts +0 -7
- package/dist/packages/core/src/Extension.d.ts +0 -148
- package/dist/packages/core/src/ExtensionManager.d.ts +0 -24
- package/dist/packages/core/src/Mark.d.ts +0 -211
- package/dist/packages/core/src/Node.d.ts +0 -265
- package/dist/packages/core/src/NodeView.d.ts +0 -31
- package/dist/packages/core/src/commands/blur.d.ts +0 -12
- package/dist/packages/core/src/commands/clearContent.d.ts +0 -12
- package/dist/packages/core/src/commands/clearNodes.d.ts +0 -12
- package/dist/packages/core/src/commands/command.d.ts +0 -12
- package/dist/packages/core/src/commands/createParagraphNear.d.ts +0 -12
- package/dist/packages/core/src/commands/deleteRange.d.ts +0 -12
- package/dist/packages/core/src/commands/deleteSelection.d.ts +0 -12
- package/dist/packages/core/src/commands/enter.d.ts +0 -12
- package/dist/packages/core/src/commands/exitCode.d.ts +0 -12
- package/dist/packages/core/src/commands/extendMarkRange.d.ts +0 -13
- package/dist/packages/core/src/commands/first.d.ts +0 -12
- package/dist/packages/core/src/commands/focus.d.ts +0 -12
- package/dist/packages/core/src/commands/insertContent.d.ts +0 -12
- 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/joinBackward.d.ts +0 -12
- package/dist/packages/core/src/commands/joinForward.d.ts +0 -12
- package/dist/packages/core/src/commands/keyboardShortcut.d.ts +0 -12
- package/dist/packages/core/src/commands/lift.d.ts +0 -13
- package/dist/packages/core/src/commands/liftEmptyBlock.d.ts +0 -12
- package/dist/packages/core/src/commands/liftListItem.d.ts +0 -13
- package/dist/packages/core/src/commands/newlineInCode.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/resetAttributes.d.ts +0 -13
- package/dist/packages/core/src/commands/resetNodeAttributes.d.ts +0 -13
- package/dist/packages/core/src/commands/scrollIntoView.d.ts +0 -12
- package/dist/packages/core/src/commands/selectAll.d.ts +0 -12
- package/dist/packages/core/src/commands/selectNodeBackward.d.ts +0 -12
- package/dist/packages/core/src/commands/selectNodeForward.d.ts +0 -12
- package/dist/packages/core/src/commands/selectParentNode.d.ts +0 -12
- package/dist/packages/core/src/commands/setContent.d.ts +0 -12
- package/dist/packages/core/src/commands/setMark.d.ts +0 -13
- package/dist/packages/core/src/commands/setNode.d.ts +0 -13
- package/dist/packages/core/src/commands/sinkListItem.d.ts +0 -13
- package/dist/packages/core/src/commands/splitBlock.d.ts +0 -14
- package/dist/packages/core/src/commands/splitListItem.d.ts +0 -13
- package/dist/packages/core/src/commands/toggleList.d.ts +0 -13
- package/dist/packages/core/src/commands/toggleMark.d.ts +0 -13
- package/dist/packages/core/src/commands/toggleNode.d.ts +0 -13
- package/dist/packages/core/src/commands/toggleWrap.d.ts +0 -13
- package/dist/packages/core/src/commands/undoInputRule.d.ts +0 -12
- package/dist/packages/core/src/commands/unsetAllMarks.d.ts +0 -12
- package/dist/packages/core/src/commands/unsetMark.d.ts +0 -13
- package/dist/packages/core/src/commands/updateAttributes.d.ts +0 -13
- package/dist/packages/core/src/commands/updateNodeAttributes.d.ts +0 -13
- package/dist/packages/core/src/commands/wrapIn.d.ts +0 -13
- package/dist/packages/core/src/commands/wrapInList.d.ts +0 -13
- package/dist/packages/core/src/extensions/clipboardTextSerializer.d.ts +0 -2
- package/dist/packages/core/src/extensions/commands.d.ts +0 -100
- package/dist/packages/core/src/extensions/editable.d.ts +0 -2
- package/dist/packages/core/src/extensions/focusEvents.d.ts +0 -2
- package/dist/packages/core/src/extensions/index.d.ts +0 -5
- package/dist/packages/core/src/extensions/keymap.d.ts +0 -2
- package/dist/packages/core/src/helpers/createDocument.d.ts +0 -4
- package/dist/packages/core/src/helpers/createNodeFromContent.d.ts +0 -8
- package/dist/packages/core/src/helpers/findParentNode.d.ts +0 -9
- package/dist/packages/core/src/helpers/findParentNodeClosestToPos.d.ts +0 -8
- package/dist/packages/core/src/helpers/generateHTML.d.ts +0 -2
- package/dist/packages/core/src/helpers/getAttributesFromExtensions.d.ts +0 -6
- package/dist/packages/core/src/helpers/getHTMLFromFragment.d.ts +0 -2
- package/dist/packages/core/src/helpers/getMarkAttributes.d.ts +0 -4
- package/dist/packages/core/src/helpers/getMarkRange.d.ts +0 -3
- package/dist/packages/core/src/helpers/getMarkType.d.ts +0 -2
- package/dist/packages/core/src/helpers/getMarksBetween.d.ts +0 -3
- package/dist/packages/core/src/helpers/getNodeAttributes.d.ts +0 -4
- package/dist/packages/core/src/helpers/getNodeType.d.ts +0 -2
- package/dist/packages/core/src/helpers/getRenderedAttributes.d.ts +0 -3
- package/dist/packages/core/src/helpers/getSchema.d.ts +0 -3
- package/dist/packages/core/src/helpers/getSchemaTypeByName.d.ts +0 -2
- package/dist/packages/core/src/helpers/getSchemaTypeNameByName.d.ts +0 -2
- package/dist/packages/core/src/helpers/getSplittedAttributes.d.ts +0 -2
- package/dist/packages/core/src/helpers/injectExtensionAttributesToParseRule.d.ts +0 -9
- package/dist/packages/core/src/helpers/isActive.d.ts +0 -3
- package/dist/packages/core/src/helpers/isList.d.ts +0 -2
- package/dist/packages/core/src/helpers/isMarkActive.d.ts +0 -4
- package/dist/packages/core/src/helpers/isNodeActive.d.ts +0 -4
- package/dist/packages/core/src/helpers/isNodeEmpty.d.ts +0 -2
- package/dist/packages/core/src/helpers/isNodeSelection.d.ts +0 -2
- package/dist/packages/core/src/helpers/isTextSelection.d.ts +0 -2
- package/dist/packages/core/src/helpers/selectionToInsertionEnd.d.ts +0 -2
- package/dist/packages/core/src/helpers/splitExtensions.d.ts +0 -9
- package/dist/packages/core/src/index.d.ts +0 -30
- package/dist/packages/core/src/inputRules/markInputRule.d.ts +0 -3
- package/dist/packages/core/src/inputRules/nodeInputRule.d.ts +0 -3
- package/dist/packages/core/src/pasteRules/markPasteRule.d.ts +0 -3
- package/dist/packages/core/src/style.d.ts +0 -2
- package/dist/packages/core/src/types.d.ts +0 -154
- package/dist/packages/core/src/utilities/callOrReturn.d.ts +0 -8
- package/dist/packages/core/src/utilities/createStyleTag.d.ts +0 -1
- package/dist/packages/core/src/utilities/deleteProps.d.ts +0 -7
- package/dist/packages/core/src/utilities/elementFromString.d.ts +0 -1
- package/dist/packages/core/src/utilities/fromString.d.ts +0 -1
- package/dist/packages/core/src/utilities/isClass.d.ts +0 -1
- package/dist/packages/core/src/utilities/isEmptyObject.d.ts +0 -1
- package/dist/packages/core/src/utilities/isObject.d.ts +0 -1
- package/dist/packages/core/src/utilities/isPlainObject.d.ts +0 -1
- package/dist/packages/core/src/utilities/mergeAttributes.d.ts +0 -2
- package/dist/packages/core/src/utilities/mergeDeep.d.ts +0 -2
- package/dist/packages/core/src/utilities/minMax.d.ts +0 -1
- package/dist/packages/core/src/utilities/objectIncludes.d.ts +0 -7
- 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/dist/tiptap-core.cjs.js +0 -3027
- package/dist/tiptap-core.cjs.js.map +0 -1
- package/dist/tiptap-core.esm.js +0 -3002
- package/dist/tiptap-core.esm.js.map +0 -1
- package/dist/tiptap-core.umd.js +0 -3024
- package/dist/tiptap-core.umd.js.map +0 -1
- package/src/commands/insertHTML.ts +0 -30
- package/src/commands/insertNode.ts +0 -33
- package/src/commands/insertText.ts +0 -22
- package/src/commands/joinBackward.ts +0 -17
- package/src/commands/joinForward.ts +0 -17
- package/src/commands/replace.ts +0 -20
- package/src/commands/replaceRange.ts +0 -36
- package/src/commands/resetNodeAttributes.ts +0 -33
- package/src/commands/updateNodeAttributes.ts +0 -35
- package/src/utilities/isClass.ts +0 -7
- package/src/utilities/isObject.ts +0 -10
- package/src/utilities/removeElement.ts +0 -5
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { RawCommands } from '../types'
|
|
2
|
+
import { isiOS } from '../utilities/isiOS'
|
|
3
|
+
import { isMacOS } from '../utilities/isMacOS'
|
|
4
4
|
|
|
5
5
|
function normalizeKeyName(name: string) {
|
|
6
6
|
const parts = name.split(/-(?!$)/)
|
|
@@ -27,7 +27,7 @@ function normalizeKeyName(name: string) {
|
|
|
27
27
|
} else if (/^s(hift)?$/i.test(mod)) {
|
|
28
28
|
shift = true
|
|
29
29
|
} else if (/^mod$/i.test(mod)) {
|
|
30
|
-
if (
|
|
30
|
+
if (isiOS() || isMacOS()) {
|
|
31
31
|
meta = true
|
|
32
32
|
} else {
|
|
33
33
|
ctrl = true
|
|
@@ -57,12 +57,12 @@ function normalizeKeyName(name: string) {
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
declare module '@tiptap/core' {
|
|
60
|
-
interface Commands {
|
|
60
|
+
interface Commands<ReturnType> {
|
|
61
61
|
keyboardShortcut: {
|
|
62
62
|
/**
|
|
63
63
|
* Trigger a keyboard shortcut.
|
|
64
64
|
*/
|
|
65
|
-
keyboardShortcut: (name: string) =>
|
|
65
|
+
keyboardShortcut: (name: string) => ReturnType,
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
}
|
package/src/commands/lift.ts
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { lift as originalLift } from '
|
|
2
|
-
import { NodeType } from '
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
import
|
|
1
|
+
import { lift as originalLift } from '@tiptap/pm/commands'
|
|
2
|
+
import { NodeType } from '@tiptap/pm/model'
|
|
3
|
+
|
|
4
|
+
import { getNodeType } from '../helpers/getNodeType'
|
|
5
|
+
import { isNodeActive } from '../helpers/isNodeActive'
|
|
6
|
+
import { RawCommands } from '../types'
|
|
6
7
|
|
|
7
8
|
declare module '@tiptap/core' {
|
|
8
|
-
interface Commands {
|
|
9
|
+
interface Commands<ReturnType> {
|
|
9
10
|
lift: {
|
|
10
11
|
/**
|
|
11
12
|
* Removes an existing wrap.
|
|
12
13
|
*/
|
|
13
|
-
lift: (typeOrName: string | NodeType, attributes?:
|
|
14
|
+
lift: (typeOrName: string | NodeType, attributes?: Record<string, any>) => ReturnType
|
|
14
15
|
}
|
|
15
16
|
}
|
|
16
17
|
}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { liftEmptyBlock as originalLiftEmptyBlock } from '
|
|
2
|
-
|
|
1
|
+
import { liftEmptyBlock as originalLiftEmptyBlock } from '@tiptap/pm/commands'
|
|
2
|
+
|
|
3
|
+
import { RawCommands } from '../types'
|
|
3
4
|
|
|
4
5
|
declare module '@tiptap/core' {
|
|
5
|
-
interface Commands {
|
|
6
|
+
interface Commands<ReturnType> {
|
|
6
7
|
liftEmptyBlock: {
|
|
7
8
|
/**
|
|
8
9
|
* Lift block if empty.
|
|
9
10
|
*/
|
|
10
|
-
liftEmptyBlock: () =>
|
|
11
|
+
liftEmptyBlock: () => ReturnType,
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
14
|
}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import getNodeType from '../helpers/getNodeType'
|
|
1
|
+
import { NodeType } from '@tiptap/pm/model'
|
|
2
|
+
import { liftListItem as originalLiftListItem } from '@tiptap/pm/schema-list'
|
|
3
|
+
|
|
4
|
+
import { getNodeType } from '../helpers/getNodeType'
|
|
5
|
+
import { RawCommands } from '../types'
|
|
5
6
|
|
|
6
7
|
declare module '@tiptap/core' {
|
|
7
|
-
interface Commands {
|
|
8
|
+
interface Commands<ReturnType> {
|
|
8
9
|
liftListItem: {
|
|
9
10
|
/**
|
|
10
11
|
* Lift the list item into a wrapping list.
|
|
11
12
|
*/
|
|
12
|
-
liftListItem: (typeOrName: string | NodeType) =>
|
|
13
|
+
liftListItem: (typeOrName: string | NodeType) => ReturnType
|
|
13
14
|
}
|
|
14
15
|
}
|
|
15
16
|
}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { newlineInCode as originalNewlineInCode } from '
|
|
2
|
-
|
|
1
|
+
import { newlineInCode as originalNewlineInCode } from '@tiptap/pm/commands'
|
|
2
|
+
|
|
3
|
+
import { RawCommands } from '../types'
|
|
3
4
|
|
|
4
5
|
declare module '@tiptap/core' {
|
|
5
|
-
interface Commands {
|
|
6
|
+
interface Commands<ReturnType> {
|
|
6
7
|
newlineInCode: {
|
|
7
8
|
/**
|
|
8
9
|
* Add a newline character in code.
|
|
9
10
|
*/
|
|
10
|
-
newlineInCode: () =>
|
|
11
|
+
newlineInCode: () => ReturnType
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
14
|
}
|
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import getMarkType from '../helpers/getMarkType'
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
1
|
+
import { MarkType, NodeType } from '@tiptap/pm/model'
|
|
2
|
+
|
|
3
|
+
import { getMarkType } from '../helpers/getMarkType'
|
|
4
|
+
import { getNodeType } from '../helpers/getNodeType'
|
|
5
|
+
import { getSchemaTypeNameByName } from '../helpers/getSchemaTypeNameByName'
|
|
6
|
+
import { RawCommands } from '../types'
|
|
7
|
+
import { deleteProps } from '../utilities/deleteProps'
|
|
7
8
|
|
|
8
9
|
declare module '@tiptap/core' {
|
|
9
|
-
interface Commands {
|
|
10
|
+
interface Commands<ReturnType> {
|
|
10
11
|
resetAttributes: {
|
|
11
12
|
/**
|
|
12
13
|
* Resets some node attributes to the default value.
|
|
13
14
|
*/
|
|
14
|
-
resetAttributes: (
|
|
15
|
+
resetAttributes: (
|
|
16
|
+
typeOrName: string | NodeType | MarkType,
|
|
17
|
+
attributes: string | string[],
|
|
18
|
+
) => ReturnType
|
|
15
19
|
}
|
|
16
20
|
}
|
|
17
21
|
}
|
|
@@ -21,9 +25,7 @@ export const resetAttributes: RawCommands['resetAttributes'] = (typeOrName, attr
|
|
|
21
25
|
let markType: MarkType | null = null
|
|
22
26
|
|
|
23
27
|
const schemaType = getSchemaTypeNameByName(
|
|
24
|
-
typeof typeOrName === 'string'
|
|
25
|
-
? typeOrName
|
|
26
|
-
: typeOrName.name,
|
|
28
|
+
typeof typeOrName === 'string' ? typeOrName : typeOrName.name,
|
|
27
29
|
state.schema,
|
|
28
30
|
)
|
|
29
31
|
|
|
@@ -49,7 +51,11 @@ export const resetAttributes: RawCommands['resetAttributes'] = (typeOrName, attr
|
|
|
49
51
|
if (markType && node.marks.length) {
|
|
50
52
|
node.marks.forEach(mark => {
|
|
51
53
|
if (markType === mark.type) {
|
|
52
|
-
tr.addMark(
|
|
54
|
+
tr.addMark(
|
|
55
|
+
pos,
|
|
56
|
+
pos + node.nodeSize,
|
|
57
|
+
markType.create(deleteProps(mark.attrs, attributes)),
|
|
58
|
+
)
|
|
53
59
|
}
|
|
54
60
|
})
|
|
55
61
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
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,14 @@
|
|
|
1
|
-
import { selectNodeBackward as originalSelectNodeBackward } from '
|
|
2
|
-
|
|
1
|
+
import { selectNodeBackward as originalSelectNodeBackward } from '@tiptap/pm/commands'
|
|
2
|
+
|
|
3
|
+
import { RawCommands } from '../types'
|
|
3
4
|
|
|
4
5
|
declare module '@tiptap/core' {
|
|
5
|
-
interface Commands {
|
|
6
|
+
interface Commands<ReturnType> {
|
|
6
7
|
selectNodeBackward: {
|
|
7
8
|
/**
|
|
8
9
|
* Select a node backward.
|
|
9
10
|
*/
|
|
10
|
-
selectNodeBackward: () =>
|
|
11
|
+
selectNodeBackward: () => ReturnType
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
14
|
}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { selectNodeForward as originalSelectNodeForward } from '
|
|
2
|
-
|
|
1
|
+
import { selectNodeForward as originalSelectNodeForward } from '@tiptap/pm/commands'
|
|
2
|
+
|
|
3
|
+
import { RawCommands } from '../types'
|
|
3
4
|
|
|
4
5
|
declare module '@tiptap/core' {
|
|
5
|
-
interface Commands {
|
|
6
|
+
interface Commands<ReturnType> {
|
|
6
7
|
selectNodeForward: {
|
|
7
8
|
/**
|
|
8
9
|
* Select a node forward.
|
|
9
10
|
*/
|
|
10
|
-
selectNodeForward: () =>
|
|
11
|
+
selectNodeForward: () => ReturnType
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
14
|
}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { selectParentNode as originalSelectParentNode } from '
|
|
2
|
-
|
|
1
|
+
import { selectParentNode as originalSelectParentNode } from '@tiptap/pm/commands'
|
|
2
|
+
|
|
3
|
+
import { RawCommands } from '../types'
|
|
3
4
|
|
|
4
5
|
declare module '@tiptap/core' {
|
|
5
|
-
interface Commands {
|
|
6
|
+
interface Commands<ReturnType> {
|
|
6
7
|
selectParentNode: {
|
|
7
8
|
/**
|
|
8
9
|
* Select the parent node.
|
|
9
10
|
*/
|
|
10
|
-
selectParentNode: () =>
|
|
11
|
+
selectParentNode: () => ReturnType
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
14
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
// TODO: add types to @types/prosemirror-commands
|
|
3
|
+
import { selectTextblockEnd as originalSelectTextblockEnd } from '@tiptap/pm/commands'
|
|
4
|
+
|
|
5
|
+
import { RawCommands } from '../types'
|
|
6
|
+
|
|
7
|
+
declare module '@tiptap/core' {
|
|
8
|
+
interface Commands<ReturnType> {
|
|
9
|
+
selectTextblockEnd: {
|
|
10
|
+
/**
|
|
11
|
+
* Moves the cursor to the end of current text block.
|
|
12
|
+
*/
|
|
13
|
+
selectTextblockEnd: () => ReturnType
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const selectTextblockEnd: RawCommands['selectTextblockEnd'] = () => ({ state, dispatch }) => {
|
|
19
|
+
return originalSelectTextblockEnd(state, dispatch)
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
// TODO: add types to @types/prosemirror-commands
|
|
3
|
+
import { selectTextblockStart as originalSelectTextblockStart } from '@tiptap/pm/commands'
|
|
4
|
+
|
|
5
|
+
import { RawCommands } from '../types'
|
|
6
|
+
|
|
7
|
+
declare module '@tiptap/core' {
|
|
8
|
+
interface Commands<ReturnType> {
|
|
9
|
+
selectTextblockStart: {
|
|
10
|
+
/**
|
|
11
|
+
* Moves the cursor to the start of current text block.
|
|
12
|
+
*/
|
|
13
|
+
selectTextblockStart: () => ReturnType
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const selectTextblockStart: RawCommands['selectTextblockStart'] = () => ({ state, dispatch }) => {
|
|
19
|
+
return originalSelectTextblockStart(state, dispatch)
|
|
20
|
+
}
|
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
Command,
|
|
6
|
-
RawCommands,
|
|
7
|
-
Content,
|
|
8
|
-
} from '../types'
|
|
1
|
+
import { ParseOptions } from '@tiptap/pm/model'
|
|
2
|
+
|
|
3
|
+
import { createDocument } from '../helpers/createDocument'
|
|
4
|
+
import { Content, RawCommands } from '../types'
|
|
9
5
|
|
|
10
6
|
declare module '@tiptap/core' {
|
|
11
|
-
interface Commands {
|
|
7
|
+
interface Commands<ReturnType> {
|
|
12
8
|
setContent: {
|
|
13
9
|
/**
|
|
14
10
|
* Replace the whole document with new content.
|
|
15
11
|
*/
|
|
16
12
|
setContent: (
|
|
17
13
|
content: Content,
|
|
18
|
-
emitUpdate?:
|
|
19
|
-
parseOptions?:
|
|
20
|
-
) =>
|
|
14
|
+
emitUpdate?: boolean,
|
|
15
|
+
parseOptions?: ParseOptions,
|
|
16
|
+
) => ReturnType
|
|
21
17
|
}
|
|
22
18
|
}
|
|
23
19
|
}
|
|
@@ -25,12 +21,9 @@ declare module '@tiptap/core' {
|
|
|
25
21
|
export const setContent: RawCommands['setContent'] = (content, emitUpdate = false, parseOptions = {}) => ({ tr, editor, dispatch }) => {
|
|
26
22
|
const { doc } = tr
|
|
27
23
|
const document = createDocument(content, editor.schema, parseOptions)
|
|
28
|
-
const selection = TextSelection.create(doc, 0, doc.content.size)
|
|
29
24
|
|
|
30
25
|
if (dispatch) {
|
|
31
|
-
tr.
|
|
32
|
-
.replaceSelectionWith(document, false)
|
|
33
|
-
.setMeta('preventUpdate', !emitUpdate)
|
|
26
|
+
tr.replaceWith(0, doc.content.size, document).setMeta('preventUpdate', !emitUpdate)
|
|
34
27
|
}
|
|
35
28
|
|
|
36
29
|
return true
|
package/src/commands/setMark.ts
CHANGED
|
@@ -1,38 +1,114 @@
|
|
|
1
|
-
import { MarkType } from '
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import
|
|
1
|
+
import { MarkType, ResolvedPos } from '@tiptap/pm/model'
|
|
2
|
+
import { EditorState, Transaction } from '@tiptap/pm/state'
|
|
3
|
+
|
|
4
|
+
import { isTextSelection } from '../helpers'
|
|
5
|
+
import { getMarkAttributes } from '../helpers/getMarkAttributes'
|
|
6
|
+
import { getMarkType } from '../helpers/getMarkType'
|
|
7
|
+
import { RawCommands } from '../types'
|
|
5
8
|
|
|
6
9
|
declare module '@tiptap/core' {
|
|
7
|
-
interface Commands {
|
|
10
|
+
interface Commands<ReturnType> {
|
|
8
11
|
setMark: {
|
|
9
12
|
/**
|
|
10
13
|
* Add a mark with new attributes.
|
|
11
14
|
*/
|
|
12
|
-
setMark: (typeOrName: string | MarkType, attributes?:
|
|
15
|
+
setMark: (typeOrName: string | MarkType, attributes?: Record<string, any>) => ReturnType
|
|
13
16
|
}
|
|
14
17
|
}
|
|
15
18
|
}
|
|
16
19
|
|
|
20
|
+
function canSetMark(state: EditorState, tr: Transaction, newMarkType: MarkType) {
|
|
21
|
+
const { selection } = tr
|
|
22
|
+
let cursor: ResolvedPos | null = null
|
|
23
|
+
|
|
24
|
+
if (isTextSelection(selection)) {
|
|
25
|
+
cursor = selection.$cursor
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (cursor) {
|
|
29
|
+
const currentMarks = state.storedMarks ?? cursor.marks()
|
|
30
|
+
|
|
31
|
+
// There can be no current marks that exclude the new mark
|
|
32
|
+
return (
|
|
33
|
+
!!newMarkType.isInSet(currentMarks)
|
|
34
|
+
|| !currentMarks.some(mark => mark.type.excludes(newMarkType))
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const { ranges } = selection
|
|
39
|
+
|
|
40
|
+
return ranges.some(({ $from, $to }) => {
|
|
41
|
+
let someNodeSupportsMark = $from.depth === 0
|
|
42
|
+
? state.doc.inlineContent && state.doc.type.allowsMarkType(newMarkType)
|
|
43
|
+
: false
|
|
44
|
+
|
|
45
|
+
state.doc.nodesBetween($from.pos, $to.pos, (node, _pos, parent) => {
|
|
46
|
+
// If we already found a mark that we can enable, return false to bypass the remaining search
|
|
47
|
+
if (someNodeSupportsMark) {
|
|
48
|
+
return false
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (node.isInline) {
|
|
52
|
+
const parentAllowsMarkType = !parent || parent.type.allowsMarkType(newMarkType)
|
|
53
|
+
const currentMarksAllowMarkType = !!newMarkType.isInSet(node.marks)
|
|
54
|
+
|| !node.marks.some(otherMark => otherMark.type.excludes(newMarkType))
|
|
55
|
+
|
|
56
|
+
someNodeSupportsMark = parentAllowsMarkType && currentMarksAllowMarkType
|
|
57
|
+
}
|
|
58
|
+
return !someNodeSupportsMark
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
return someNodeSupportsMark
|
|
62
|
+
})
|
|
63
|
+
}
|
|
17
64
|
export const setMark: RawCommands['setMark'] = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {
|
|
18
65
|
const { selection } = tr
|
|
19
66
|
const { empty, ranges } = selection
|
|
20
67
|
const type = getMarkType(typeOrName, state.schema)
|
|
21
|
-
const oldAttributes = getMarkAttributes(state, type)
|
|
22
|
-
const newAttributes = {
|
|
23
|
-
...oldAttributes,
|
|
24
|
-
...attributes,
|
|
25
|
-
}
|
|
26
68
|
|
|
27
69
|
if (dispatch) {
|
|
28
70
|
if (empty) {
|
|
29
|
-
|
|
71
|
+
const oldAttributes = getMarkAttributes(state, type)
|
|
72
|
+
|
|
73
|
+
tr.addStoredMark(
|
|
74
|
+
type.create({
|
|
75
|
+
...oldAttributes,
|
|
76
|
+
...attributes,
|
|
77
|
+
}),
|
|
78
|
+
)
|
|
30
79
|
} else {
|
|
31
80
|
ranges.forEach(range => {
|
|
32
|
-
|
|
81
|
+
const from = range.$from.pos
|
|
82
|
+
const to = range.$to.pos
|
|
83
|
+
|
|
84
|
+
state.doc.nodesBetween(from, to, (node, pos) => {
|
|
85
|
+
const trimmedFrom = Math.max(pos, from)
|
|
86
|
+
const trimmedTo = Math.min(pos + node.nodeSize, to)
|
|
87
|
+
const someHasMark = node.marks.find(mark => mark.type === type)
|
|
88
|
+
|
|
89
|
+
// if there is already a mark of this type
|
|
90
|
+
// we know that we have to merge its attributes
|
|
91
|
+
// otherwise we add a fresh new mark
|
|
92
|
+
if (someHasMark) {
|
|
93
|
+
node.marks.forEach(mark => {
|
|
94
|
+
if (type === mark.type) {
|
|
95
|
+
tr.addMark(
|
|
96
|
+
trimmedFrom,
|
|
97
|
+
trimmedTo,
|
|
98
|
+
type.create({
|
|
99
|
+
...mark.attrs,
|
|
100
|
+
...attributes,
|
|
101
|
+
}),
|
|
102
|
+
)
|
|
103
|
+
}
|
|
104
|
+
})
|
|
105
|
+
} else {
|
|
106
|
+
tr.addMark(trimmedFrom, trimmedTo, type.create(attributes))
|
|
107
|
+
}
|
|
108
|
+
})
|
|
33
109
|
})
|
|
34
110
|
}
|
|
35
111
|
}
|
|
36
112
|
|
|
37
|
-
return
|
|
113
|
+
return canSetMark(state, tr, type)
|
|
38
114
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { RawCommands } from '../types'
|
|
2
|
+
|
|
3
|
+
declare module '@tiptap/core' {
|
|
4
|
+
interface Commands<ReturnType> {
|
|
5
|
+
setMeta: {
|
|
6
|
+
/**
|
|
7
|
+
* Store a metadata property in the current transaction.
|
|
8
|
+
*/
|
|
9
|
+
setMeta: (key: string, value: any) => ReturnType,
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const setMeta: RawCommands['setMeta'] = (key, value) => ({ tr }) => {
|
|
15
|
+
tr.setMeta(key, value)
|
|
16
|
+
|
|
17
|
+
return true
|
|
18
|
+
}
|
package/src/commands/setNode.ts
CHANGED
|
@@ -1,21 +1,45 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import getNodeType from '../helpers/getNodeType'
|
|
1
|
+
import { setBlockType } from '@tiptap/pm/commands'
|
|
2
|
+
import { NodeType } from '@tiptap/pm/model'
|
|
3
|
+
|
|
4
|
+
import { getNodeType } from '../helpers/getNodeType'
|
|
5
|
+
import { RawCommands } from '../types'
|
|
5
6
|
|
|
6
7
|
declare module '@tiptap/core' {
|
|
7
|
-
interface Commands {
|
|
8
|
+
interface Commands<ReturnType> {
|
|
8
9
|
setNode: {
|
|
9
10
|
/**
|
|
10
11
|
* Replace a given range with a node.
|
|
11
12
|
*/
|
|
12
|
-
setNode: (typeOrName: string | NodeType, attributes?:
|
|
13
|
+
setNode: (typeOrName: string | NodeType, attributes?: Record<string, any>) => ReturnType
|
|
13
14
|
}
|
|
14
15
|
}
|
|
15
16
|
}
|
|
16
17
|
|
|
17
|
-
export const setNode: RawCommands['setNode'] = (typeOrName, attributes = {}) => ({ state, dispatch }) => {
|
|
18
|
+
export const setNode: RawCommands['setNode'] = (typeOrName, attributes = {}) => ({ state, dispatch, chain }) => {
|
|
18
19
|
const type = getNodeType(typeOrName, state.schema)
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
// TODO: use a fallback like insertContent?
|
|
22
|
+
if (!type.isTextblock) {
|
|
23
|
+
console.warn('[tiptap warn]: Currently "setNode()" only supports text block nodes.')
|
|
24
|
+
|
|
25
|
+
return false
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
chain()
|
|
30
|
+
// try to convert node to default node if needed
|
|
31
|
+
.command(({ commands }) => {
|
|
32
|
+
const canSetBlock = setBlockType(type, attributes)(state)
|
|
33
|
+
|
|
34
|
+
if (canSetBlock) {
|
|
35
|
+
return true
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return commands.clearNodes()
|
|
39
|
+
})
|
|
40
|
+
.command(({ state: updatedState }) => {
|
|
41
|
+
return setBlockType(type, attributes)(updatedState, dispatch)
|
|
42
|
+
})
|
|
43
|
+
.run()
|
|
44
|
+
)
|
|
21
45
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { NodeSelection } from '@tiptap/pm/state'
|
|
2
|
+
|
|
3
|
+
import { RawCommands } from '../types'
|
|
4
|
+
import { minMax } from '../utilities/minMax'
|
|
5
|
+
|
|
6
|
+
declare module '@tiptap/core' {
|
|
7
|
+
interface Commands<ReturnType> {
|
|
8
|
+
setNodeSelection: {
|
|
9
|
+
/**
|
|
10
|
+
* Creates a NodeSelection.
|
|
11
|
+
*/
|
|
12
|
+
setNodeSelection: (position: number) => ReturnType
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const setNodeSelection: RawCommands['setNodeSelection'] = position => ({ tr, dispatch }) => {
|
|
18
|
+
if (dispatch) {
|
|
19
|
+
const { doc } = tr
|
|
20
|
+
const from = minMax(position, 0, doc.content.size)
|
|
21
|
+
const selection = NodeSelection.create(doc, from)
|
|
22
|
+
|
|
23
|
+
tr.setSelection(selection)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return true
|
|
27
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { TextSelection } from '@tiptap/pm/state'
|
|
2
|
+
|
|
3
|
+
import { Range, RawCommands } from '../types'
|
|
4
|
+
import { minMax } from '../utilities/minMax'
|
|
5
|
+
|
|
6
|
+
declare module '@tiptap/core' {
|
|
7
|
+
interface Commands<ReturnType> {
|
|
8
|
+
setTextSelection: {
|
|
9
|
+
/**
|
|
10
|
+
* Creates a TextSelection.
|
|
11
|
+
*/
|
|
12
|
+
setTextSelection: (position: number | Range) => ReturnType
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const setTextSelection: RawCommands['setTextSelection'] = position => ({ tr, dispatch }) => {
|
|
18
|
+
if (dispatch) {
|
|
19
|
+
const { doc } = tr
|
|
20
|
+
const { from, to } = typeof position === 'number' ? { from: position, to: position } : position
|
|
21
|
+
const minPos = TextSelection.atStart(doc).from
|
|
22
|
+
const maxPos = TextSelection.atEnd(doc).to
|
|
23
|
+
const resolvedFrom = minMax(from, minPos, maxPos)
|
|
24
|
+
const resolvedEnd = minMax(to, minPos, maxPos)
|
|
25
|
+
const selection = TextSelection.create(doc, resolvedFrom, resolvedEnd)
|
|
26
|
+
|
|
27
|
+
tr.setSelection(selection)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return true
|
|
31
|
+
}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import getNodeType from '../helpers/getNodeType'
|
|
1
|
+
import { NodeType } from '@tiptap/pm/model'
|
|
2
|
+
import { sinkListItem as originalSinkListItem } from '@tiptap/pm/schema-list'
|
|
3
|
+
|
|
4
|
+
import { getNodeType } from '../helpers/getNodeType'
|
|
5
|
+
import { RawCommands } from '../types'
|
|
5
6
|
|
|
6
7
|
declare module '@tiptap/core' {
|
|
7
|
-
interface Commands {
|
|
8
|
+
interface Commands<ReturnType> {
|
|
8
9
|
sinkListItem: {
|
|
9
10
|
/**
|
|
10
11
|
* Sink the list item down into an inner list.
|
|
11
12
|
*/
|
|
12
|
-
sinkListItem: (typeOrName: string | NodeType) =>
|
|
13
|
+
sinkListItem: (typeOrName: string | NodeType) => ReturnType
|
|
13
14
|
}
|
|
14
15
|
}
|
|
15
16
|
}
|