@tiptap/core 2.0.0-beta.20 → 2.0.0-beta.200
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/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 +139 -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 +4 -4
- 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 +4 -4
- 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 -99
- 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/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/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 +2755 -1460
- package/dist/tiptap-core.cjs.js.map +1 -1
- package/dist/tiptap-core.esm.js +2709 -1448
- package/dist/tiptap-core.esm.js.map +1 -1
- package/dist/tiptap-core.umd.js +2731 -1435
- package/dist/tiptap-core.umd.js.map +1 -1
- package/package.json +16 -20
- package/src/CommandManager.ts +64 -65
- package/src/Editor.ts +116 -78
- package/src/EventEmitter.ts +14 -4
- package/src/Extension.ts +193 -43
- package/src/ExtensionManager.ts +242 -84
- package/src/InputRule.ts +265 -0
- package/src/Mark.ts +277 -48
- package/src/Node.ts +279 -57
- package/src/NodeView.ts +115 -47
- package/src/PasteRule.ts +280 -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 +9 -8
- 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 +80 -14
- package/src/commands/setMeta.ts +18 -0
- package/src/commands/setNode.ts +29 -7
- package/src/commands/setNodeSelection.ts +27 -0
- package/src/commands/setTextSelection.ts +33 -0
- package/src/commands/sinkListItem.ts +6 -5
- package/src/commands/splitBlock.ts +14 -19
- 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 +16 -9
- 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 -147
- 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 +21 -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 +2 -3
- package/src/helpers/isTextSelection.ts +2 -3
- 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/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 -357
- package/LICENSE.md +0 -21
- 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/isClass.d.ts +0 -1
- package/dist/packages/core/src/utilities/isObject.d.ts +0 -1
- 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 -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
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.200",
|
|
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,24 @@
|
|
|
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.1",
|
|
28
|
+
"prosemirror-keymap": "^1.2.0",
|
|
29
|
+
"prosemirror-model": "^1.18.1",
|
|
30
|
+
"prosemirror-schema-list": "^1.2.2",
|
|
31
|
+
"prosemirror-state": "^1.4.1",
|
|
32
|
+
"prosemirror-transform": "^1.7.0",
|
|
33
|
+
"prosemirror-view": "^1.28.2"
|
|
43
34
|
},
|
|
44
|
-
"
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "https://github.com/ueberdosis/tiptap",
|
|
38
|
+
"directory": "packages/core"
|
|
39
|
+
},
|
|
40
|
+
"sideEffects": false
|
|
45
41
|
}
|
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
|
|
82
|
-
const dispatch = undefined
|
|
109
|
+
const { rawCommands, state } = this
|
|
110
|
+
const dispatch = false
|
|
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: undefined })]
|
|
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,19 @@ 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
|
-
}
|
|
172
|
+
this.emit('update', { editor: this, transaction: this.state.tr })
|
|
150
173
|
}
|
|
151
174
|
|
|
152
175
|
/**
|
|
153
176
|
* Returns whether the editor is editable.
|
|
154
177
|
*/
|
|
155
178
|
public get isEditable(): boolean {
|
|
156
|
-
|
|
179
|
+
// since plugins are applied after creating the view
|
|
180
|
+
// `editable` is always `true` for one tick.
|
|
181
|
+
// that’s why we also have to check for `options.editable`
|
|
182
|
+
return this.options.editable
|
|
183
|
+
&& this.view
|
|
184
|
+
&& this.view.editable
|
|
157
185
|
}
|
|
158
186
|
|
|
159
187
|
/**
|
|
@@ -170,8 +198,8 @@ export class Editor extends EventEmitter {
|
|
|
170
198
|
* @param handlePlugins Control how to merge the plugin into the existing plugins.
|
|
171
199
|
*/
|
|
172
200
|
public registerPlugin(plugin: Plugin, handlePlugins?: (newPlugin: Plugin, plugins: Plugin[]) => Plugin[]): void {
|
|
173
|
-
const plugins =
|
|
174
|
-
? handlePlugins(plugin, this.state.plugins)
|
|
201
|
+
const plugins = isFunction(handlePlugins)
|
|
202
|
+
? handlePlugins(plugin, [...this.state.plugins])
|
|
175
203
|
: [...this.state.plugins, plugin]
|
|
176
204
|
|
|
177
205
|
const state = this.state.reconfigure({ plugins })
|
|
@@ -182,7 +210,7 @@ export class Editor extends EventEmitter {
|
|
|
182
210
|
/**
|
|
183
211
|
* Unregister a ProseMirror plugin.
|
|
184
212
|
*
|
|
185
|
-
* @param
|
|
213
|
+
* @param nameOrPluginKey The plugins name
|
|
186
214
|
*/
|
|
187
215
|
public unregisterPlugin(nameOrPluginKey: string | PluginKey): void {
|
|
188
216
|
if (this.isDestroyed) {
|
|
@@ -206,7 +234,9 @@ export class Editor extends EventEmitter {
|
|
|
206
234
|
* Creates an extension manager.
|
|
207
235
|
*/
|
|
208
236
|
private createExtensionManager(): void {
|
|
209
|
-
const coreExtensions =
|
|
237
|
+
const coreExtensions = this.options.enableCoreExtensions
|
|
238
|
+
? Object.values(extensions)
|
|
239
|
+
: []
|
|
210
240
|
const allExtensions = [...coreExtensions, ...this.options.extensions].filter(extension => {
|
|
211
241
|
return ['extension', 'node', 'mark'].includes(extension?.type)
|
|
212
242
|
})
|
|
@@ -218,7 +248,9 @@ export class Editor extends EventEmitter {
|
|
|
218
248
|
* Creates an command manager.
|
|
219
249
|
*/
|
|
220
250
|
private createCommandManager(): void {
|
|
221
|
-
this.commandManager = new CommandManager(
|
|
251
|
+
this.commandManager = new CommandManager({
|
|
252
|
+
editor: this,
|
|
253
|
+
})
|
|
222
254
|
}
|
|
223
255
|
|
|
224
256
|
/**
|
|
@@ -232,27 +264,22 @@ export class Editor extends EventEmitter {
|
|
|
232
264
|
* Creates a ProseMirror view.
|
|
233
265
|
*/
|
|
234
266
|
private createView(): void {
|
|
267
|
+
const doc = createDocument(this.options.content, this.schema, this.options.parseOptions)
|
|
268
|
+
const selection = resolveFocusPosition(doc, this.options.autofocus)
|
|
269
|
+
|
|
235
270
|
this.view = new EditorView(this.options.element, {
|
|
236
271
|
...this.options.editorProps,
|
|
237
272
|
dispatchTransaction: this.dispatchTransaction.bind(this),
|
|
238
273
|
state: EditorState.create({
|
|
239
|
-
doc
|
|
274
|
+
doc,
|
|
275
|
+
selection: selection || undefined,
|
|
240
276
|
}),
|
|
241
277
|
})
|
|
242
278
|
|
|
243
279
|
// `editor.view` is not yet available at this time.
|
|
244
280
|
// Therefore we will add all plugins and node views directly afterwards.
|
|
245
281
|
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
|
-
],
|
|
282
|
+
plugins: this.extensionManager.plugins,
|
|
256
283
|
})
|
|
257
284
|
|
|
258
285
|
this.view.updateState(newState)
|
|
@@ -262,6 +289,7 @@ export class Editor extends EventEmitter {
|
|
|
262
289
|
// Let’s store the editor instance in the DOM element.
|
|
263
290
|
// So we’ll have access to it for tests.
|
|
264
291
|
const dom = this.view.dom as HTMLElement
|
|
292
|
+
|
|
265
293
|
dom.editor = this
|
|
266
294
|
}
|
|
267
295
|
|
|
@@ -296,10 +324,6 @@ export class Editor extends EventEmitter {
|
|
|
296
324
|
* @param transaction An editor state transaction
|
|
297
325
|
*/
|
|
298
326
|
private dispatchTransaction(transaction: Transaction): void {
|
|
299
|
-
if (transaction.docChanged && !this.isEditable) {
|
|
300
|
-
return
|
|
301
|
-
}
|
|
302
|
-
|
|
303
327
|
if (this.isCapturingTransaction) {
|
|
304
328
|
if (!this.capturedTransaction) {
|
|
305
329
|
this.capturedTransaction = transaction
|
|
@@ -324,6 +348,7 @@ export class Editor extends EventEmitter {
|
|
|
324
348
|
if (selectionHasChanged) {
|
|
325
349
|
this.emit('selectionUpdate', {
|
|
326
350
|
editor: this,
|
|
351
|
+
transaction,
|
|
327
352
|
})
|
|
328
353
|
}
|
|
329
354
|
|
|
@@ -334,6 +359,7 @@ export class Editor extends EventEmitter {
|
|
|
334
359
|
this.emit('focus', {
|
|
335
360
|
editor: this,
|
|
336
361
|
event: focus.event,
|
|
362
|
+
transaction,
|
|
337
363
|
})
|
|
338
364
|
}
|
|
339
365
|
|
|
@@ -341,6 +367,7 @@ export class Editor extends EventEmitter {
|
|
|
341
367
|
this.emit('blur', {
|
|
342
368
|
editor: this,
|
|
343
369
|
event: blur.event,
|
|
370
|
+
transaction,
|
|
344
371
|
})
|
|
345
372
|
}
|
|
346
373
|
|
|
@@ -355,21 +382,10 @@ export class Editor extends EventEmitter {
|
|
|
355
382
|
}
|
|
356
383
|
|
|
357
384
|
/**
|
|
358
|
-
* Get attributes of the currently selected node.
|
|
359
|
-
*
|
|
360
|
-
* @param name Name of the node
|
|
385
|
+
* Get attributes of the currently selected node or mark.
|
|
361
386
|
*/
|
|
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)
|
|
387
|
+
public getAttributes(nameOrType: string | NodeType | MarkType): Record<string, any> {
|
|
388
|
+
return getAttributes(this.state, nameOrType)
|
|
373
389
|
}
|
|
374
390
|
|
|
375
391
|
/**
|
|
@@ -395,7 +411,7 @@ export class Editor extends EventEmitter {
|
|
|
395
411
|
/**
|
|
396
412
|
* Get the document as JSON.
|
|
397
413
|
*/
|
|
398
|
-
public getJSON():
|
|
414
|
+
public getJSON(): JSONContent {
|
|
399
415
|
return this.state.doc.toJSON()
|
|
400
416
|
}
|
|
401
417
|
|
|
@@ -403,7 +419,28 @@ export class Editor extends EventEmitter {
|
|
|
403
419
|
* Get the document as HTML.
|
|
404
420
|
*/
|
|
405
421
|
public getHTML(): string {
|
|
406
|
-
return getHTMLFromFragment(this.state.doc, this.schema)
|
|
422
|
+
return getHTMLFromFragment(this.state.doc.content, this.schema)
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
/**
|
|
426
|
+
* Get the document as text.
|
|
427
|
+
*/
|
|
428
|
+
public getText(options?: {
|
|
429
|
+
blockSeparator?: string,
|
|
430
|
+
textSerializers?: Record<string, TextSerializer>,
|
|
431
|
+
}): string {
|
|
432
|
+
const {
|
|
433
|
+
blockSeparator = '\n\n',
|
|
434
|
+
textSerializers = {},
|
|
435
|
+
} = options || {}
|
|
436
|
+
|
|
437
|
+
return getText(this.state.doc, {
|
|
438
|
+
blockSeparator,
|
|
439
|
+
textSerializers: {
|
|
440
|
+
...textSerializers,
|
|
441
|
+
...getTextSerializersFromSchema(this.schema),
|
|
442
|
+
},
|
|
443
|
+
})
|
|
407
444
|
}
|
|
408
445
|
|
|
409
446
|
/**
|
|
@@ -415,8 +452,12 @@ export class Editor extends EventEmitter {
|
|
|
415
452
|
|
|
416
453
|
/**
|
|
417
454
|
* Get the number of characters for the current document.
|
|
455
|
+
*
|
|
456
|
+
* @deprecated
|
|
418
457
|
*/
|
|
419
458
|
public getCharacterCount(): number {
|
|
459
|
+
console.warn('[tiptap warn]: "editor.getCharacterCount()" is deprecated. Please use "editor.storage.characterCount.characters()" instead.')
|
|
460
|
+
|
|
420
461
|
return this.state.doc.content.size - 2
|
|
421
462
|
}
|
|
422
463
|
|
|
@@ -424,8 +465,6 @@ export class Editor extends EventEmitter {
|
|
|
424
465
|
* Destroy the editor.
|
|
425
466
|
*/
|
|
426
467
|
public destroy(): void {
|
|
427
|
-
this.resizeObserver?.unobserve(this.view.dom)
|
|
428
|
-
|
|
429
468
|
this.emit('destroy')
|
|
430
469
|
|
|
431
470
|
if (this.view) {
|
|
@@ -433,7 +472,6 @@ export class Editor extends EventEmitter {
|
|
|
433
472
|
}
|
|
434
473
|
|
|
435
474
|
this.removeAllListeners()
|
|
436
|
-
removeElement(this.css)
|
|
437
475
|
}
|
|
438
476
|
|
|
439
477
|
/**
|