@tiptap/core 2.0.0-beta.18 → 2.0.0-beta.182
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 +13 -6
- package/dist/packages/core/src/Editor.d.ts +24 -19
- package/dist/packages/core/src/EventEmitter.d.ts +8 -4
- package/dist/packages/core/src/Extension.d.ts +99 -27
- package/dist/packages/core/src/ExtensionManager.d.ts +7 -13
- package/dist/packages/core/src/InputRule.d.ts +42 -0
- package/dist/packages/core/src/Mark.d.ts +131 -31
- package/dist/packages/core/src/Node.d.ts +157 -33
- package/dist/packages/core/src/NodeView.d.ts +8 -12
- 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/index.d.ts +50 -0
- package/dist/packages/core/src/commands/insertContent.d.ts +7 -3
- 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/selectTextblockEnd.d.ts +12 -0
- package/dist/packages/core/src/commands/selectTextblockStart.d.ts +12 -0
- 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 +2 -95
- 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/combineTransactionSteps.d.ts +7 -0
- package/dist/packages/core/src/helpers/createChainableState.d.ts +5 -0
- package/dist/packages/core/src/helpers/createDocument.d.ts +3 -4
- package/dist/packages/core/src/helpers/createNodeFromContent.d.ts +4 -5
- 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/findParentNode.d.ts +2 -3
- package/dist/packages/core/src/helpers/findParentNodeClosestToPos.d.ts +2 -2
- 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/getAttributesFromExtensions.d.ts +2 -2
- package/dist/packages/core/src/helpers/getChangedRanges.d.ts +11 -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 +2 -3
- package/dist/packages/core/src/helpers/getMarkRange.d.ts +1 -1
- package/dist/packages/core/src/helpers/getMarkType.d.ts +1 -1
- package/dist/packages/core/src/helpers/getMarksBetween.d.ts +2 -2
- package/dist/packages/core/src/helpers/getNodeAttributes.d.ts +2 -3
- package/dist/packages/core/src/helpers/getNodeType.d.ts +1 -1
- package/dist/packages/core/src/helpers/getRenderedAttributes.d.ts +3 -3
- package/dist/packages/core/src/helpers/getSchema.d.ts +1 -1
- package/dist/packages/core/src/helpers/getSchemaByResolvedExtensions.d.ts +3 -0
- package/dist/packages/core/src/helpers/getSchemaTypeByName.d.ts +1 -1
- package/dist/packages/core/src/helpers/getSchemaTypeNameByName.d.ts +1 -1
- 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/getTextContentFromNodes.d.ts +2 -0
- package/dist/packages/core/src/helpers/getTextSerializersFromSchema.d.ts +3 -0
- package/dist/packages/core/src/helpers/index.d.ts +33 -0
- package/dist/packages/core/src/helpers/injectExtensionAttributesToParseRule.d.ts +1 -1
- 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/isList.d.ts +1 -1
- package/dist/packages/core/src/helpers/isMarkActive.d.ts +2 -3
- package/dist/packages/core/src/helpers/isNodeActive.d.ts +2 -3
- package/dist/packages/core/src/helpers/isNodeEmpty.d.ts +1 -1
- package/dist/packages/core/src/helpers/isNodeSelection.d.ts +1 -1
- package/dist/packages/core/src/helpers/isTextSelection.d.ts +1 -1
- package/dist/packages/core/src/helpers/posToDOMRect.d.ts +2 -0
- package/dist/packages/core/src/helpers/resolveFocusPosition.d.ts +4 -0
- package/dist/packages/core/src/helpers/selectionToInsertionEnd.d.ts +1 -1
- package/dist/packages/core/src/helpers/splitExtensions.d.ts +6 -6
- package/dist/packages/core/src/index.d.ts +14 -21
- package/dist/packages/core/src/inputRules/index.d.ts +5 -0
- 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/index.d.ts +3 -0
- package/dist/packages/core/src/pasteRules/markPasteRule.d.ts +11 -2
- package/dist/packages/core/src/pasteRules/nodePasteRule.d.ts +12 -0
- package/dist/packages/core/src/pasteRules/textPasteRule.d.ts +9 -0
- package/dist/packages/core/src/style.d.ts +1 -2
- package/dist/packages/core/src/types.d.ts +112 -56
- package/dist/packages/core/src/utilities/callOrReturn.d.ts +2 -1
- package/dist/packages/core/src/utilities/createStyleTag.d.ts +1 -1
- package/dist/packages/core/src/utilities/deleteProps.d.ts +1 -2
- package/dist/packages/core/src/utilities/elementFromString.d.ts +1 -1
- package/dist/packages/core/src/utilities/escapeForRegEx.d.ts +1 -0
- package/dist/packages/core/src/utilities/findDuplicates.d.ts +1 -0
- package/dist/packages/core/src/utilities/fromString.d.ts +1 -1
- package/dist/packages/core/src/utilities/index.d.ts +3 -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/isMacOS.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/minMax.d.ts +1 -1
- package/dist/packages/core/src/utilities/objectIncludes.d.ts +3 -2
- package/dist/packages/core/src/utilities/removeDuplicates.d.ts +8 -0
- package/dist/tiptap-core.cjs.js +2696 -1374
- package/dist/tiptap-core.cjs.js.map +1 -1
- package/dist/tiptap-core.esm.js +2630 -1342
- package/dist/tiptap-core.esm.js.map +1 -1
- package/dist/tiptap-core.umd.js +2648 -1325
- package/dist/tiptap-core.umd.js.map +1 -1
- package/package.json +17 -20
- package/src/CommandManager.ts +63 -64
- package/src/Editor.ts +115 -78
- package/src/EventEmitter.ts +14 -4
- package/src/Extension.ts +193 -43
- package/src/ExtensionManager.ts +232 -83
- package/src/InputRule.ts +265 -0
- package/src/Mark.ts +239 -49
- package/src/Node.ts +279 -57
- package/src/NodeView.ts +115 -47
- package/src/PasteRule.ts +247 -0
- package/src/Tracker.ts +42 -0
- package/src/commands/blur.ts +12 -6
- package/src/commands/clearContent.ts +3 -3
- package/src/commands/clearNodes.ts +30 -18
- package/src/commands/command.ts +2 -2
- package/src/commands/createParagraphNear.ts +4 -3
- package/src/commands/deleteNode.ts +37 -0
- package/src/commands/deleteRange.ts +3 -3
- package/src/commands/deleteSelection.ts +4 -3
- package/src/commands/enter.ts +3 -3
- package/src/commands/exitCode.ts +4 -3
- package/src/commands/extendMarkRange.ts +12 -11
- 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 +13 -24
- package/src/commands/insertContentAt.ts +108 -0
- package/src/commands/joinBackward.ts +4 -3
- package/src/commands/joinForward.ts +4 -3
- package/src/commands/keyboardShortcut.ts +6 -6
- package/src/commands/lift.ts +6 -5
- package/src/commands/liftEmptyBlock.ts +4 -3
- package/src/commands/liftListItem.ts +6 -5
- package/src/commands/newlineInCode.ts +4 -3
- package/src/commands/resetAttributes.ts +62 -0
- package/src/commands/scrollIntoView.ts +3 -3
- package/src/commands/selectAll.ts +8 -6
- package/src/commands/selectNodeBackward.ts +4 -3
- package/src/commands/selectNodeForward.ts +4 -3
- package/src/commands/selectParentNode.ts +4 -3
- package/src/commands/selectTextblockEnd.ts +20 -0
- package/src/commands/selectTextblockStart.ts +20 -0
- package/src/commands/setContent.ts +9 -15
- package/src/commands/setMark.ts +36 -12
- package/src/commands/setMeta.ts +18 -0
- package/src/commands/setNode.ts +29 -7
- package/src/commands/setNodeSelection.ts +29 -0
- package/src/commands/setTextSelection.ts +33 -0
- package/src/commands/sinkListItem.ts +6 -5
- package/src/commands/splitBlock.ts +16 -10
- package/src/commands/splitListItem.ts +45 -18
- package/src/commands/toggleList.ts +83 -18
- package/src/commands/toggleMark.ts +18 -7
- package/src/commands/toggleNode.ts +6 -5
- package/src/commands/toggleWrap.ts +9 -9
- package/src/commands/undoInputRule.ts +34 -5
- package/src/commands/unsetAllMarks.ts +7 -11
- package/src/commands/unsetMark.ts +35 -22
- package/src/commands/updateAttributes.ts +73 -0
- package/src/commands/wrapIn.ts +5 -10
- package/src/commands/wrapInList.ts +6 -5
- package/src/extensions/clipboardTextSerializer.ts +14 -35
- package/src/extensions/commands.ts +3 -141
- package/src/extensions/editable.ts +1 -0
- package/src/extensions/focusEvents.ts +3 -5
- package/src/extensions/index.ts +1 -0
- package/src/extensions/keymap.ts +110 -13
- package/src/extensions/tabindex.ts +18 -0
- package/src/helpers/combineTransactionSteps.ts +18 -0
- package/src/helpers/createChainableState.ts +38 -0
- package/src/helpers/createDocument.ts +5 -6
- package/src/helpers/createNodeFromContent.ts +17 -19
- package/src/helpers/defaultBlockAt.ts +13 -0
- package/src/helpers/findChildren.ts +18 -0
- package/src/helpers/findChildrenInRange.ts +32 -0
- package/src/helpers/findParentNode.ts +3 -2
- package/src/helpers/findParentNodeClosestToPos.ts +3 -2
- package/src/helpers/generateHTML.ts +6 -5
- package/src/helpers/generateJSON.ts +14 -0
- package/src/helpers/generateText.ts +30 -0
- package/src/helpers/getAttributes.ts +28 -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 +6 -5
- package/src/helpers/getMarkAttributes.ts +14 -10
- package/src/helpers/getMarkRange.ts +41 -8
- package/src/helpers/getMarkType.ts +5 -1
- package/src/helpers/getMarksBetween.ts +32 -10
- package/src/helpers/getNodeAttributes.ts +9 -9
- package/src/helpers/getNodeType.ts +5 -1
- package/src/helpers/getRenderedAttributes.ts +6 -7
- package/src/helpers/getSchema.ts +7 -133
- package/src/helpers/getSchemaByResolvedExtensions.ts +148 -0
- package/src/helpers/getSchemaTypeByName.ts +2 -10
- package/src/helpers/getSchemaTypeNameByName.ts +1 -1
- package/src/helpers/getSplittedAttributes.ts +4 -4
- package/src/helpers/getText.ts +19 -0
- package/src/helpers/getTextBetween.ts +49 -0
- package/src/helpers/getTextContentFromNodes.ts +17 -0
- package/src/helpers/getTextSerializersFromSchema.ts +10 -0
- package/src/helpers/index.ts +33 -0
- package/src/helpers/injectExtensionAttributesToParseRule.ts +17 -19
- package/src/helpers/isActive.ts +5 -5
- package/src/helpers/isExtensionRulesEnabled.ts +15 -0
- package/src/helpers/isList.ts +14 -7
- package/src/helpers/isMarkActive.ts +45 -20
- package/src/helpers/isNodeActive.ts +28 -35
- package/src/helpers/isNodeEmpty.ts +1 -1
- package/src/helpers/isNodeSelection.ts +3 -2
- package/src/helpers/isTextSelection.ts +3 -2
- package/src/helpers/posToDOMRect.ts +35 -0
- package/src/helpers/resolveFocusPosition.ts +43 -0
- package/src/helpers/selectionToInsertionEnd.ts +2 -2
- 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 -39
- package/src/inputRules/nodeInputRule.ts +45 -11
- package/src/inputRules/textInputRule.ts +35 -0
- package/src/inputRules/textblockTypeInputRule.ts +38 -0
- package/src/inputRules/wrappingInputRule.ts +60 -0
- package/src/pasteRules/index.ts +3 -0
- package/src/pasteRules/markPasteRule.ts +62 -53
- package/src/pasteRules/nodePasteRule.ts +39 -0
- package/src/pasteRules/textPasteRule.ts +35 -0
- package/src/style.ts +16 -3
- package/src/types.ts +129 -43
- 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 +3 -0
- package/src/utilities/isClass.ts +2 -2
- 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/isObject.ts +6 -6
- 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 -335
- 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 -30
- package/src/commands/insertNode.ts +0 -33
- package/src/commands/insertText.ts +0 -22
- 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
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tiptap/core",
|
|
3
3
|
"description": "headless rich text editor",
|
|
4
|
-
"version": "2.0.0-beta.
|
|
4
|
+
"version": "2.0.0-beta.182",
|
|
5
5
|
"homepage": "https://tiptap.dev",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"tiptap",
|
|
8
8
|
"headless",
|
|
9
9
|
"wysiwyg",
|
|
10
|
-
"text editor"
|
|
10
|
+
"text editor",
|
|
11
|
+
"prosemirror"
|
|
11
12
|
],
|
|
12
13
|
"license": "MIT",
|
|
13
14
|
"funding": {
|
|
@@ -17,29 +18,25 @@
|
|
|
17
18
|
"main": "dist/tiptap-core.cjs.js",
|
|
18
19
|
"umd": "dist/tiptap-core.umd.js",
|
|
19
20
|
"module": "dist/tiptap-core.esm.js",
|
|
20
|
-
"unpkg": "dist/tiptap-core.bundle.umd.min.js",
|
|
21
21
|
"types": "dist/packages/core/src/index.d.ts",
|
|
22
22
|
"files": [
|
|
23
23
|
"src",
|
|
24
24
|
"dist"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"@types/prosemirror-view": "^1.17.1",
|
|
35
|
-
"prosemirror-commands": "^1.1.7",
|
|
36
|
-
"prosemirror-inputrules": "^1.1.3",
|
|
37
|
-
"prosemirror-keymap": "^1.1.3",
|
|
38
|
-
"prosemirror-model": "^1.14.0",
|
|
39
|
-
"prosemirror-schema-list": "^1.1.4",
|
|
40
|
-
"prosemirror-state": "^1.3.4",
|
|
41
|
-
"prosemirror-transform": "^1.3.2",
|
|
42
|
-
"prosemirror-view": "^1.18.2"
|
|
27
|
+
"prosemirror-commands": "1.3.0",
|
|
28
|
+
"prosemirror-keymap": "1.2.0",
|
|
29
|
+
"prosemirror-model": "1.18.1",
|
|
30
|
+
"prosemirror-schema-list": "1.2.0",
|
|
31
|
+
"prosemirror-state": "1.4.1",
|
|
32
|
+
"prosemirror-transform": "1.6.0",
|
|
33
|
+
"prosemirror-view": "1.26.2"
|
|
43
34
|
},
|
|
44
|
-
"
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "https://github.com/ueberdosis/tiptap",
|
|
38
|
+
"directory": "packages/core"
|
|
39
|
+
},
|
|
40
|
+
"sideEffects": false,
|
|
41
|
+
"gitHead": "3e05093f00dd4f52ddefeb2451622d3661a25123"
|
|
45
42
|
}
|
package/src/CommandManager.ts
CHANGED
|
@@ -1,37 +1,53 @@
|
|
|
1
1
|
import { EditorState, Transaction } from 'prosemirror-state'
|
|
2
|
+
|
|
2
3
|
import { Editor } from './Editor'
|
|
4
|
+
import { createChainableState } from './helpers/createChainableState'
|
|
3
5
|
import {
|
|
4
|
-
|
|
5
|
-
ChainedCommands,
|
|
6
|
+
AnyCommands,
|
|
6
7
|
CanCommands,
|
|
7
|
-
|
|
8
|
+
ChainedCommands,
|
|
8
9
|
CommandProps,
|
|
10
|
+
SingleCommands,
|
|
9
11
|
} from './types'
|
|
10
12
|
|
|
11
|
-
export
|
|
13
|
+
export class CommandManager {
|
|
12
14
|
|
|
13
15
|
editor: Editor
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
rawCommands: AnyCommands
|
|
18
|
+
|
|
19
|
+
customState?: EditorState
|
|
16
20
|
|
|
17
|
-
constructor(
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
constructor(props: {
|
|
22
|
+
editor: Editor,
|
|
23
|
+
state?: EditorState,
|
|
24
|
+
}) {
|
|
25
|
+
this.editor = props.editor
|
|
26
|
+
this.rawCommands = this.editor.extensionManager.commands
|
|
27
|
+
this.customState = props.state
|
|
20
28
|
}
|
|
21
29
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
30
|
+
get hasCustomState(): boolean {
|
|
31
|
+
return !!this.customState
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
get state(): EditorState {
|
|
35
|
+
return this.customState || this.editor.state
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
get commands(): SingleCommands {
|
|
39
|
+
const { rawCommands, editor, state } = this
|
|
40
|
+
const { view } = editor
|
|
25
41
|
const { tr } = state
|
|
26
42
|
const props = this.buildProps(tr)
|
|
27
43
|
|
|
28
44
|
return Object.fromEntries(Object
|
|
29
|
-
.entries(
|
|
45
|
+
.entries(rawCommands)
|
|
30
46
|
.map(([name, command]) => {
|
|
31
|
-
const method = (...args: any) => {
|
|
47
|
+
const method = (...args: any[]) => {
|
|
32
48
|
const callback = command(...args)(props)
|
|
33
49
|
|
|
34
|
-
if (!tr.getMeta('preventDispatch')) {
|
|
50
|
+
if (!tr.getMeta('preventDispatch') && !this.hasCustomState) {
|
|
35
51
|
view.dispatch(tr)
|
|
36
52
|
}
|
|
37
53
|
|
|
@@ -39,27 +55,40 @@ export default class CommandManager {
|
|
|
39
55
|
}
|
|
40
56
|
|
|
41
57
|
return [name, method]
|
|
42
|
-
})) as SingleCommands
|
|
58
|
+
})) as unknown as SingleCommands
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
get chain(): () => ChainedCommands {
|
|
62
|
+
return () => this.createChain()
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
get can(): () => CanCommands {
|
|
66
|
+
return () => this.createCan()
|
|
43
67
|
}
|
|
44
68
|
|
|
45
69
|
public createChain(startTr?: Transaction, shouldDispatch = true): ChainedCommands {
|
|
46
|
-
const {
|
|
47
|
-
const {
|
|
70
|
+
const { rawCommands, editor, state } = this
|
|
71
|
+
const { view } = editor
|
|
48
72
|
const callbacks: boolean[] = []
|
|
49
73
|
const hasStartTransaction = !!startTr
|
|
50
74
|
const tr = startTr || state.tr
|
|
51
75
|
|
|
52
76
|
const run = () => {
|
|
53
|
-
if (
|
|
77
|
+
if (
|
|
78
|
+
!hasStartTransaction
|
|
79
|
+
&& shouldDispatch
|
|
80
|
+
&& !tr.getMeta('preventDispatch')
|
|
81
|
+
&& !this.hasCustomState
|
|
82
|
+
) {
|
|
54
83
|
view.dispatch(tr)
|
|
55
84
|
}
|
|
56
85
|
|
|
57
|
-
return
|
|
86
|
+
return callbacks.every(callback => callback === true)
|
|
58
87
|
}
|
|
59
88
|
|
|
60
89
|
const chain = {
|
|
61
|
-
...Object.fromEntries(Object.entries(
|
|
62
|
-
const chainedCommand = (...args:
|
|
90
|
+
...Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => {
|
|
91
|
+
const chainedCommand = (...args: never[]) => {
|
|
63
92
|
const props = this.buildProps(tr, shouldDispatch)
|
|
64
93
|
const callback = command(...args)(props)
|
|
65
94
|
|
|
@@ -77,16 +106,15 @@ export default class CommandManager {
|
|
|
77
106
|
}
|
|
78
107
|
|
|
79
108
|
public createCan(startTr?: Transaction): CanCommands {
|
|
80
|
-
const {
|
|
81
|
-
const { state } = editor
|
|
109
|
+
const { rawCommands, state } = this
|
|
82
110
|
const dispatch = undefined
|
|
83
111
|
const tr = startTr || state.tr
|
|
84
112
|
const props = this.buildProps(tr, dispatch)
|
|
85
113
|
const formattedCommands = Object.fromEntries(Object
|
|
86
|
-
.entries(
|
|
114
|
+
.entries(rawCommands)
|
|
87
115
|
.map(([name, command]) => {
|
|
88
|
-
return [name, (...args:
|
|
89
|
-
})) as SingleCommands
|
|
116
|
+
return [name, (...args: never[]) => command(...args)({ ...props, dispatch })]
|
|
117
|
+
})) as unknown as SingleCommands
|
|
90
118
|
|
|
91
119
|
return {
|
|
92
120
|
...formattedCommands,
|
|
@@ -95,8 +123,8 @@ export default class CommandManager {
|
|
|
95
123
|
}
|
|
96
124
|
|
|
97
125
|
public buildProps(tr: Transaction, shouldDispatch = true): CommandProps {
|
|
98
|
-
const { editor,
|
|
99
|
-
const {
|
|
126
|
+
const { rawCommands, editor, state } = this
|
|
127
|
+
const { view } = editor
|
|
100
128
|
|
|
101
129
|
if (state.storedMarks) {
|
|
102
130
|
tr.setStoredMarks(state.storedMarks)
|
|
@@ -106,7 +134,10 @@ export default class CommandManager {
|
|
|
106
134
|
tr,
|
|
107
135
|
editor,
|
|
108
136
|
view,
|
|
109
|
-
state:
|
|
137
|
+
state: createChainableState({
|
|
138
|
+
state,
|
|
139
|
+
transaction: tr,
|
|
140
|
+
}),
|
|
110
141
|
dispatch: shouldDispatch
|
|
111
142
|
? () => undefined
|
|
112
143
|
: undefined,
|
|
@@ -114,46 +145,14 @@ export default class CommandManager {
|
|
|
114
145
|
can: () => this.createCan(tr),
|
|
115
146
|
get commands() {
|
|
116
147
|
return Object.fromEntries(Object
|
|
117
|
-
.entries(
|
|
148
|
+
.entries(rawCommands)
|
|
118
149
|
.map(([name, command]) => {
|
|
119
|
-
return [name, (...args:
|
|
120
|
-
})) as SingleCommands
|
|
150
|
+
return [name, (...args: never[]) => command(...args)(props)]
|
|
151
|
+
})) as unknown as SingleCommands
|
|
121
152
|
},
|
|
122
153
|
}
|
|
123
154
|
|
|
124
155
|
return props
|
|
125
156
|
}
|
|
126
157
|
|
|
127
|
-
public chainableState(tr: Transaction, state: EditorState): EditorState {
|
|
128
|
-
let { selection } = tr
|
|
129
|
-
let { doc } = tr
|
|
130
|
-
let { storedMarks } = tr
|
|
131
|
-
|
|
132
|
-
return {
|
|
133
|
-
...state,
|
|
134
|
-
schema: state.schema,
|
|
135
|
-
plugins: state.plugins,
|
|
136
|
-
apply: state.apply.bind(state),
|
|
137
|
-
applyTransaction: state.applyTransaction.bind(state),
|
|
138
|
-
reconfigure: state.reconfigure.bind(state),
|
|
139
|
-
toJSON: state.toJSON.bind(state),
|
|
140
|
-
get storedMarks() {
|
|
141
|
-
return storedMarks
|
|
142
|
-
},
|
|
143
|
-
get selection() {
|
|
144
|
-
return selection
|
|
145
|
-
},
|
|
146
|
-
get doc() {
|
|
147
|
-
return doc
|
|
148
|
-
},
|
|
149
|
-
get tr() {
|
|
150
|
-
selection = tr.selection
|
|
151
|
-
doc = tr.doc
|
|
152
|
-
storedMarks = tr.storedMarks
|
|
153
|
-
|
|
154
|
-
return tr
|
|
155
|
-
},
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
|
|
159
158
|
}
|
package/src/Editor.ts
CHANGED
|
@@ -1,28 +1,36 @@
|
|
|
1
|
+
import { MarkType, NodeType, Schema } from 'prosemirror-model'
|
|
1
2
|
import {
|
|
2
|
-
EditorState,
|
|
3
|
+
EditorState,
|
|
4
|
+
Plugin,
|
|
5
|
+
PluginKey,
|
|
6
|
+
Transaction,
|
|
3
7
|
} from 'prosemirror-state'
|
|
4
8
|
import { EditorView } from 'prosemirror-view'
|
|
5
|
-
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import createDocument from './helpers/createDocument'
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import
|
|
9
|
+
|
|
10
|
+
import { CommandManager } from './CommandManager'
|
|
11
|
+
import { EventEmitter } from './EventEmitter'
|
|
12
|
+
import { ExtensionManager } from './ExtensionManager'
|
|
13
|
+
import * as extensions from './extensions'
|
|
14
|
+
import { createDocument } from './helpers/createDocument'
|
|
15
|
+
import { getAttributes } from './helpers/getAttributes'
|
|
16
|
+
import { getHTMLFromFragment } from './helpers/getHTMLFromFragment'
|
|
17
|
+
import { getText } from './helpers/getText'
|
|
18
|
+
import { getTextSerializersFromSchema } from './helpers/getTextSerializersFromSchema'
|
|
19
|
+
import { isActive } from './helpers/isActive'
|
|
20
|
+
import { isNodeEmpty } from './helpers/isNodeEmpty'
|
|
21
|
+
import { resolveFocusPosition } from './helpers/resolveFocusPosition'
|
|
22
|
+
import { style } from './style'
|
|
17
23
|
import {
|
|
18
|
-
EditorOptions,
|
|
19
24
|
CanCommands,
|
|
20
25
|
ChainedCommands,
|
|
26
|
+
EditorEvents,
|
|
27
|
+
EditorOptions,
|
|
28
|
+
JSONContent,
|
|
21
29
|
SingleCommands,
|
|
22
|
-
|
|
30
|
+
TextSerializer,
|
|
23
31
|
} from './types'
|
|
24
|
-
import
|
|
25
|
-
import
|
|
32
|
+
import { createStyleTag } from './utilities/createStyleTag'
|
|
33
|
+
import { isFunction } from './utilities/isFunction'
|
|
26
34
|
|
|
27
35
|
export { extensions }
|
|
28
36
|
|
|
@@ -30,7 +38,7 @@ export interface HTMLElement {
|
|
|
30
38
|
editor?: Editor
|
|
31
39
|
}
|
|
32
40
|
|
|
33
|
-
export class Editor extends EventEmitter {
|
|
41
|
+
export class Editor extends EventEmitter<EditorEvents> {
|
|
34
42
|
|
|
35
43
|
private commandManager!: CommandManager
|
|
36
44
|
|
|
@@ -44,12 +52,13 @@ export class Editor extends EventEmitter {
|
|
|
44
52
|
|
|
45
53
|
public isFocused = false
|
|
46
54
|
|
|
47
|
-
|
|
55
|
+
public extensionStorage: Record<string, any> = {}
|
|
48
56
|
|
|
49
57
|
public options: EditorOptions = {
|
|
50
58
|
element: document.createElement('div'),
|
|
51
59
|
content: '',
|
|
52
60
|
injectCSS: true,
|
|
61
|
+
injectNonce: undefined,
|
|
53
62
|
extensions: [],
|
|
54
63
|
autofocus: false,
|
|
55
64
|
editable: true,
|
|
@@ -57,14 +66,14 @@ export class Editor extends EventEmitter {
|
|
|
57
66
|
parseOptions: {},
|
|
58
67
|
enableInputRules: true,
|
|
59
68
|
enablePasteRules: true,
|
|
69
|
+
enableCoreExtensions: true,
|
|
70
|
+
onBeforeCreate: () => null,
|
|
60
71
|
onCreate: () => null,
|
|
61
72
|
onUpdate: () => null,
|
|
62
73
|
onSelectionUpdate: () => null,
|
|
63
|
-
onViewUpdate: () => null,
|
|
64
74
|
onTransaction: () => null,
|
|
65
75
|
onFocus: () => null,
|
|
66
76
|
onBlur: () => null,
|
|
67
|
-
onResize: () => null,
|
|
68
77
|
onDestroy: () => null,
|
|
69
78
|
}
|
|
70
79
|
|
|
@@ -74,50 +83,54 @@ export class Editor extends EventEmitter {
|
|
|
74
83
|
this.createExtensionManager()
|
|
75
84
|
this.createCommandManager()
|
|
76
85
|
this.createSchema()
|
|
86
|
+
this.on('beforeCreate', this.options.onBeforeCreate)
|
|
87
|
+
this.emit('beforeCreate', { editor: this })
|
|
77
88
|
this.createView()
|
|
78
89
|
this.injectCSS()
|
|
79
90
|
this.on('create', this.options.onCreate)
|
|
80
91
|
this.on('update', this.options.onUpdate)
|
|
81
92
|
this.on('selectionUpdate', this.options.onSelectionUpdate)
|
|
82
|
-
this.on('viewUpdate', this.options.onViewUpdate)
|
|
83
93
|
this.on('transaction', this.options.onTransaction)
|
|
84
94
|
this.on('focus', this.options.onFocus)
|
|
85
95
|
this.on('blur', this.options.onBlur)
|
|
86
96
|
this.on('destroy', this.options.onDestroy)
|
|
87
97
|
|
|
88
98
|
window.setTimeout(() => {
|
|
99
|
+
if (this.isDestroyed) {
|
|
100
|
+
return
|
|
101
|
+
}
|
|
102
|
+
|
|
89
103
|
this.commands.focus(this.options.autofocus)
|
|
90
104
|
this.emit('create', { editor: this })
|
|
91
|
-
|
|
92
|
-
if (window.ResizeObserver) {
|
|
93
|
-
this.resizeObserver = new ResizeObserver(() => {
|
|
94
|
-
this.emit('resize', { editor: this })
|
|
95
|
-
})
|
|
96
|
-
this.resizeObserver.observe(this.view.dom)
|
|
97
|
-
}
|
|
98
105
|
}, 0)
|
|
106
|
+
}
|
|
99
107
|
|
|
108
|
+
/**
|
|
109
|
+
* Returns the editor storage.
|
|
110
|
+
*/
|
|
111
|
+
public get storage(): Record<string, any> {
|
|
112
|
+
return this.extensionStorage
|
|
100
113
|
}
|
|
101
114
|
|
|
102
115
|
/**
|
|
103
116
|
* An object of all registered commands.
|
|
104
117
|
*/
|
|
105
118
|
public get commands(): SingleCommands {
|
|
106
|
-
return this.commandManager.
|
|
119
|
+
return this.commandManager.commands
|
|
107
120
|
}
|
|
108
121
|
|
|
109
122
|
/**
|
|
110
123
|
* Create a command chain to call multiple commands at once.
|
|
111
124
|
*/
|
|
112
125
|
public chain(): ChainedCommands {
|
|
113
|
-
return this.commandManager.
|
|
126
|
+
return this.commandManager.chain()
|
|
114
127
|
}
|
|
115
128
|
|
|
116
129
|
/**
|
|
117
130
|
* Check if a command or a command chain can be executed. Without executing it.
|
|
118
131
|
*/
|
|
119
132
|
public can(): CanCommands {
|
|
120
|
-
return this.commandManager.
|
|
133
|
+
return this.commandManager.can()
|
|
121
134
|
}
|
|
122
135
|
|
|
123
136
|
/**
|
|
@@ -125,7 +138,7 @@ export class Editor extends EventEmitter {
|
|
|
125
138
|
*/
|
|
126
139
|
private injectCSS(): void {
|
|
127
140
|
if (this.options.injectCSS && document) {
|
|
128
|
-
this.css = createStyleTag(style)
|
|
141
|
+
this.css = createStyleTag(style, this.options.injectNonce)
|
|
129
142
|
}
|
|
130
143
|
}
|
|
131
144
|
|
|
@@ -135,7 +148,20 @@ export class Editor extends EventEmitter {
|
|
|
135
148
|
* @param options A list of options
|
|
136
149
|
*/
|
|
137
150
|
public setOptions(options: Partial<EditorOptions> = {}): void {
|
|
138
|
-
this.options = {
|
|
151
|
+
this.options = {
|
|
152
|
+
...this.options,
|
|
153
|
+
...options,
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
if (!this.view || !this.state || this.isDestroyed) {
|
|
157
|
+
return
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (this.options.editorProps) {
|
|
161
|
+
this.view.setProps(this.options.editorProps)
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
this.view.updateState(this.state)
|
|
139
165
|
}
|
|
140
166
|
|
|
141
167
|
/**
|
|
@@ -143,17 +169,18 @@ export class Editor extends EventEmitter {
|
|
|
143
169
|
*/
|
|
144
170
|
public setEditable(editable: boolean): void {
|
|
145
171
|
this.setOptions({ editable })
|
|
146
|
-
|
|
147
|
-
if (this.view && this.state && !this.isDestroyed) {
|
|
148
|
-
this.view.updateState(this.state)
|
|
149
|
-
}
|
|
150
172
|
}
|
|
151
173
|
|
|
152
174
|
/**
|
|
153
175
|
* Returns whether the editor is editable.
|
|
154
176
|
*/
|
|
155
177
|
public get isEditable(): boolean {
|
|
156
|
-
|
|
178
|
+
// since plugins are applied after creating the view
|
|
179
|
+
// `editable` is always `true` for one tick.
|
|
180
|
+
// that’s why we also have to check for `options.editable`
|
|
181
|
+
return this.options.editable
|
|
182
|
+
&& this.view
|
|
183
|
+
&& this.view.editable
|
|
157
184
|
}
|
|
158
185
|
|
|
159
186
|
/**
|
|
@@ -170,8 +197,8 @@ export class Editor extends EventEmitter {
|
|
|
170
197
|
* @param handlePlugins Control how to merge the plugin into the existing plugins.
|
|
171
198
|
*/
|
|
172
199
|
public registerPlugin(plugin: Plugin, handlePlugins?: (newPlugin: Plugin, plugins: Plugin[]) => Plugin[]): void {
|
|
173
|
-
const plugins =
|
|
174
|
-
? handlePlugins(plugin, this.state.plugins)
|
|
200
|
+
const plugins = isFunction(handlePlugins)
|
|
201
|
+
? handlePlugins(plugin, [...this.state.plugins])
|
|
175
202
|
: [...this.state.plugins, plugin]
|
|
176
203
|
|
|
177
204
|
const state = this.state.reconfigure({ plugins })
|
|
@@ -182,7 +209,7 @@ export class Editor extends EventEmitter {
|
|
|
182
209
|
/**
|
|
183
210
|
* Unregister a ProseMirror plugin.
|
|
184
211
|
*
|
|
185
|
-
* @param
|
|
212
|
+
* @param nameOrPluginKey The plugins name
|
|
186
213
|
*/
|
|
187
214
|
public unregisterPlugin(nameOrPluginKey: string | PluginKey): void {
|
|
188
215
|
if (this.isDestroyed) {
|
|
@@ -206,7 +233,9 @@ export class Editor extends EventEmitter {
|
|
|
206
233
|
* Creates an extension manager.
|
|
207
234
|
*/
|
|
208
235
|
private createExtensionManager(): void {
|
|
209
|
-
const coreExtensions =
|
|
236
|
+
const coreExtensions = this.options.enableCoreExtensions
|
|
237
|
+
? Object.values(extensions)
|
|
238
|
+
: []
|
|
210
239
|
const allExtensions = [...coreExtensions, ...this.options.extensions].filter(extension => {
|
|
211
240
|
return ['extension', 'node', 'mark'].includes(extension?.type)
|
|
212
241
|
})
|
|
@@ -218,7 +247,9 @@ export class Editor extends EventEmitter {
|
|
|
218
247
|
* Creates an command manager.
|
|
219
248
|
*/
|
|
220
249
|
private createCommandManager(): void {
|
|
221
|
-
this.commandManager = new CommandManager(
|
|
250
|
+
this.commandManager = new CommandManager({
|
|
251
|
+
editor: this,
|
|
252
|
+
})
|
|
222
253
|
}
|
|
223
254
|
|
|
224
255
|
/**
|
|
@@ -232,27 +263,22 @@ export class Editor extends EventEmitter {
|
|
|
232
263
|
* Creates a ProseMirror view.
|
|
233
264
|
*/
|
|
234
265
|
private createView(): void {
|
|
266
|
+
const doc = createDocument(this.options.content, this.schema, this.options.parseOptions)
|
|
267
|
+
const selection = resolveFocusPosition(doc, this.options.autofocus)
|
|
268
|
+
|
|
235
269
|
this.view = new EditorView(this.options.element, {
|
|
236
270
|
...this.options.editorProps,
|
|
237
271
|
dispatchTransaction: this.dispatchTransaction.bind(this),
|
|
238
272
|
state: EditorState.create({
|
|
239
|
-
doc
|
|
273
|
+
doc,
|
|
274
|
+
selection: selection || undefined,
|
|
240
275
|
}),
|
|
241
276
|
})
|
|
242
277
|
|
|
243
278
|
// `editor.view` is not yet available at this time.
|
|
244
279
|
// Therefore we will add all plugins and node views directly afterwards.
|
|
245
280
|
const newState = this.state.reconfigure({
|
|
246
|
-
plugins:
|
|
247
|
-
new Plugin({
|
|
248
|
-
view: () => ({
|
|
249
|
-
update: () => this.emit('viewUpdate', {
|
|
250
|
-
editor: this,
|
|
251
|
-
}),
|
|
252
|
-
}),
|
|
253
|
-
}),
|
|
254
|
-
...this.extensionManager.plugins,
|
|
255
|
-
],
|
|
281
|
+
plugins: this.extensionManager.plugins,
|
|
256
282
|
})
|
|
257
283
|
|
|
258
284
|
this.view.updateState(newState)
|
|
@@ -262,6 +288,7 @@ export class Editor extends EventEmitter {
|
|
|
262
288
|
// Let’s store the editor instance in the DOM element.
|
|
263
289
|
// So we’ll have access to it for tests.
|
|
264
290
|
const dom = this.view.dom as HTMLElement
|
|
291
|
+
|
|
265
292
|
dom.editor = this
|
|
266
293
|
}
|
|
267
294
|
|
|
@@ -296,10 +323,6 @@ export class Editor extends EventEmitter {
|
|
|
296
323
|
* @param transaction An editor state transaction
|
|
297
324
|
*/
|
|
298
325
|
private dispatchTransaction(transaction: Transaction): void {
|
|
299
|
-
if (transaction.docChanged && !this.isEditable) {
|
|
300
|
-
return
|
|
301
|
-
}
|
|
302
|
-
|
|
303
326
|
if (this.isCapturingTransaction) {
|
|
304
327
|
if (!this.capturedTransaction) {
|
|
305
328
|
this.capturedTransaction = transaction
|
|
@@ -324,6 +347,7 @@ export class Editor extends EventEmitter {
|
|
|
324
347
|
if (selectionHasChanged) {
|
|
325
348
|
this.emit('selectionUpdate', {
|
|
326
349
|
editor: this,
|
|
350
|
+
transaction,
|
|
327
351
|
})
|
|
328
352
|
}
|
|
329
353
|
|
|
@@ -334,6 +358,7 @@ export class Editor extends EventEmitter {
|
|
|
334
358
|
this.emit('focus', {
|
|
335
359
|
editor: this,
|
|
336
360
|
event: focus.event,
|
|
361
|
+
transaction,
|
|
337
362
|
})
|
|
338
363
|
}
|
|
339
364
|
|
|
@@ -341,6 +366,7 @@ export class Editor extends EventEmitter {
|
|
|
341
366
|
this.emit('blur', {
|
|
342
367
|
editor: this,
|
|
343
368
|
event: blur.event,
|
|
369
|
+
transaction,
|
|
344
370
|
})
|
|
345
371
|
}
|
|
346
372
|
|
|
@@ -355,21 +381,10 @@ export class Editor extends EventEmitter {
|
|
|
355
381
|
}
|
|
356
382
|
|
|
357
383
|
/**
|
|
358
|
-
* Get attributes of the currently selected node.
|
|
359
|
-
*
|
|
360
|
-
* @param name Name of the node
|
|
384
|
+
* Get attributes of the currently selected node or mark.
|
|
361
385
|
*/
|
|
362
|
-
public
|
|
363
|
-
return
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
/**
|
|
367
|
-
* Get attributes of the currently selected mark.
|
|
368
|
-
*
|
|
369
|
-
* @param name Name of the mark
|
|
370
|
-
*/
|
|
371
|
-
public getMarkAttributes(name: string): AnyObject {
|
|
372
|
-
return getMarkAttributes(this.state, name)
|
|
386
|
+
public getAttributes(nameOrType: string | NodeType | MarkType): Record<string, any> {
|
|
387
|
+
return getAttributes(this.state, nameOrType)
|
|
373
388
|
}
|
|
374
389
|
|
|
375
390
|
/**
|
|
@@ -395,7 +410,7 @@ export class Editor extends EventEmitter {
|
|
|
395
410
|
/**
|
|
396
411
|
* Get the document as JSON.
|
|
397
412
|
*/
|
|
398
|
-
public getJSON():
|
|
413
|
+
public getJSON(): JSONContent {
|
|
399
414
|
return this.state.doc.toJSON()
|
|
400
415
|
}
|
|
401
416
|
|
|
@@ -403,7 +418,28 @@ export class Editor extends EventEmitter {
|
|
|
403
418
|
* Get the document as HTML.
|
|
404
419
|
*/
|
|
405
420
|
public getHTML(): string {
|
|
406
|
-
return getHTMLFromFragment(this.state.doc, this.schema)
|
|
421
|
+
return getHTMLFromFragment(this.state.doc.content, this.schema)
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/**
|
|
425
|
+
* Get the document as text.
|
|
426
|
+
*/
|
|
427
|
+
public getText(options?: {
|
|
428
|
+
blockSeparator?: string,
|
|
429
|
+
textSerializers?: Record<string, TextSerializer>,
|
|
430
|
+
}): string {
|
|
431
|
+
const {
|
|
432
|
+
blockSeparator = '\n\n',
|
|
433
|
+
textSerializers = {},
|
|
434
|
+
} = options || {}
|
|
435
|
+
|
|
436
|
+
return getText(this.state.doc, {
|
|
437
|
+
blockSeparator,
|
|
438
|
+
textSerializers: {
|
|
439
|
+
...textSerializers,
|
|
440
|
+
...getTextSerializersFromSchema(this.schema),
|
|
441
|
+
},
|
|
442
|
+
})
|
|
407
443
|
}
|
|
408
444
|
|
|
409
445
|
/**
|
|
@@ -415,8 +451,12 @@ export class Editor extends EventEmitter {
|
|
|
415
451
|
|
|
416
452
|
/**
|
|
417
453
|
* Get the number of characters for the current document.
|
|
454
|
+
*
|
|
455
|
+
* @deprecated
|
|
418
456
|
*/
|
|
419
457
|
public getCharacterCount(): number {
|
|
458
|
+
console.warn('[tiptap warn]: "editor.getCharacterCount()" is deprecated. Please use "editor.storage.characterCount.characters()" instead.')
|
|
459
|
+
|
|
420
460
|
return this.state.doc.content.size - 2
|
|
421
461
|
}
|
|
422
462
|
|
|
@@ -424,8 +464,6 @@ export class Editor extends EventEmitter {
|
|
|
424
464
|
* Destroy the editor.
|
|
425
465
|
*/
|
|
426
466
|
public destroy(): void {
|
|
427
|
-
this.resizeObserver?.unobserve(this.view.dom)
|
|
428
|
-
|
|
429
467
|
this.emit('destroy')
|
|
430
468
|
|
|
431
469
|
if (this.view) {
|
|
@@ -433,7 +471,6 @@ export class Editor extends EventEmitter {
|
|
|
433
471
|
}
|
|
434
472
|
|
|
435
473
|
this.removeAllListeners()
|
|
436
|
-
removeElement(this.css)
|
|
437
474
|
}
|
|
438
475
|
|
|
439
476
|
/**
|