@tiptap/core 2.0.0-beta.99 → 2.0.0-rc.1
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 +3 -3
- package/dist/index.cjs +4360 -0
- package/dist/index.cjs.map +1 -0
- package/dist/{tiptap-core.esm.js → index.js} +2349 -1447
- package/dist/index.js.map +1 -0
- package/dist/index.umd.js +4358 -0
- package/dist/index.umd.js.map +1 -0
- package/dist/packages/core/src/CommandManager.d.ts +14 -7
- package/dist/packages/core/src/Editor.d.ts +25 -11
- package/dist/packages/core/src/EventEmitter.d.ts +8 -4
- package/dist/packages/core/src/Extension.d.ts +63 -29
- package/dist/packages/core/src/ExtensionManager.d.ts +3 -4
- package/dist/packages/core/src/InputRule.d.ts +42 -0
- package/dist/packages/core/src/Mark.d.ts +94 -36
- package/dist/packages/core/src/Node.d.ts +104 -45
- package/dist/packages/core/src/NodeView.d.ts +8 -8
- package/dist/packages/core/src/PasteRule.d.ts +42 -0
- package/dist/packages/core/src/Tracker.d.ts +1 -1
- package/dist/packages/core/src/commands/deleteCurrentNode.d.ts +12 -0
- package/dist/packages/core/src/commands/deleteNode.d.ts +1 -1
- package/dist/packages/core/src/commands/deleteRange.d.ts +1 -1
- package/dist/packages/core/src/commands/extendMarkRange.d.ts +1 -1
- package/dist/packages/core/src/commands/focus.d.ts +4 -2
- package/dist/packages/core/src/commands/index.d.ts +50 -0
- package/dist/packages/core/src/commands/insertContent.d.ts +6 -3
- package/dist/packages/core/src/commands/insertContentAt.d.ts +6 -3
- package/dist/packages/core/src/commands/join.d.ts +33 -0
- package/dist/packages/core/src/commands/lift.d.ts +1 -1
- package/dist/packages/core/src/commands/liftListItem.d.ts +1 -1
- package/dist/packages/core/src/commands/resetAttributes.d.ts +1 -1
- 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 +2 -2
- package/dist/packages/core/src/commands/setMark.d.ts +1 -1
- package/dist/packages/core/src/commands/setNode.d.ts +1 -1
- package/dist/packages/core/src/commands/setTextSelection.d.ts +1 -1
- package/dist/packages/core/src/commands/sinkListItem.d.ts +1 -1
- package/dist/packages/core/src/commands/splitListItem.d.ts +1 -1
- package/dist/packages/core/src/commands/toggleList.d.ts +2 -2
- package/dist/packages/core/src/commands/toggleMark.d.ts +7 -2
- package/dist/packages/core/src/commands/toggleNode.d.ts +1 -1
- package/dist/packages/core/src/commands/toggleWrap.d.ts +1 -1
- package/dist/packages/core/src/commands/unsetMark.d.ts +7 -2
- package/dist/packages/core/src/commands/updateAttributes.d.ts +1 -1
- package/dist/packages/core/src/commands/wrapIn.d.ts +1 -1
- package/dist/packages/core/src/commands/wrapInList.d.ts +1 -1
- package/dist/packages/core/src/extensions/clipboardTextSerializer.d.ts +1 -1
- package/dist/packages/core/src/extensions/commands.d.ts +2 -97
- 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 +2 -2
- package/dist/packages/core/src/helpers/createNodeFromContent.d.ts +2 -2
- package/dist/packages/core/src/helpers/defaultBlockAt.d.ts +2 -0
- package/dist/packages/core/src/helpers/findChildren.d.ts +3 -3
- package/dist/packages/core/src/helpers/findChildrenInRange.d.ts +3 -3
- package/dist/packages/core/src/helpers/findParentNode.d.ts +3 -4
- package/dist/packages/core/src/helpers/findParentNodeClosestToPos.d.ts +3 -3
- package/dist/packages/core/src/helpers/generateHTML.d.ts +1 -1
- package/dist/packages/core/src/helpers/generateJSON.d.ts +1 -1
- package/dist/packages/core/src/helpers/generateText.d.ts +5 -0
- package/dist/packages/core/src/helpers/getAttributes.d.ts +3 -3
- 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 +2 -5
- package/dist/packages/core/src/helpers/getExtensionField.d.ts +2 -2
- package/dist/packages/core/src/helpers/getHTMLFromFragment.d.ts +2 -2
- package/dist/packages/core/src/helpers/getMarkAttributes.d.ts +3 -3
- package/dist/packages/core/src/helpers/getMarkRange.d.ts +2 -2
- package/dist/packages/core/src/helpers/getMarkType.d.ts +2 -2
- package/dist/packages/core/src/helpers/getMarksBetween.d.ts +2 -2
- package/dist/packages/core/src/helpers/getNodeAttributes.d.ts +3 -3
- package/dist/packages/core/src/helpers/getNodeType.d.ts +2 -2
- package/dist/packages/core/src/helpers/getRenderedAttributes.d.ts +2 -2
- package/dist/packages/core/src/helpers/getSchema.d.ts +2 -2
- package/dist/packages/core/src/helpers/getSchemaByResolvedExtensions.d.ts +2 -2
- package/dist/packages/core/src/helpers/getSchemaTypeByName.d.ts +2 -2
- package/dist/packages/core/src/helpers/getSchemaTypeNameByName.d.ts +2 -2
- package/dist/packages/core/src/helpers/getSplittedAttributes.d.ts +1 -1
- 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 +47 -0
- package/dist/packages/core/src/helpers/injectExtensionAttributesToParseRule.d.ts +2 -2
- package/dist/packages/core/src/helpers/isActive.d.ts +2 -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 +3 -3
- package/dist/packages/core/src/helpers/isNodeActive.d.ts +3 -3
- package/dist/packages/core/src/helpers/isNodeEmpty.d.ts +2 -2
- package/dist/packages/core/src/helpers/isNodeSelection.d.ts +2 -2
- package/dist/packages/core/src/helpers/isTextSelection.d.ts +2 -2
- package/dist/packages/core/src/helpers/posToDOMRect.d.ts +2 -2
- package/dist/packages/core/src/helpers/resolveFocusPosition.d.ts +4 -0
- package/dist/packages/core/src/helpers/selectionToInsertionEnd.d.ts +2 -2
- package/dist/packages/core/src/helpers/splitExtensions.d.ts +6 -6
- package/dist/packages/core/src/index.d.ts +12 -34
- package/dist/packages/core/src/inputRules/index.d.ts +5 -0
- package/dist/packages/core/src/inputRules/markInputRule.d.ts +12 -3
- package/dist/packages/core/src/inputRules/nodeInputRule.d.ts +12 -3
- 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 +27 -0
- package/dist/packages/core/src/pasteRules/index.d.ts +3 -0
- package/dist/packages/core/src/pasteRules/markPasteRule.d.ts +12 -3
- 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 +70 -40
- package/dist/packages/core/src/utilities/callOrReturn.d.ts +1 -1
- package/dist/packages/core/src/utilities/createStyleTag.d.ts +1 -1
- package/dist/packages/core/src/utilities/deleteProps.d.ts +1 -1
- 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 +20 -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/isString.d.ts +1 -0
- package/dist/packages/core/src/utilities/isiOS.d.ts +1 -1
- package/dist/packages/core/src/utilities/mergeAttributes.d.ts +1 -1
- package/dist/packages/core/src/utilities/mergeDeep.d.ts +1 -1
- package/dist/packages/core/src/utilities/minMax.d.ts +1 -1
- package/dist/packages/core/src/utilities/objectIncludes.d.ts +3 -1
- package/dist/packages/core/src/utilities/removeDuplicates.d.ts +8 -0
- package/package.json +25 -24
- package/src/CommandManager.ts +73 -83
- package/src/Editor.ts +101 -53
- package/src/EventEmitter.ts +14 -4
- package/src/Extension.ts +244 -138
- package/src/ExtensionManager.ts +153 -152
- package/src/InputRule.ts +260 -0
- package/src/Mark.ts +365 -204
- package/src/Node.ts +406 -253
- package/src/NodeView.ts +59 -38
- package/src/PasteRule.ts +240 -0
- package/src/Tracker.ts +4 -8
- package/src/commands/blur.ts +4 -0
- package/src/commands/clearNodes.ts +15 -9
- package/src/commands/createParagraphNear.ts +3 -2
- package/src/commands/deleteCurrentNode.ts +41 -0
- package/src/commands/deleteNode.ts +3 -2
- package/src/commands/deleteRange.ts +1 -1
- package/src/commands/deleteSelection.ts +3 -2
- package/src/commands/exitCode.ts +3 -2
- package/src/commands/extendMarkRange.ts +9 -5
- package/src/commands/focus.ts +31 -42
- package/src/commands/index.ts +50 -0
- package/src/commands/insertContent.ts +15 -4
- package/src/commands/insertContentAt.ts +71 -14
- package/src/commands/join.ts +53 -0
- package/src/commands/keyboardShortcut.ts +3 -3
- package/src/commands/lift.ts +6 -5
- package/src/commands/liftEmptyBlock.ts +2 -1
- package/src/commands/liftListItem.ts +5 -4
- package/src/commands/newlineInCode.ts +3 -2
- package/src/commands/resetAttributes.ts +16 -10
- package/src/commands/selectAll.ts +5 -3
- package/src/commands/selectNodeBackward.ts +3 -2
- package/src/commands/selectNodeForward.ts +3 -2
- package/src/commands/selectParentNode.ts +3 -2
- package/src/commands/selectTextblockEnd.ts +20 -0
- package/src/commands/selectTextblockStart.ts +20 -0
- package/src/commands/setContent.ts +6 -9
- package/src/commands/setMark.ts +66 -13
- package/src/commands/setNode.ts +30 -6
- package/src/commands/setNodeSelection.ts +6 -7
- package/src/commands/setTextSelection.ts +8 -9
- package/src/commands/sinkListItem.ts +5 -4
- package/src/commands/splitBlock.ts +23 -38
- package/src/commands/splitListItem.ts +30 -27
- package/src/commands/toggleList.ts +108 -19
- package/src/commands/toggleMark.ts +17 -6
- package/src/commands/toggleNode.ts +9 -4
- package/src/commands/toggleWrap.ts +8 -8
- package/src/commands/undoInputRule.ts +31 -2
- package/src/commands/unsetAllMarks.ts +4 -8
- package/src/commands/unsetMark.ts +34 -21
- package/src/commands/updateAttributes.ts +18 -12
- package/src/commands/wrapIn.ts +5 -10
- package/src/commands/wrapInList.ts +5 -4
- package/src/extensions/clipboardTextSerializer.ts +15 -36
- package/src/extensions/commands.ts +3 -144
- 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 +111 -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 +4 -3
- package/src/helpers/createNodeFromContent.ts +10 -15
- package/src/helpers/defaultBlockAt.ts +13 -0
- package/src/helpers/findChildren.ts +4 -3
- package/src/helpers/findChildrenInRange.ts +8 -3
- package/src/helpers/findParentNode.ts +4 -3
- package/src/helpers/findParentNodeClosestToPos.ts +13 -7
- package/src/helpers/generateHTML.ts +6 -5
- package/src/helpers/generateJSON.ts +6 -7
- package/src/helpers/generateText.ts +27 -0
- package/src/helpers/getAttributes.ts +8 -9
- package/src/helpers/getAttributesFromExtensions.ts +25 -12
- package/src/helpers/getChangedRanges.ts +83 -0
- package/src/helpers/getDebugJSON.ts +42 -38
- package/src/helpers/getExtensionField.ts +3 -3
- package/src/helpers/getHTMLFromFragment.ts +5 -6
- package/src/helpers/getMarkAttributes.ts +18 -10
- package/src/helpers/getMarkRange.ts +13 -8
- package/src/helpers/getMarkType.ts +5 -3
- package/src/helpers/getMarksBetween.ts +34 -10
- package/src/helpers/getNodeAttributes.ts +14 -12
- package/src/helpers/getNodeType.ts +5 -3
- package/src/helpers/getRenderedAttributes.ts +8 -6
- package/src/helpers/getSchema.ts +5 -4
- package/src/helpers/getSchemaByResolvedExtensions.ts +165 -111
- package/src/helpers/getSchemaTypeByName.ts +3 -11
- package/src/helpers/getSchemaTypeNameByName.ts +2 -2
- package/src/helpers/getSplittedAttributes.ts +1 -1
- 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 +47 -0
- package/src/helpers/injectExtensionAttributesToParseRule.ts +22 -23
- package/src/helpers/isActive.ts +10 -5
- package/src/helpers/isExtensionRulesEnabled.ts +15 -0
- package/src/helpers/isList.ts +6 -5
- package/src/helpers/isMarkActive.ts +32 -35
- package/src/helpers/isNodeActive.ts +27 -37
- 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 +10 -4
- 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 +12 -37
- 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 +84 -0
- package/src/pasteRules/index.ts +3 -0
- package/src/pasteRules/markPasteRule.ts +49 -56
- package/src/pasteRules/nodePasteRule.ts +37 -0
- package/src/pasteRules/textPasteRule.ts +35 -0
- package/src/style.ts +12 -3
- package/src/types.ts +140 -106
- package/src/utilities/callOrReturn.ts +3 -2
- package/src/utilities/createStyleTag.ts +8 -4
- package/src/utilities/deleteProps.ts +1 -1
- package/src/utilities/elementFromString.ts +1 -1
- 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 +1 -1
- package/src/utilities/mergeAttributes.ts +2 -1
- package/src/utilities/mergeDeep.ts +2 -2
- package/src/utilities/minMax.ts +1 -1
- package/src/utilities/objectIncludes.ts +18 -4
- package/src/utilities/removeDuplicates.ts +15 -0
- package/CHANGELOG.md +0 -1190
- package/LICENSE.md +0 -21
- 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/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.cjs.js +0 -3408
- package/dist/tiptap-core.cjs.js.map +0 -1
- package/dist/tiptap-core.esm.js.map +0 -1
- package/dist/tiptap-core.umd.js +0 -3405
- package/dist/tiptap-core.umd.js.map +0 -1
- package/src/commands/joinBackward.ts +0 -17
- package/src/commands/joinForward.ts +0 -17
- package/src/utilities/isClass.ts +0 -7
- package/src/utilities/isObject.ts +0 -10
- package/src/utilities/removeElement.ts +0 -5
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tiptap-core.umd.js","sources":["../src/helpers/getSchemaTypeNameByName.ts","../src/helpers/getNodeType.ts","../src/helpers/getNodeAttributes.ts","../src/helpers/getMarkType.ts","../src/helpers/getMarkAttributes.ts","../src/helpers/getAttributes.ts","../src/utilities/objectIncludes.ts","../src/helpers/isNodeActive.ts","../src/helpers/isMarkActive.ts","../src/helpers/isActive.ts","../src/utilities/removeElement.ts","../src/utilities/elementFromString.ts","../src/helpers/createNodeFromContent.ts","../src/helpers/createDocument.ts","../src/helpers/getHTMLFromFragment.ts","../src/helpers/isNodeEmpty.ts","../src/utilities/createStyleTag.ts","../src/CommandManager.ts","../src/helpers/getExtensionField.ts","../src/helpers/splitExtensions.ts","../src/helpers/getAttributesFromExtensions.ts","../src/utilities/mergeAttributes.ts","../src/helpers/getRenderedAttributes.ts","../src/utilities/isEmptyObject.ts","../src/utilities/fromString.ts","../src/helpers/injectExtensionAttributesToParseRule.ts","../src/utilities/callOrReturn.ts","../src/helpers/getSchemaByResolvedExtensions.ts","../src/helpers/getSchemaTypeByName.ts","../src/ExtensionManager.ts","../src/EventEmitter.ts","../src/utilities/isPlainObject.ts","../src/utilities/mergeDeep.ts","../src/Extension.ts","../src/extensions/clipboardTextSerializer.ts","../src/commands/blur.ts","../src/commands/clearContent.ts","../src/commands/clearNodes.ts","../src/commands/command.ts","../src/commands/createParagraphNear.ts","../src/commands/deleteNode.ts","../src/commands/deleteRange.ts","../src/commands/deleteSelection.ts","../src/commands/enter.ts","../src/commands/exitCode.ts","../src/helpers/getMarkRange.ts","../src/commands/extendMarkRange.ts","../src/commands/first.ts","../src/utilities/minMax.ts","../src/utilities/isClass.ts","../src/utilities/isObject.ts","../src/helpers/isTextSelection.ts","../src/commands/focus.ts","../src/commands/forEach.ts","../src/commands/insertContent.ts","../src/helpers/selectionToInsertionEnd.ts","../src/commands/insertContentAt.ts","../src/commands/joinBackward.ts","../src/commands/joinForward.ts","../src/commands/keyboardShortcut.ts","../src/commands/lift.ts","../src/commands/liftEmptyBlock.ts","../src/commands/liftListItem.ts","../src/commands/newlineInCode.ts","../src/utilities/deleteProps.ts","../src/commands/resetAttributes.ts","../src/commands/scrollIntoView.ts","../src/commands/selectAll.ts","../src/commands/selectNodeBackward.ts","../src/commands/selectNodeForward.ts","../src/commands/selectParentNode.ts","../src/commands/setContent.ts","../src/commands/setMark.ts","../src/commands/setMeta.ts","../src/commands/setNode.ts","../src/commands/setNodeSelection.ts","../src/commands/setTextSelection.ts","../src/commands/sinkListItem.ts","../src/helpers/getSplittedAttributes.ts","../src/commands/splitBlock.ts","../src/commands/splitListItem.ts","../src/helpers/findParentNodeClosestToPos.ts","../src/helpers/findParentNode.ts","../src/helpers/isList.ts","../src/commands/toggleList.ts","../src/commands/toggleMark.ts","../src/commands/toggleNode.ts","../src/commands/toggleWrap.ts","../src/commands/undoInputRule.ts","../src/commands/unsetAllMarks.ts","../src/commands/unsetMark.ts","../src/commands/updateAttributes.ts","../src/commands/wrapIn.ts","../src/commands/wrapInList.ts","../src/extensions/commands.ts","../src/extensions/editable.ts","../src/extensions/focusEvents.ts","../src/extensions/keymap.ts","../src/style.ts","../src/Editor.ts","../src/Node.ts","../src/Mark.ts","../src/utilities/isiOS.ts","../src/NodeView.ts","../src/Tracker.ts","../src/inputRules/nodeInputRule.ts","../src/helpers/getMarksBetween.ts","../src/inputRules/markInputRule.ts","../src/pasteRules/markPasteRule.ts","../src/helpers/findChildren.ts","../src/helpers/findChildrenInRange.ts","../src/helpers/getSchema.ts","../src/helpers/generateHTML.ts","../src/helpers/generateJSON.ts","../src/helpers/getDebugJSON.ts","../src/helpers/isNodeSelection.ts","../src/helpers/posToDOMRect.ts"],"sourcesContent":["import { Schema } from 'prosemirror-model'\n\nexport default function getSchemaTypeNameByName(name: string, schema: Schema): 'node' | 'mark' | null {\n if (schema.nodes[name]) {\n return 'node'\n }\n\n if (schema.marks[name]) {\n return 'mark'\n }\n\n return null\n}\n","import { NodeType, Schema } from 'prosemirror-model'\n\nexport default function getNodeType(nameOrType: string | NodeType, schema: Schema): NodeType {\n if (typeof nameOrType === 'string') {\n if (!schema.nodes[nameOrType]) {\n throw Error(`There is no node type named '${nameOrType}'. Maybe you forgot to add the extension?`)\n }\n\n return schema.nodes[nameOrType]\n }\n\n return nameOrType\n}\n","import { EditorState } from 'prosemirror-state'\nimport { Node, NodeType } from 'prosemirror-model'\nimport getNodeType from './getNodeType'\n\nexport default function getNodeAttributes(state: EditorState, typeOrName: string | NodeType): Record<string, any> {\n const type = getNodeType(typeOrName, state.schema)\n const { from, to } = state.selection\n let nodes: Node[] = []\n\n state.doc.nodesBetween(from, to, node => {\n nodes = [...nodes, node]\n })\n\n const node = nodes\n .reverse()\n .find(nodeItem => nodeItem.type.name === type.name)\n\n if (node) {\n return { ...node.attrs }\n }\n\n return {}\n}\n","import { MarkType, Schema } from 'prosemirror-model'\n\nexport default function getMarkType(nameOrType: string | MarkType, schema: Schema): MarkType {\n if (typeof nameOrType === 'string') {\n if (!schema.marks[nameOrType]) {\n throw Error(`There is no mark type named '${nameOrType}'. Maybe you forgot to add the extension?`)\n }\n\n return schema.marks[nameOrType]\n }\n\n return nameOrType\n}\n","import { EditorState } from 'prosemirror-state'\nimport { Mark, MarkType } from 'prosemirror-model'\nimport getMarkType from './getMarkType'\n\nexport default function getMarkAttributes(state: EditorState, typeOrName: string | MarkType): Record<string, any> {\n const type = getMarkType(typeOrName, state.schema)\n const { from, to, empty } = state.selection\n let marks: Mark[] = []\n\n if (empty) {\n marks = state.selection.$head.marks()\n } else {\n state.doc.nodesBetween(from, to, node => {\n marks = [...marks, ...node.marks]\n })\n }\n\n const mark = marks.find(markItem => markItem.type.name === type.name)\n\n if (mark) {\n return { ...mark.attrs }\n }\n\n return {}\n}\n","import { MarkType, NodeType } from 'prosemirror-model'\nimport { EditorState } from 'prosemirror-state'\nimport getSchemaTypeNameByName from './getSchemaTypeNameByName'\nimport getNodeAttributes from './getNodeAttributes'\nimport getMarkAttributes from './getMarkAttributes'\n\nexport default function getAttributes(\n state: EditorState,\n typeOrName: string | NodeType | MarkType,\n): Record<string, any> {\n const schemaType = getSchemaTypeNameByName(\n typeof typeOrName === 'string'\n ? typeOrName\n : typeOrName.name,\n state.schema,\n )\n\n if (schemaType === 'node') {\n return getNodeAttributes(state, typeOrName as NodeType)\n }\n\n if (schemaType === 'mark') {\n return getMarkAttributes(state, typeOrName as MarkType)\n }\n\n return {}\n}\n","/**\n * Check if object1 includes object2\n * @param object1 Object\n * @param object2 Object\n */\nexport default function objectIncludes(object1: Record<string, any>, object2: Record<string, any>): boolean {\n const keys = Object.keys(object2)\n\n if (!keys.length) {\n return true\n }\n\n return !!keys\n .filter(key => object2[key] === object1[key])\n .length\n}\n","import { EditorState } from 'prosemirror-state'\nimport { NodeType } from 'prosemirror-model'\nimport objectIncludes from '../utilities/objectIncludes'\nimport getNodeType from './getNodeType'\nimport { NodeRange } from '../types'\n\nexport default function isNodeActive(\n state: EditorState,\n typeOrName: NodeType | string | null,\n attributes: Record<string, any> = {},\n): boolean {\n const { from, to, empty } = state.selection\n const type = typeOrName\n ? getNodeType(typeOrName, state.schema)\n : null\n\n let nodeRanges: NodeRange[] = []\n\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isText) {\n const relativeFrom = Math.max(from, pos)\n const relativeTo = Math.min(to, pos + node.nodeSize)\n\n nodeRanges = [...nodeRanges, {\n node,\n from: relativeFrom,\n to: relativeTo,\n }]\n }\n })\n\n if (empty) {\n return !!nodeRanges\n .filter(nodeRange => {\n if (!type) {\n return true\n }\n\n return type.name === nodeRange.node.type.name\n })\n .find(nodeRange => objectIncludes(nodeRange.node.attrs, attributes))\n }\n\n const selectionRange = to - from\n\n const range = nodeRanges\n .filter(nodeRange => {\n if (!type) {\n return true\n }\n\n return type.name === nodeRange.node.type.name\n })\n .filter(nodeRange => objectIncludes(nodeRange.node.attrs, attributes))\n .reduce((sum, nodeRange) => {\n const size = nodeRange.to - nodeRange.from\n return sum + size\n }, 0)\n\n return range >= selectionRange\n}\n","import { EditorState } from 'prosemirror-state'\nimport { MarkType } from 'prosemirror-model'\nimport objectIncludes from '../utilities/objectIncludes'\nimport getMarkType from './getMarkType'\nimport { MarkRange } from '../types'\n\nexport default function isMarkActive(\n state: EditorState,\n typeOrName: MarkType | string | null,\n attributes: Record<string, any> = {},\n): boolean {\n const { from, to, empty } = state.selection\n const type = typeOrName\n ? getMarkType(typeOrName, state.schema)\n : null\n\n if (empty) {\n return !!(state.storedMarks || state.selection.$from.marks())\n .filter(mark => {\n if (!type) {\n return true\n }\n\n return type.name === mark.type.name\n })\n .find(mark => objectIncludes(mark.attrs, attributes))\n }\n\n let selectionRange = 0\n let markRanges: MarkRange[] = []\n\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isText) {\n const relativeFrom = Math.max(from, pos)\n const relativeTo = Math.min(to, pos + node.nodeSize)\n const range = relativeTo - relativeFrom\n\n selectionRange += range\n\n markRanges = [...markRanges, ...node.marks.map(mark => ({\n mark,\n from: relativeFrom,\n to: relativeTo,\n }))]\n }\n })\n\n if (selectionRange === 0) {\n return false\n }\n\n // calculate range of matched mark\n const matchedRange = markRanges\n .filter(markRange => {\n if (!type) {\n return true\n }\n\n return type.name === markRange.mark.type.name\n })\n .filter(markRange => objectIncludes(markRange.mark.attrs, attributes))\n .reduce((sum, markRange) => {\n const size = markRange.to - markRange.from\n\n return sum + size\n }, 0)\n\n // calculate range of marks that excludes the searched mark\n // for example `code` doesn’t allow any other marks\n const excludedRange = markRanges\n .filter(markRange => {\n if (!type) {\n return true\n }\n\n return markRange.mark.type !== type\n && markRange.mark.type.excludes(type)\n })\n .reduce((sum, markRange) => {\n const size = markRange.to - markRange.from\n\n return sum + size\n }, 0)\n\n // we only include the result of `excludedRange`\n // if there is a match at all\n const range = matchedRange > 0\n ? matchedRange + excludedRange\n : matchedRange\n\n return range >= selectionRange\n}\n","import { EditorState } from 'prosemirror-state'\nimport isNodeActive from './isNodeActive'\nimport isMarkActive from './isMarkActive'\nimport getSchemaTypeNameByName from './getSchemaTypeNameByName'\n\nexport default function isActive(state: EditorState, name: string | null, attributes: Record<string, any> = {}): boolean {\n if (!name) {\n return isNodeActive(state, null, attributes) || isMarkActive(state, null, attributes)\n }\n\n const schemaType = getSchemaTypeNameByName(name, state.schema)\n\n if (schemaType === 'node') {\n return isNodeActive(state, name, attributes)\n }\n\n if (schemaType === 'mark') {\n return isMarkActive(state, name, attributes)\n }\n\n return false\n}\n","export default function removeElement(element: HTMLElement): void {\n if (element && element.parentNode) {\n element.parentNode.removeChild(element)\n }\n}\n","export default function elementFromString(value: string): HTMLElement {\n // add a wrapper to preserve leading and trailing whitespace\n const wrappedValue = `<body>${value}</body>`\n\n return new window.DOMParser().parseFromString(wrappedValue, 'text/html').body\n}\n","import {\n Schema,\n DOMParser,\n Node as ProseMirrorNode,\n Fragment,\n ParseOptions,\n} from 'prosemirror-model'\nimport elementFromString from '../utilities/elementFromString'\nimport { Content } from '../types'\n\nexport type CreateNodeFromContentOptions = {\n slice?: boolean,\n parseOptions?: ParseOptions,\n}\n\nexport default function createNodeFromContent(\n content: Content,\n schema: Schema,\n options?: CreateNodeFromContentOptions,\n): ProseMirrorNode | Fragment {\n options = {\n slice: true,\n parseOptions: {},\n ...options,\n }\n\n if (typeof content === 'object' && content !== null) {\n try {\n if (Array.isArray(content)) {\n return Fragment.fromArray(content.map(item => schema.nodeFromJSON(item)))\n }\n\n return schema.nodeFromJSON(content)\n } catch (error) {\n console.warn(\n '[tiptap warn]: Invalid content.',\n 'Passed value:',\n content,\n 'Error:',\n error,\n )\n\n return createNodeFromContent('', schema, options)\n }\n }\n\n if (typeof content === 'string') {\n const parser = DOMParser.fromSchema(schema)\n\n return options.slice\n ? parser.parseSlice(elementFromString(content), options.parseOptions).content\n : parser.parse(elementFromString(content), options.parseOptions)\n }\n\n return createNodeFromContent('', schema, options)\n}\n","import { Schema, Node as ProseMirrorNode, ParseOptions } from 'prosemirror-model'\nimport { Content } from '../types'\nimport createNodeFromContent from './createNodeFromContent'\n\nexport default function createDocument(\n content: Content,\n schema: Schema,\n parseOptions: ParseOptions = {},\n): ProseMirrorNode {\n return createNodeFromContent(content, schema, { slice: false, parseOptions }) as ProseMirrorNode\n}\n","import { Node, DOMSerializer, Schema } from 'prosemirror-model'\n\nexport default function getHTMLFromFragment(doc: Node, schema: Schema): string {\n const fragment = DOMSerializer\n .fromSchema(schema)\n .serializeFragment(doc.content)\n\n const temporaryDocument = document.implementation.createHTMLDocument()\n const container = temporaryDocument.createElement('div')\n container.appendChild(fragment)\n\n return container.innerHTML\n}\n","import { Node as ProseMirrorNode } from 'prosemirror-model'\n\nexport default function isNodeEmpty(node: ProseMirrorNode): boolean {\n const defaultContent = node.type.createAndFill()?.toJSON()\n const content = node.toJSON()\n\n return JSON.stringify(defaultContent) === JSON.stringify(content)\n}\n","export default function createStyleTag(style: string): HTMLStyleElement {\n const tipTapStyleTag = (<HTMLStyleElement>document.querySelector('style[data-tiptap-style]'))\n\n if (tipTapStyleTag !== null) {\n return tipTapStyleTag\n }\n\n const styleNode = document.createElement('style')\n\n styleNode.setAttribute('data-tiptap-style', '')\n styleNode.innerHTML = style\n document.getElementsByTagName('head')[0].appendChild(styleNode)\n\n return styleNode\n}\n","import { EditorState, Transaction } from 'prosemirror-state'\nimport { Editor } from './Editor'\nimport {\n SingleCommands,\n ChainedCommands,\n CanCommands,\n AnyCommands,\n CommandProps,\n} from './types'\n\nexport default class CommandManager {\n\n editor: Editor\n\n commands: AnyCommands\n\n constructor(editor: Editor, commands: AnyCommands) {\n this.editor = editor\n this.commands = commands\n }\n\n public createCommands(): SingleCommands {\n const { commands, editor } = this\n const { state, view } = editor\n const { tr } = state\n const props = this.buildProps(tr)\n\n return Object.fromEntries(Object\n .entries(commands)\n .map(([name, command]) => {\n const method = (...args: any[]) => {\n const callback = command(...args)(props)\n\n if (!tr.getMeta('preventDispatch')) {\n view.dispatch(tr)\n }\n\n return callback\n }\n\n return [name, method]\n })) as unknown as SingleCommands\n }\n\n public createChain(startTr?: Transaction, shouldDispatch = true): ChainedCommands {\n const { commands, editor } = this\n const { state, view } = editor\n const callbacks: boolean[] = []\n const hasStartTransaction = !!startTr\n const tr = startTr || state.tr\n\n const run = () => {\n if (!hasStartTransaction && shouldDispatch && !tr.getMeta('preventDispatch')) {\n view.dispatch(tr)\n }\n\n return callbacks.every(callback => callback === true)\n }\n\n const chain = {\n ...Object.fromEntries(Object.entries(commands).map(([name, command]) => {\n const chainedCommand = (...args: never[]) => {\n const props = this.buildProps(tr, shouldDispatch)\n const callback = command(...args)(props)\n\n callbacks.push(callback)\n\n return chain\n }\n\n return [name, chainedCommand]\n })),\n run,\n } as unknown as ChainedCommands\n\n return chain\n }\n\n public createCan(startTr?: Transaction): CanCommands {\n const { commands, editor } = this\n const { state } = editor\n const dispatch = undefined\n const tr = startTr || state.tr\n const props = this.buildProps(tr, dispatch)\n const formattedCommands = Object.fromEntries(Object\n .entries(commands)\n .map(([name, command]) => {\n return [name, (...args: never[]) => command(...args)({ ...props, dispatch })]\n })) as unknown as SingleCommands\n\n return {\n ...formattedCommands,\n chain: () => this.createChain(tr, dispatch),\n } as CanCommands\n }\n\n public buildProps(tr: Transaction, shouldDispatch = true): CommandProps {\n const { editor, commands } = this\n const { state, view } = editor\n\n if (state.storedMarks) {\n tr.setStoredMarks(state.storedMarks)\n }\n\n const props: CommandProps = {\n tr,\n editor,\n view,\n state: this.chainableState(tr, state),\n dispatch: shouldDispatch\n ? () => undefined\n : undefined,\n chain: () => this.createChain(tr),\n can: () => this.createCan(tr),\n get commands() {\n return Object.fromEntries(Object\n .entries(commands)\n .map(([name, command]) => {\n return [name, (...args: never[]) => command(...args)(props)]\n })) as unknown as SingleCommands\n },\n }\n\n return props\n }\n\n public chainableState(tr: Transaction, state: EditorState): EditorState {\n let { selection } = tr\n let { doc } = tr\n let { storedMarks } = tr\n\n return {\n ...state,\n schema: state.schema,\n plugins: state.plugins,\n apply: state.apply.bind(state),\n applyTransaction: state.applyTransaction.bind(state),\n reconfigure: state.reconfigure.bind(state),\n toJSON: state.toJSON.bind(state),\n get storedMarks() {\n return storedMarks\n },\n get selection() {\n return selection\n },\n get doc() {\n return doc\n },\n get tr() {\n selection = tr.selection\n doc = tr.doc\n storedMarks = tr.storedMarks\n\n return tr\n },\n }\n }\n\n}\n","import { AnyExtension, RemoveThis } from '../types'\n\nexport default function getExtensionField<T = any>(\n extension: AnyExtension,\n field: string,\n context: Record<string, any> = {},\n): RemoveThis<T> {\n\n if (extension.config[field] === undefined && extension.parent) {\n return getExtensionField(extension.parent, field, context)\n }\n\n if (typeof extension.config[field] === 'function') {\n const value = extension.config[field].bind({\n ...context,\n parent: extension.parent\n ? getExtensionField(extension.parent, field, context)\n : null,\n })\n\n return value\n }\n\n return extension.config[field]\n}\n","import { Extensions } from '../types'\nimport { Extension } from '../Extension'\nimport { Node } from '../Node'\nimport { Mark } from '../Mark'\n\nexport default function splitExtensions(extensions: Extensions) {\n const baseExtensions = extensions.filter(extension => extension.type === 'extension') as Extension[]\n const nodeExtensions = extensions.filter(extension => extension.type === 'node') as Node[]\n const markExtensions = extensions.filter(extension => extension.type === 'mark') as Mark[]\n\n return {\n baseExtensions,\n nodeExtensions,\n markExtensions,\n }\n}\n","import splitExtensions from './splitExtensions'\nimport getExtensionField from './getExtensionField'\nimport {\n Extensions,\n GlobalAttributes,\n Attributes,\n Attribute,\n ExtensionAttribute,\n AnyConfig,\n} from '../types'\nimport { NodeConfig, MarkConfig } from '..'\n\n/**\n * Get a list of all extension attributes defined in `addAttribute` and `addGlobalAttribute`.\n * @param extensions List of extensions\n */\nexport default function getAttributesFromExtensions(extensions: Extensions): ExtensionAttribute[] {\n const extensionAttributes: ExtensionAttribute[] = []\n const { nodeExtensions, markExtensions } = splitExtensions(extensions)\n const nodeAndMarkExtensions = [...nodeExtensions, ...markExtensions]\n const defaultAttribute: Required<Attribute> = {\n default: null,\n rendered: true,\n renderHTML: null,\n parseHTML: null,\n keepOnSplit: true,\n }\n\n extensions.forEach(extension => {\n const context = {\n name: extension.name,\n options: extension.options,\n }\n\n const addGlobalAttributes = getExtensionField<AnyConfig['addGlobalAttributes']>(\n extension,\n 'addGlobalAttributes',\n context,\n )\n\n if (!addGlobalAttributes) {\n return\n }\n\n // TODO: remove `as GlobalAttributes`\n const globalAttributes = addGlobalAttributes() as GlobalAttributes\n\n globalAttributes.forEach(globalAttribute => {\n globalAttribute.types.forEach(type => {\n Object\n .entries(globalAttribute.attributes)\n .forEach(([name, attribute]) => {\n extensionAttributes.push({\n type,\n name,\n attribute: {\n ...defaultAttribute,\n ...attribute,\n },\n })\n })\n })\n })\n })\n\n nodeAndMarkExtensions.forEach(extension => {\n const context = {\n name: extension.name,\n options: extension.options,\n }\n\n const addAttributes = getExtensionField<NodeConfig['addAttributes'] | MarkConfig['addAttributes']>(\n extension,\n 'addAttributes',\n context,\n )\n\n if (!addAttributes) {\n return\n }\n\n // TODO: remove `as Attributes`\n const attributes = addAttributes() as Attributes\n\n Object\n .entries(attributes)\n .forEach(([name, attribute]) => {\n extensionAttributes.push({\n type: extension.name,\n name,\n attribute: {\n ...defaultAttribute,\n ...attribute,\n },\n })\n })\n })\n\n return extensionAttributes\n}\n","export default function mergeAttributes(...objects: Record<string, any>[]): Record<string, any> {\n return objects\n .filter(item => !!item)\n .reduce((items, item) => {\n const mergedAttributes = { ...items }\n\n Object.entries(item).forEach(([key, value]) => {\n const exists = mergedAttributes[key]\n\n if (!exists) {\n mergedAttributes[key] = value\n return\n }\n\n if (key === 'class') {\n mergedAttributes[key] = [mergedAttributes[key], value].join(' ')\n } else if (key === 'style') {\n mergedAttributes[key] = [mergedAttributes[key], value].join('; ')\n } else {\n mergedAttributes[key] = value\n }\n })\n\n return mergedAttributes\n }, {})\n}\n","import { Node, Mark } from 'prosemirror-model'\nimport { ExtensionAttribute } from '../types'\nimport mergeAttributes from '../utilities/mergeAttributes'\n\nexport default function getRenderedAttributes(nodeOrMark: Node | Mark, extensionAttributes: ExtensionAttribute[]): Record<string, any> {\n return extensionAttributes\n .filter(item => item.attribute.rendered)\n .map(item => {\n if (!item.attribute.renderHTML) {\n return {\n [item.name]: nodeOrMark.attrs[item.name],\n }\n }\n\n return item.attribute.renderHTML(nodeOrMark.attrs) || {}\n })\n .reduce((attributes, attribute) => {\n return mergeAttributes(attributes, attribute)\n }, {})\n}\n","export default function isEmptyObject(object = {}): boolean {\n return Object.keys(object).length === 0 && object.constructor === Object\n}\n","export default function fromString(value: any): any {\n if (typeof value !== 'string') {\n return value\n }\n\n if (value.match(/^\\d*(\\.\\d+)?$/)) {\n return Number(value)\n }\n\n if (value === 'true') {\n return true\n }\n\n if (value === 'false') {\n return false\n }\n\n return value\n}\n","import { ParseRule } from 'prosemirror-model'\nimport { ExtensionAttribute } from '../types'\nimport fromString from '../utilities/fromString'\n\n/**\n * This function merges extension attributes into parserule attributes (`attrs` or `getAttrs`).\n * Cancels when `getAttrs` returned `false`.\n * @param parseRule ProseMirror ParseRule\n * @param extensionAttributes List of attributes to inject\n */\nexport default function injectExtensionAttributesToParseRule(parseRule: ParseRule, extensionAttributes: ExtensionAttribute[]): ParseRule {\n if (parseRule.style) {\n return parseRule\n }\n\n return {\n ...parseRule,\n getAttrs: node => {\n const oldAttributes = parseRule.getAttrs\n ? parseRule.getAttrs(node)\n : parseRule.attrs\n\n if (oldAttributes === false) {\n return false\n }\n\n const newAttributes = extensionAttributes\n .filter(item => item.attribute.rendered)\n .reduce((items, item) => {\n const attributes = item.attribute.parseHTML\n ? item.attribute.parseHTML(node as HTMLElement) || {}\n : {\n [item.name]: fromString((node as HTMLElement).getAttribute(item.name)),\n }\n\n const filteredAttributes = Object.fromEntries(Object.entries(attributes)\n .filter(([, value]) => value !== undefined && value !== null))\n\n return {\n ...items,\n ...filteredAttributes,\n }\n }, {})\n\n return { ...oldAttributes, ...newAttributes }\n },\n }\n}\n","import { MaybeReturnType } from '../types'\n\n/**\n * Optionally calls `value` as a function.\n * Otherwise it is returned directly.\n * @param value Function or any value.\n * @param context Optional context to bind to function.\n * @param props Optional props to pass to function.\n */\nexport default function callOrReturn<T>(value: T, context: any = undefined, ...props: any[]): MaybeReturnType<T> {\n if (typeof value === 'function') {\n if (context) {\n return value.bind(context)(...props)\n }\n\n return value(...props)\n }\n\n return value as MaybeReturnType<T>\n}\n","import { NodeSpec, MarkSpec, Schema } from 'prosemirror-model'\nimport { AnyConfig, Extensions } from '../types'\nimport { NodeConfig, MarkConfig } from '..'\nimport splitExtensions from './splitExtensions'\nimport getAttributesFromExtensions from './getAttributesFromExtensions'\nimport getRenderedAttributes from './getRenderedAttributes'\nimport isEmptyObject from '../utilities/isEmptyObject'\nimport injectExtensionAttributesToParseRule from './injectExtensionAttributesToParseRule'\nimport callOrReturn from '../utilities/callOrReturn'\nimport getExtensionField from './getExtensionField'\n\nfunction cleanUpSchemaItem<T>(data: T) {\n return Object.fromEntries(Object.entries(data).filter(([key, value]) => {\n if (key === 'attrs' && isEmptyObject(value)) {\n return false\n }\n\n return value !== null && value !== undefined\n })) as T\n}\n\nexport default function getSchemaByResolvedExtensions(extensions: Extensions): Schema {\n const allAttributes = getAttributesFromExtensions(extensions)\n const { nodeExtensions, markExtensions } = splitExtensions(extensions)\n const topNode = nodeExtensions.find(extension => getExtensionField(extension, 'topNode'))?.name\n\n const nodes = Object.fromEntries(nodeExtensions.map(extension => {\n const extensionAttributes = allAttributes.filter(attribute => attribute.type === extension.name)\n const context = {\n name: extension.name,\n options: extension.options,\n }\n\n const extraNodeFields = extensions.reduce((fields, e) => {\n const extendNodeSchema = getExtensionField<AnyConfig['extendNodeSchema']>(\n e,\n 'extendNodeSchema',\n context,\n )\n\n return {\n ...fields,\n ...(extendNodeSchema ? extendNodeSchema(extension) : {}),\n }\n }, {})\n\n const schema: NodeSpec = cleanUpSchemaItem({\n ...extraNodeFields,\n content: callOrReturn(getExtensionField<NodeConfig['content']>(extension, 'content', context)),\n marks: callOrReturn(getExtensionField<NodeConfig['marks']>(extension, 'marks', context)),\n group: callOrReturn(getExtensionField<NodeConfig['group']>(extension, 'group', context)),\n inline: callOrReturn(getExtensionField<NodeConfig['inline']>(extension, 'inline', context)),\n atom: callOrReturn(getExtensionField<NodeConfig['atom']>(extension, 'atom', context)),\n selectable: callOrReturn(getExtensionField<NodeConfig['selectable']>(extension, 'selectable', context)),\n draggable: callOrReturn(getExtensionField<NodeConfig['draggable']>(extension, 'draggable', context)),\n code: callOrReturn(getExtensionField<NodeConfig['code']>(extension, 'code', context)),\n defining: callOrReturn(getExtensionField<NodeConfig['defining']>(extension, 'defining', context)),\n isolating: callOrReturn(getExtensionField<NodeConfig['isolating']>(extension, 'isolating', context)),\n attrs: Object.fromEntries(extensionAttributes.map(extensionAttribute => {\n return [extensionAttribute.name, { default: extensionAttribute?.attribute?.default }]\n })),\n })\n\n const parseHTML = callOrReturn(getExtensionField<NodeConfig['parseHTML']>(extension, 'parseHTML', context))\n\n if (parseHTML) {\n schema.parseDOM = parseHTML\n .map(parseRule => injectExtensionAttributesToParseRule(parseRule, extensionAttributes))\n }\n\n const renderHTML = getExtensionField<NodeConfig['renderHTML']>(extension, 'renderHTML', context)\n\n if (renderHTML) {\n schema.toDOM = node => renderHTML({\n node,\n HTMLAttributes: getRenderedAttributes(node, extensionAttributes),\n })\n }\n\n return [extension.name, schema]\n }))\n\n const marks = Object.fromEntries(markExtensions.map(extension => {\n const extensionAttributes = allAttributes.filter(attribute => attribute.type === extension.name)\n const context = {\n name: extension.name,\n options: extension.options,\n }\n\n const extraMarkFields = extensions.reduce((fields, e) => {\n const extendMarkSchema = getExtensionField<AnyConfig['extendMarkSchema']>(\n e,\n 'extendMarkSchema',\n context,\n )\n\n return {\n ...fields,\n ...(extendMarkSchema ? extendMarkSchema(extension) : {}),\n }\n }, {})\n\n const schema: MarkSpec = cleanUpSchemaItem({\n ...extraMarkFields,\n inclusive: callOrReturn(getExtensionField<NodeConfig['inclusive']>(extension, 'inclusive', context)),\n excludes: callOrReturn(getExtensionField<NodeConfig['excludes']>(extension, 'excludes', context)),\n group: callOrReturn(getExtensionField<NodeConfig['group']>(extension, 'group', context)),\n spanning: callOrReturn(getExtensionField<NodeConfig['spanning']>(extension, 'spanning', context)),\n attrs: Object.fromEntries(extensionAttributes.map(extensionAttribute => {\n return [extensionAttribute.name, { default: extensionAttribute?.attribute?.default }]\n })),\n })\n\n const parseHTML = callOrReturn(getExtensionField<MarkConfig['parseHTML']>(extension, 'parseHTML', context))\n\n if (parseHTML) {\n schema.parseDOM = parseHTML\n .map(parseRule => injectExtensionAttributesToParseRule(parseRule, extensionAttributes))\n }\n\n const renderHTML = getExtensionField<MarkConfig['renderHTML']>(extension, 'renderHTML', context)\n\n if (renderHTML) {\n schema.toDOM = mark => renderHTML({\n mark,\n HTMLAttributes: getRenderedAttributes(mark, extensionAttributes),\n })\n }\n\n return [extension.name, schema]\n }))\n\n return new Schema({\n topNode,\n nodes,\n marks,\n })\n}\n","import { MarkType, NodeType, Schema } from 'prosemirror-model'\n\nexport default function getSchemaTypeByName(name: string, schema: Schema): NodeType | MarkType | null {\n if (schema.nodes[name]) {\n return schema.nodes[name]\n }\n\n if (schema.marks[name]) {\n return schema.marks[name]\n }\n\n return null\n}\n","import { keymap } from 'prosemirror-keymap'\nimport { Schema, Node as ProsemirrorNode } from 'prosemirror-model'\nimport { inputRules as inputRulesPlugin } from 'prosemirror-inputrules'\nimport { EditorView, Decoration } from 'prosemirror-view'\nimport { Plugin } from 'prosemirror-state'\nimport { Editor } from './Editor'\nimport { Extensions, RawCommands, AnyConfig } from './types'\nimport getExtensionField from './helpers/getExtensionField'\nimport getSchemaByResolvedExtensions from './helpers/getSchemaByResolvedExtensions'\nimport getSchemaTypeByName from './helpers/getSchemaTypeByName'\nimport getNodeType from './helpers/getNodeType'\nimport splitExtensions from './helpers/splitExtensions'\nimport getAttributesFromExtensions from './helpers/getAttributesFromExtensions'\nimport getRenderedAttributes from './helpers/getRenderedAttributes'\nimport callOrReturn from './utilities/callOrReturn'\nimport { NodeConfig } from '.'\n\nexport default class ExtensionManager {\n\n editor: Editor\n\n schema: Schema\n\n extensions: Extensions\n\n splittableMarks: string[] = []\n\n constructor(extensions: Extensions, editor: Editor) {\n this.editor = editor\n this.extensions = ExtensionManager.resolve(extensions)\n this.schema = getSchemaByResolvedExtensions(this.extensions)\n\n this.extensions.forEach(extension => {\n const context = {\n name: extension.name,\n options: extension.options,\n editor: this.editor,\n type: getSchemaTypeByName(extension.name, this.schema),\n }\n\n if (extension.type === 'mark') {\n const keepOnSplit = callOrReturn(getExtensionField(extension, 'keepOnSplit', context)) ?? true\n\n if (keepOnSplit) {\n this.splittableMarks.push(extension.name)\n }\n }\n\n const onBeforeCreate = getExtensionField<AnyConfig['onBeforeCreate']>(\n extension,\n 'onBeforeCreate',\n context,\n )\n\n if (onBeforeCreate) {\n this.editor.on('beforeCreate', onBeforeCreate)\n }\n\n const onCreate = getExtensionField<AnyConfig['onCreate']>(\n extension,\n 'onCreate',\n context,\n )\n\n if (onCreate) {\n this.editor.on('create', onCreate)\n }\n\n const onUpdate = getExtensionField<AnyConfig['onUpdate']>(\n extension,\n 'onUpdate',\n context,\n )\n\n if (onUpdate) {\n this.editor.on('update', onUpdate)\n }\n\n const onSelectionUpdate = getExtensionField<AnyConfig['onSelectionUpdate']>(\n extension,\n 'onSelectionUpdate',\n context,\n )\n\n if (onSelectionUpdate) {\n this.editor.on('selectionUpdate', onSelectionUpdate)\n }\n\n const onTransaction = getExtensionField<AnyConfig['onTransaction']>(\n extension,\n 'onTransaction',\n context,\n )\n\n if (onTransaction) {\n this.editor.on('transaction', onTransaction)\n }\n\n const onFocus = getExtensionField<AnyConfig['onFocus']>(\n extension,\n 'onFocus',\n context,\n )\n\n if (onFocus) {\n this.editor.on('focus', onFocus)\n }\n\n const onBlur = getExtensionField<AnyConfig['onBlur']>(\n extension,\n 'onBlur',\n context,\n )\n\n if (onBlur) {\n this.editor.on('blur', onBlur)\n }\n\n const onDestroy = getExtensionField<AnyConfig['onDestroy']>(\n extension,\n 'onDestroy',\n context,\n )\n\n if (onDestroy) {\n this.editor.on('destroy', onDestroy)\n }\n })\n }\n\n static resolve(extensions: Extensions): Extensions {\n return ExtensionManager.sort(ExtensionManager.flatten(extensions))\n }\n\n static flatten(extensions: Extensions): Extensions {\n return extensions\n .map(extension => {\n const context = {\n name: extension.name,\n options: extension.options,\n }\n\n const addExtensions = getExtensionField<AnyConfig['addExtensions']>(\n extension,\n 'addExtensions',\n context,\n )\n\n if (addExtensions) {\n return [\n extension,\n ...this.flatten(addExtensions()),\n ]\n }\n\n return extension\n })\n // `Infinity` will break TypeScript so we set a number that is probably high enough\n .flat(10)\n }\n\n static sort(extensions: Extensions): Extensions {\n const defaultPriority = 100\n\n return extensions.sort((a, b) => {\n const priorityA = getExtensionField<AnyConfig['priority']>(a, 'priority') || defaultPriority\n const priorityB = getExtensionField<AnyConfig['priority']>(b, 'priority') || defaultPriority\n\n if (priorityA > priorityB) {\n return -1\n }\n\n if (priorityA < priorityB) {\n return 1\n }\n\n return 0\n })\n }\n\n get commands(): RawCommands {\n return this.extensions.reduce((commands, extension) => {\n const context = {\n name: extension.name,\n options: extension.options,\n editor: this.editor,\n type: getSchemaTypeByName(extension.name, this.schema),\n }\n\n const addCommands = getExtensionField<AnyConfig['addCommands']>(\n extension,\n 'addCommands',\n context,\n )\n\n if (!addCommands) {\n return commands\n }\n\n return {\n ...commands,\n ...addCommands(),\n }\n }, {} as RawCommands)\n }\n\n get plugins(): Plugin[] {\n return [...this.extensions]\n .reverse()\n .map(extension => {\n const context = {\n name: extension.name,\n options: extension.options,\n editor: this.editor,\n type: getSchemaTypeByName(extension.name, this.schema),\n }\n\n const plugins: Plugin[] = []\n\n const addKeyboardShortcuts = getExtensionField<AnyConfig['addKeyboardShortcuts']>(\n extension,\n 'addKeyboardShortcuts',\n context,\n )\n\n if (addKeyboardShortcuts) {\n const bindings = Object.fromEntries(\n Object\n .entries(addKeyboardShortcuts())\n .map(([shortcut, method]) => {\n return [shortcut, () => method({ editor: this.editor })]\n }),\n )\n\n const keyMapPlugin = keymap(bindings)\n\n plugins.push(keyMapPlugin)\n }\n\n const addInputRules = getExtensionField<AnyConfig['addInputRules']>(\n extension,\n 'addInputRules',\n context,\n )\n\n if (this.editor.options.enableInputRules && addInputRules) {\n const inputRules = addInputRules()\n const inputRulePlugins = inputRules.length\n ? [inputRulesPlugin({ rules: inputRules })]\n : []\n\n plugins.push(...inputRulePlugins)\n }\n\n const addPasteRules = getExtensionField<AnyConfig['addPasteRules']>(\n extension,\n 'addPasteRules',\n context,\n )\n\n if (this.editor.options.enablePasteRules && addPasteRules) {\n const pasteRulePlugins = addPasteRules()\n\n plugins.push(...pasteRulePlugins)\n }\n\n const addProseMirrorPlugins = getExtensionField<AnyConfig['addProseMirrorPlugins']>(\n extension,\n 'addProseMirrorPlugins',\n context,\n )\n\n if (addProseMirrorPlugins) {\n const proseMirrorPlugins = addProseMirrorPlugins()\n\n plugins.push(...proseMirrorPlugins)\n }\n\n return plugins\n })\n .flat()\n }\n\n get attributes() {\n return getAttributesFromExtensions(this.extensions)\n }\n\n get nodeViews() {\n const { editor } = this\n const { nodeExtensions } = splitExtensions(this.extensions)\n\n return Object.fromEntries(nodeExtensions\n .filter(extension => !!getExtensionField(extension, 'addNodeView'))\n .map(extension => {\n const extensionAttributes = this.attributes.filter(attribute => attribute.type === extension.name)\n const context = {\n name: extension.name,\n options: extension.options,\n editor,\n type: getNodeType(extension.name, this.schema),\n }\n const addNodeView = getExtensionField<NodeConfig['addNodeView']>(\n extension,\n 'addNodeView',\n context,\n )\n\n if (!addNodeView) {\n return []\n }\n\n const nodeview = (\n node: ProsemirrorNode,\n view: EditorView,\n getPos: (() => number) | boolean,\n decorations: Decoration[],\n ) => {\n const HTMLAttributes = getRenderedAttributes(node, extensionAttributes)\n\n return addNodeView()({\n editor,\n node,\n getPos,\n decorations,\n HTMLAttributes,\n extension,\n })\n }\n\n return [extension.name, nodeview]\n }))\n }\n\n get textSerializers() {\n const { editor } = this\n const { nodeExtensions } = splitExtensions(this.extensions)\n\n return Object.fromEntries(nodeExtensions\n .filter(extension => !!getExtensionField(extension, 'renderText'))\n .map(extension => {\n const context = {\n name: extension.name,\n options: extension.options,\n editor,\n type: getNodeType(extension.name, this.schema),\n }\n\n const renderText = getExtensionField<NodeConfig['renderText']>(extension, 'renderText', context)\n\n if (!renderText) {\n return []\n }\n\n const textSerializer = (props: { node: ProsemirrorNode }) => renderText(props)\n\n return [extension.name, textSerializer]\n }))\n }\n\n}\n","export default class EventEmitter {\n\n private callbacks: { [key: string]: Function[] } = {}\n\n public on(event: string, fn: Function): this {\n if (!this.callbacks[event]) {\n this.callbacks[event] = []\n }\n\n this.callbacks[event].push(fn)\n\n return this\n }\n\n protected emit(event: string, ...args: any): this {\n const callbacks = this.callbacks[event]\n\n if (callbacks) {\n callbacks.forEach(callback => callback.apply(this, args))\n }\n\n return this\n }\n\n public off(event: string, fn?: Function): this {\n const callbacks = this.callbacks[event]\n\n if (callbacks) {\n if (fn) {\n this.callbacks[event] = callbacks.filter(callback => callback !== fn)\n } else {\n delete this.callbacks[event]\n }\n }\n\n return this\n }\n\n protected removeAllListeners(): void {\n this.callbacks = {}\n }\n}\n","// see: https://github.com/mesqueeb/is-what/blob/88d6e4ca92fb2baab6003c54e02eedf4e729e5ab/src/index.ts\n\nfunction getType(payload: any): string {\n return Object.prototype.toString.call(payload).slice(8, -1)\n}\n\nexport default function isPlainObject(payload: any): payload is Record<string, any> {\n if (getType(payload) !== 'Object') return false\n return payload.constructor === Object && Object.getPrototypeOf(payload) === Object.prototype\n}\n","import isPlainObject from './isPlainObject'\n\nexport default function mergeDeep(target: Record<string, any>, source: Record<string, any>): Record<string, any> {\n const output = { ...target }\n\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n if (isPlainObject(source[key])) {\n if (!(key in target)) {\n Object.assign(output, { [key]: source[key] })\n } else {\n output[key] = mergeDeep(target[key], source[key])\n }\n } else {\n Object.assign(output, { [key]: source[key] })\n }\n })\n }\n\n return output\n}\n","import { Plugin, Transaction } from 'prosemirror-state'\nimport { InputRule } from 'prosemirror-inputrules'\nimport { Editor } from './Editor'\nimport { Node } from './Node'\nimport { Mark } from './Mark'\nimport mergeDeep from './utilities/mergeDeep'\nimport {\n Extensions,\n GlobalAttributes,\n RawCommands,\n ParentConfig,\n KeyboardShortcutCommand,\n} from './types'\nimport { ExtensionConfig } from '.'\n\ndeclare module '@tiptap/core' {\n interface ExtensionConfig<Options = any> {\n [key: string]: any;\n\n /**\n * Name\n */\n name: string,\n\n /**\n * Priority\n */\n priority?: number,\n\n /**\n * Default options\n */\n defaultOptions?: Options,\n\n /**\n * Global attributes\n */\n addGlobalAttributes?: (this: {\n name: string,\n options: Options,\n parent: ParentConfig<ExtensionConfig<Options>>['addGlobalAttributes'],\n }) => GlobalAttributes | {},\n\n /**\n * Raw\n */\n addCommands?: (this: {\n name: string,\n options: Options,\n editor: Editor,\n parent: ParentConfig<ExtensionConfig<Options>>['addCommands'],\n }) => Partial<RawCommands>,\n\n /**\n * Keyboard shortcuts\n */\n addKeyboardShortcuts?: (this: {\n name: string,\n options: Options,\n editor: Editor,\n parent: ParentConfig<ExtensionConfig<Options>>['addKeyboardShortcuts'],\n }) => {\n [key: string]: KeyboardShortcutCommand,\n },\n\n /**\n * Input rules\n */\n addInputRules?: (this: {\n name: string,\n options: Options,\n editor: Editor,\n parent: ParentConfig<ExtensionConfig<Options>>['addInputRules'],\n }) => InputRule[],\n\n /**\n * Paste rules\n */\n addPasteRules?: (this: {\n name: string,\n options: Options,\n editor: Editor,\n parent: ParentConfig<ExtensionConfig<Options>>['addPasteRules'],\n }) => Plugin[],\n\n /**\n * ProseMirror plugins\n */\n addProseMirrorPlugins?: (this: {\n name: string,\n options: Options,\n editor: Editor,\n parent: ParentConfig<ExtensionConfig<Options>>['addProseMirrorPlugins'],\n }) => Plugin[],\n\n /**\n * Extensions\n */\n addExtensions?: (this: {\n name: string,\n options: Options,\n parent: ParentConfig<ExtensionConfig<Options>>['addExtensions'],\n }) => Extensions,\n\n /**\n * Extend Node Schema\n */\n extendNodeSchema?: ((\n this: {\n name: string,\n options: Options,\n parent: ParentConfig<ExtensionConfig<Options>>['extendNodeSchema'],\n },\n extension: Node,\n ) => Record<string, any>) | null,\n\n /**\n * Extend Mark Schema\n */\n extendMarkSchema?: ((\n this: {\n name: string,\n options: Options,\n parent: ParentConfig<ExtensionConfig<Options>>['extendMarkSchema'],\n },\n extension: Mark,\n ) => Record<string, any>) | null,\n\n /**\n * The editor is not ready yet.\n */\n onBeforeCreate?: ((this: {\n name: string,\n options: Options,\n editor: Editor,\n parent: ParentConfig<ExtensionConfig<Options>>['onBeforeCreate'],\n }) => void) | null,\n\n /**\n * The editor is ready.\n */\n onCreate?: ((this: {\n name: string,\n options: Options,\n editor: Editor,\n parent: ParentConfig<ExtensionConfig<Options>>['onCreate'],\n }) => void) | null,\n\n /**\n * The content has changed.\n */\n onUpdate?: ((this: {\n name: string,\n options: Options,\n editor: Editor,\n parent: ParentConfig<ExtensionConfig<Options>>['onUpdate'],\n }) => void) | null,\n\n /**\n * The selection has changed.\n */\n onSelectionUpdate?: ((this: {\n name: string,\n options: Options,\n editor: Editor,\n parent: ParentConfig<ExtensionConfig<Options>>['onSelectionUpdate'],\n }) => void) | null,\n\n /**\n * The editor state has changed.\n */\n onTransaction?: ((\n this: {\n name: string,\n options: Options,\n editor: Editor,\n parent: ParentConfig<ExtensionConfig<Options>>['onTransaction'],\n },\n props: {\n transaction: Transaction,\n },\n ) => void) | null,\n\n /**\n * The editor is focused.\n */\n onFocus?: ((\n this: {\n name: string,\n options: Options,\n editor: Editor,\n parent: ParentConfig<ExtensionConfig<Options>>['onFocus'],\n },\n props: {\n event: FocusEvent,\n },\n ) => void) | null,\n\n /**\n * The editor isn’t focused anymore.\n */\n onBlur?: ((\n this: {\n name: string,\n options: Options,\n editor: Editor,\n parent: ParentConfig<ExtensionConfig<Options>>['onBlur'],\n },\n props: {\n event: FocusEvent,\n },\n ) => void) | null,\n\n /**\n * The editor is destroyed.\n */\n onDestroy?: ((this: {\n name: string,\n options: Options,\n editor: Editor,\n parent: ParentConfig<ExtensionConfig<Options>>['onDestroy'],\n }) => void) | null,\n }\n}\n\nexport class Extension<Options = any> {\n type = 'extension'\n\n name = 'extension'\n\n parent: Extension | null = null\n\n child: Extension | null = null\n\n options: Options\n\n config: ExtensionConfig = {\n name: this.name,\n defaultOptions: {},\n }\n\n constructor(config: Partial<ExtensionConfig<Options>> = {}) {\n this.config = {\n ...this.config,\n ...config,\n }\n\n this.name = this.config.name\n this.options = this.config.defaultOptions\n }\n\n static create<O>(config: Partial<ExtensionConfig<O>> = {}) {\n return new Extension<O>(config)\n }\n\n configure(options: Partial<Options> = {}) {\n // return a new instance so we can use the same extension\n // with different calls of `configure`\n const extension = this.extend()\n\n extension.options = mergeDeep(this.options, options) as Options\n\n return extension\n }\n\n extend<ExtendedOptions = Options>(extendedConfig: Partial<ExtensionConfig<ExtendedOptions>> = {}) {\n const extension = new Extension<ExtendedOptions>(extendedConfig)\n\n extension.parent = this\n\n this.child = extension\n\n extension.name = extendedConfig.name\n ? extendedConfig.name\n : extension.parent.name\n\n extension.options = extendedConfig.defaultOptions\n ? extendedConfig.defaultOptions\n : extension.parent.options\n\n return extension\n }\n}\n","import { Editor } from '@tiptap/core'\nimport { Plugin, PluginKey } from 'prosemirror-state'\nimport { Extension } from '../Extension'\n\nconst textBetween = (\n editor: Editor,\n from: number,\n to: number,\n blockSeparator?: string,\n leafText?: string,\n): string => {\n let text = ''\n let separated = true\n\n editor.state.doc.nodesBetween(from, to, (node, pos) => {\n const textSerializer = editor.extensionManager.textSerializers[node.type.name]\n\n if (textSerializer) {\n text += textSerializer({ node })\n separated = !blockSeparator\n } else if (node.isText) {\n text += node?.text?.slice(Math.max(from, pos) - pos, to - pos)\n separated = !blockSeparator\n } else if (node.isLeaf && leafText) {\n text += leafText\n separated = !blockSeparator\n } else if (!separated && node.isBlock) {\n text += blockSeparator\n separated = true\n }\n }, 0)\n\n return text\n}\n\nexport const ClipboardTextSerializer = Extension.create({\n name: 'editable',\n\n addProseMirrorPlugins() {\n return [\n new Plugin({\n key: new PluginKey('clipboardTextSerializer'),\n props: {\n clipboardTextSerializer: () => {\n const { editor } = this\n const { from, to } = editor.state.selection\n\n return textBetween(editor, from, to, '\\n')\n },\n },\n }),\n ]\n },\n})\n","import { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n blur: {\n /**\n * Removes focus from the editor.\n */\n blur: () => ReturnType,\n }\n }\n}\n\nexport const blur: RawCommands['blur'] = () => ({ editor, view }) => {\n requestAnimationFrame(() => {\n if (!editor.isDestroyed) {\n (view.dom as HTMLElement).blur()\n }\n })\n\n return true\n}\n","import { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n clearContent: {\n /**\n * Clear the whole document.\n */\n clearContent: (emitUpdate?: boolean) => ReturnType,\n }\n }\n}\n\nexport const clearContent: RawCommands['clearContent'] = (emitUpdate = false) => ({ commands }) => {\n return commands.setContent('', emitUpdate)\n}\n","import { liftTarget } from 'prosemirror-transform'\nimport { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n clearNodes: {\n /**\n * Normalize nodes to a simple paragraph.\n */\n clearNodes: () => ReturnType,\n }\n }\n}\n\nexport const clearNodes: RawCommands['clearNodes'] = () => ({ state, tr, dispatch }) => {\n const { selection } = tr\n const { ranges } = selection\n\n ranges.forEach(range => {\n state.doc.nodesBetween(range.$from.pos, range.$to.pos, (node, pos) => {\n if (node.type.isText) {\n return\n }\n\n const $fromPos = tr.doc.resolve(tr.mapping.map(pos))\n const $toPos = tr.doc.resolve(tr.mapping.map(pos + node.nodeSize))\n const nodeRange = $fromPos.blockRange($toPos)\n\n if (!nodeRange) {\n return\n }\n\n const targetLiftDepth = liftTarget(nodeRange)\n\n if (node.type.isTextblock && dispatch) {\n const { defaultType } = $fromPos.parent.contentMatchAt($fromPos.index())\n\n tr.setNodeMarkup(nodeRange.start, defaultType)\n }\n\n if ((targetLiftDepth || targetLiftDepth === 0) && dispatch) {\n tr.lift(nodeRange, targetLiftDepth)\n }\n })\n })\n\n return true\n}\n","import { Command, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n command: {\n /**\n * Define a command inline.\n */\n command: (fn: (props: Parameters<Command>[0]) => boolean) => ReturnType,\n }\n }\n}\n\nexport const command: RawCommands['command'] = fn => props => {\n return fn(props)\n}\n","import { createParagraphNear as originalCreateParagraphNear } from 'prosemirror-commands'\nimport { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n createParagraphNear: {\n /**\n * Create a paragraph nearby.\n */\n createParagraphNear: () => ReturnType,\n }\n }\n}\n\nexport const createParagraphNear: RawCommands['createParagraphNear'] = () => ({ state, dispatch }) => {\n return originalCreateParagraphNear(state, dispatch)\n}\n","import { NodeType } from 'prosemirror-model'\nimport getNodeType from '../helpers/getNodeType'\nimport { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n deleteNode: {\n /**\n * Delete a node.\n */\n deleteNode: (typeOrName: string | NodeType) => ReturnType,\n }\n }\n}\n\nexport const deleteNode: RawCommands['deleteNode'] = typeOrName => ({ tr, state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema)\n const $pos = tr.selection.$anchor\n\n for (let depth = $pos.depth; depth > 0; depth -= 1) {\n const node = $pos.node(depth)\n\n if (node.type === type) {\n if (dispatch) {\n const from = $pos.before(depth)\n const to = $pos.after(depth)\n\n tr.delete(from, to).scrollIntoView()\n }\n\n return true\n }\n }\n\n return false\n}\n","import { RawCommands, Range } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n deleteRange: {\n /**\n * Delete a given range.\n */\n deleteRange: (range: Range) => ReturnType,\n }\n }\n}\n\nexport const deleteRange: RawCommands['deleteRange'] = range => ({ tr, dispatch }) => {\n const { from, to } = range\n\n if (dispatch) {\n tr.delete(from, to)\n }\n\n return true\n}\n","import { deleteSelection as originalDeleteSelection } from 'prosemirror-commands'\nimport { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n deleteSelection: {\n /**\n * Delete the selection, if there is one.\n */\n deleteSelection: () => ReturnType,\n }\n }\n}\n\nexport const deleteSelection: RawCommands['deleteSelection'] = () => ({ state, dispatch }) => {\n return originalDeleteSelection(state, dispatch)\n}\n","import { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n enter: {\n /**\n * Trigger enter.\n */\n enter: () => ReturnType,\n }\n }\n}\n\nexport const enter: RawCommands['enter'] = () => ({ commands }) => {\n return commands.keyboardShortcut('Enter')\n}\n","import { exitCode as originalExitCode } from 'prosemirror-commands'\nimport { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n exitCode: {\n /**\n * Exit from a code block.\n */\n exitCode: () => ReturnType,\n }\n }\n}\n\nexport const exitCode: RawCommands['exitCode'] = () => ({ state, dispatch }) => {\n return originalExitCode(state, dispatch)\n}\n","import { Mark as ProseMirrorMark, MarkType, ResolvedPos } from 'prosemirror-model'\nimport objectIncludes from '../utilities/objectIncludes'\nimport { Range } from '../types'\n\nfunction findMarkInSet(\n marks: ProseMirrorMark[],\n type: MarkType,\n attributes: Record<string, any> = {},\n): ProseMirrorMark | undefined {\n return marks.find(item => {\n return item.type === type && objectIncludes(item.attrs, attributes)\n })\n}\n\nfunction isMarkInSet(\n marks: ProseMirrorMark[],\n type: MarkType,\n attributes: Record<string, any> = {},\n): boolean {\n return !!findMarkInSet(marks, type, attributes)\n}\n\nexport default function getMarkRange(\n $pos: ResolvedPos,\n type: MarkType,\n attributes: Record<string, any> = {},\n): Range | void {\n if (!$pos || !type) {\n return\n }\n\n const start = $pos.parent.childAfter($pos.parentOffset)\n\n if (!start.node) {\n return\n }\n\n const mark = findMarkInSet(start.node.marks, type, attributes)\n\n if (!mark) {\n return\n }\n\n let startIndex = $pos.index()\n let startPos = $pos.start() + start.offset\n let endIndex = startIndex + 1\n let endPos = startPos + start.node.nodeSize\n\n findMarkInSet(start.node.marks, type, attributes)\n\n while (startIndex > 0 && mark.isInSet($pos.parent.child(startIndex - 1).marks)) {\n startIndex -= 1\n startPos -= $pos.parent.child(startIndex).nodeSize\n }\n\n while (\n endIndex < $pos.parent.childCount\n && isMarkInSet($pos.parent.child(endIndex).marks, type, attributes)\n ) {\n endPos += $pos.parent.child(endIndex).nodeSize\n endIndex += 1\n }\n\n return {\n from: startPos,\n to: endPos,\n }\n}\n","import { TextSelection } from 'prosemirror-state'\nimport { MarkType } from 'prosemirror-model'\nimport { RawCommands } from '../types'\nimport getMarkType from '../helpers/getMarkType'\nimport getMarkRange from '../helpers/getMarkRange'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n extendMarkRange: {\n /**\n * Extends the text selection to the current mark.\n */\n extendMarkRange: (typeOrName: string | MarkType, attributes?: Record<string, any>) => ReturnType,\n }\n }\n}\n\nexport const extendMarkRange: RawCommands['extendMarkRange'] = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\n const type = getMarkType(typeOrName, state.schema)\n const { doc, selection } = tr\n const { $from, from, to } = selection\n\n if (dispatch) {\n const range = getMarkRange($from, type, attributes)\n\n if (range && range.from <= from && range.to >= to) {\n const newSelection = TextSelection.create(doc, range.from, range.to)\n\n tr.setSelection(newSelection)\n }\n }\n\n return true\n}\n","import { Command, CommandProps, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n first: {\n /**\n * Runs one command after the other and stops at the first which returns true.\n */\n first: (commands: Command[] | ((props: CommandProps) => Command[])) => ReturnType,\n }\n }\n}\n\nexport const first: RawCommands['first'] = commands => props => {\n const items = typeof commands === 'function'\n ? commands(props)\n : commands\n\n for (let i = 0; i < items.length; i += 1) {\n if (items[i](props)) {\n return true\n }\n }\n\n return false\n}\n","export default function minMax(value = 0, min = 0, max = 0): number {\n return Math.min(Math.max(value, min), max)\n}\n","export default function isClass(item: any): boolean {\n if (item.constructor?.toString().substring(0, 5) !== 'class') {\n return false\n }\n\n return true\n}\n","import isClass from './isClass'\n\nexport default function isObject(item: any): boolean {\n return (\n item\n && typeof item === 'object'\n && !Array.isArray(item)\n && !isClass(item)\n )\n}\n","import { TextSelection } from 'prosemirror-state'\nimport isObject from '../utilities/isObject'\n\nexport default function isTextSelection(value: unknown): value is TextSelection {\n return isObject(value) && value instanceof TextSelection\n}\n","import { EditorState, Selection, TextSelection } from 'prosemirror-state'\nimport { RawCommands, FocusPosition } from '../types'\nimport minMax from '../utilities/minMax'\nimport isTextSelection from '../helpers/isTextSelection'\n\nfunction resolveSelection(state: EditorState, position: FocusPosition = null) {\n if (!position) {\n return null\n }\n\n if (position === 'start' || position === true) {\n return {\n from: 0,\n to: 0,\n }\n }\n\n if (position === 'end') {\n const { size } = state.doc.content\n\n return {\n from: size,\n to: size,\n }\n }\n\n return {\n from: position,\n to: position,\n }\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n focus: {\n /**\n * Focus the editor at the given position.\n */\n focus: (position?: FocusPosition) => ReturnType,\n }\n }\n}\n\nexport const focus: RawCommands['focus'] = (position = null) => ({\n editor,\n view,\n tr,\n dispatch,\n}) => {\n const delayedFocus = () => {\n // For React we have to focus asynchronously. Otherwise wild things happen.\n // see: https://github.com/ueberdosis/tiptap/issues/1520\n requestAnimationFrame(() => {\n if (!editor.isDestroyed) {\n view.focus()\n }\n })\n }\n\n if ((view.hasFocus() && position === null) || position === false) {\n return true\n }\n\n // we don’t try to resolve a NodeSelection or CellSelection\n if (dispatch && position === null && !isTextSelection(editor.state.selection)) {\n delayedFocus()\n return true\n }\n\n const { from, to } = resolveSelection(editor.state, position) || editor.state.selection\n const { doc, storedMarks } = tr\n const minPos = Selection.atStart(doc).from\n const maxPos = Selection.atEnd(doc).to\n const resolvedFrom = minMax(from, minPos, maxPos)\n const resolvedEnd = minMax(to, minPos, maxPos)\n const selection = TextSelection.create(doc, resolvedFrom, resolvedEnd)\n const isSameSelection = editor.state.selection.eq(selection)\n\n if (dispatch) {\n if (!isSameSelection) {\n tr.setSelection(selection)\n }\n\n // `tr.setSelection` resets the stored marks\n // so we’ll restore them if the selection is the same as before\n if (isSameSelection && storedMarks) {\n tr.setStoredMarks(storedMarks)\n }\n\n delayedFocus()\n }\n\n return true\n}\n","import { CommandProps, RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n forEach: {\n /**\n * Loop through an array of items.\n */\n forEach: <T>(\n items: T[],\n fn: (\n item: T,\n props: CommandProps & {\n index: number,\n },\n ) => boolean,\n ) => ReturnType,\n }\n }\n}\n\nexport const forEach: RawCommands['forEach'] = (items, fn) => props => {\n return items.every((item, index) => fn(item, { ...props, index }))\n}\n","import { CreateNodeFromContentOptions } from '../helpers/createNodeFromContent'\nimport { RawCommands, Content } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n insertContent: {\n /**\n * Insert a node or string of HTML at the current position.\n */\n insertContent: (value: Content, options?: CreateNodeFromContentOptions) => ReturnType,\n }\n }\n}\n\nexport const insertContent: RawCommands['insertContent'] = (value, options) => ({ tr, commands }) => {\n return commands.insertContentAt({ from: tr.selection.from, to: tr.selection.to }, value, options)\n}\n","import { Selection, Transaction } from 'prosemirror-state'\nimport { ReplaceStep, ReplaceAroundStep } from 'prosemirror-transform'\n\n// source: https://github.com/ProseMirror/prosemirror-state/blob/master/src/selection.js#L466\nexport default function selectionToInsertionEnd(tr: Transaction, startLen: number, bias: number) {\n const last = tr.steps.length - 1\n\n if (last < startLen) {\n return\n }\n\n const step = tr.steps[last]\n\n if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep)) {\n return\n }\n\n const map = tr.mapping.maps[last]\n let end = 0\n\n map.forEach((_from, _to, _newFrom, newTo) => {\n if (end === 0) {\n end = newTo\n }\n })\n\n tr.setSelection(Selection.near(tr.doc.resolve(end), bias))\n}\n","import createNodeFromContent, { CreateNodeFromContentOptions } from '../helpers/createNodeFromContent'\nimport selectionToInsertionEnd from '../helpers/selectionToInsertionEnd'\nimport {\n RawCommands,\n Content,\n Range,\n} from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n insertContentAt: {\n /**\n * Insert a node or string of HTML at a specific position.\n */\n insertContentAt: (position: number | Range, value: Content, options?: CreateNodeFromContentOptions) => ReturnType,\n }\n }\n}\n\nexport const insertContentAt: RawCommands['insertContentAt'] = (position, value, options) => ({ tr, dispatch, editor }) => {\n if (dispatch) {\n const content = createNodeFromContent(value, editor.schema, {\n parseOptions: {\n preserveWhitespace: 'full',\n },\n ...(options || {}),\n })\n\n // don’t dispatch an empty fragment because this can lead to strange errors\n if (content.toString() === '<>') {\n return true\n }\n\n const { from, to } = typeof position === 'number'\n ? { from: position, to: position }\n : position\n\n tr.replaceWith(from, to, content)\n\n // set cursor at end of inserted content\n selectionToInsertionEnd(tr, tr.steps.length - 1, 1)\n }\n\n return true\n}\n","import { joinBackward as originalJoinBackward } from 'prosemirror-commands'\nimport { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n joinBackward: {\n /**\n * Join two nodes backward.\n */\n joinBackward: () => ReturnType,\n }\n }\n}\n\nexport const joinBackward: RawCommands['joinBackward'] = () => ({ state, dispatch }) => {\n return originalJoinBackward(state, dispatch)\n}\n","import { joinForward as originalJoinForward } from 'prosemirror-commands'\nimport { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n joinForward: {\n /**\n * Join two nodes forward.\n */\n joinForward: () => ReturnType,\n }\n }\n}\n\nexport const joinForward: RawCommands['joinForward'] = () => ({ state, dispatch }) => {\n return originalJoinForward(state, dispatch)\n}\n","import { RawCommands } from '../types'\n\nconst mac = typeof navigator !== 'undefined' ? /Mac/.test(navigator.platform) : false\n\nfunction normalizeKeyName(name: string) {\n const parts = name.split(/-(?!$)/)\n let result = parts[parts.length - 1]\n\n if (result === 'Space') {\n result = ' '\n }\n\n let alt\n let ctrl\n let shift\n let meta\n\n for (let i = 0; i < parts.length - 1; i += 1) {\n const mod = parts[i]\n\n if (/^(cmd|meta|m)$/i.test(mod)) {\n meta = true\n } else if (/^a(lt)?$/i.test(mod)) {\n alt = true\n } else if (/^(c|ctrl|control)$/i.test(mod)) {\n ctrl = true\n } else if (/^s(hift)?$/i.test(mod)) {\n shift = true\n } else if (/^mod$/i.test(mod)) {\n if (mac) {\n meta = true\n } else {\n ctrl = true\n }\n } else {\n throw new Error(`Unrecognized modifier name: ${mod}`)\n }\n }\n\n if (alt) {\n result = `Alt-${result}`\n }\n\n if (ctrl) {\n result = `Ctrl-${result}`\n }\n\n if (meta) {\n result = `Meta-${result}`\n }\n\n if (shift) {\n result = `Shift-${result}`\n }\n\n return result\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n keyboardShortcut: {\n /**\n * Trigger a keyboard shortcut.\n */\n keyboardShortcut: (name: string) => ReturnType,\n }\n }\n}\n\nexport const keyboardShortcut: RawCommands['keyboardShortcut'] = name => ({\n editor,\n view,\n tr,\n dispatch,\n}) => {\n const keys = normalizeKeyName(name).split(/-(?!$)/)\n const key = keys.find(item => !['Alt', 'Ctrl', 'Meta', 'Shift'].includes(item))\n const event = new KeyboardEvent('keydown', {\n key: key === 'Space'\n ? ' '\n : key,\n altKey: keys.includes('Alt'),\n ctrlKey: keys.includes('Ctrl'),\n metaKey: keys.includes('Meta'),\n shiftKey: keys.includes('Shift'),\n bubbles: true,\n cancelable: true,\n })\n\n const capturedTransaction = editor.captureTransaction(() => {\n view.someProp('handleKeyDown', f => f(view, event))\n })\n\n capturedTransaction?.steps.forEach(step => {\n const newStep = step.map(tr.mapping)\n\n if (newStep && dispatch) {\n tr.maybeStep(newStep)\n }\n })\n\n return true\n}\n","import { lift as originalLift } from 'prosemirror-commands'\nimport { NodeType } from 'prosemirror-model'\nimport { RawCommands } from '../types'\nimport isNodeActive from '../helpers/isNodeActive'\nimport getNodeType from '../helpers/getNodeType'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n lift: {\n /**\n * Removes an existing wrap.\n */\n lift: (typeOrName: string | NodeType, attributes?: Record<string, any>) => ReturnType,\n }\n }\n}\n\nexport const lift: RawCommands['lift'] = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema)\n const isActive = isNodeActive(state, type, attributes)\n\n if (!isActive) {\n return false\n }\n\n return originalLift(state, dispatch)\n}\n","import { liftEmptyBlock as originalLiftEmptyBlock } from 'prosemirror-commands'\nimport { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n liftEmptyBlock: {\n /**\n * Lift block if empty.\n */\n liftEmptyBlock: () => ReturnType,\n }\n }\n}\n\nexport const liftEmptyBlock: RawCommands['liftEmptyBlock'] = () => ({ state, dispatch }) => {\n return originalLiftEmptyBlock(state, dispatch)\n}\n","import { liftListItem as originalLiftListItem } from 'prosemirror-schema-list'\nimport { NodeType } from 'prosemirror-model'\nimport { RawCommands } from '../types'\nimport getNodeType from '../helpers/getNodeType'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n liftListItem: {\n /**\n * Lift the list item into a wrapping list.\n */\n liftListItem: (typeOrName: string | NodeType) => ReturnType,\n }\n }\n}\n\nexport const liftListItem: RawCommands['liftListItem'] = typeOrName => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema)\n\n return originalLiftListItem(type)(state, dispatch)\n}\n","import { newlineInCode as originalNewlineInCode } from 'prosemirror-commands'\nimport { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n newlineInCode: {\n /**\n * Add a newline character in code.\n */\n newlineInCode: () => ReturnType,\n }\n }\n}\n\nexport const newlineInCode: RawCommands['newlineInCode'] = () => ({ state, dispatch }) => {\n return originalNewlineInCode(state, dispatch)\n}\n","/**\n * Remove a property or an array of properties from an object\n * @param obj Object\n * @param key Key to remove\n */\nexport default function deleteProps(obj: Record<string, any>, propOrProps: string | string[]): Record<string, any> {\n const props = typeof propOrProps === 'string'\n ? [propOrProps]\n : propOrProps\n\n return Object\n .keys(obj)\n .reduce((newObj: Record<string, any>, prop) => {\n if (!props.includes(prop)) {\n newObj[prop] = obj[prop]\n }\n\n return newObj\n }, {})\n}\n","import { NodeType, MarkType } from 'prosemirror-model'\nimport getNodeType from '../helpers/getNodeType'\nimport getMarkType from '../helpers/getMarkType'\nimport getSchemaTypeNameByName from '../helpers/getSchemaTypeNameByName'\nimport deleteProps from '../utilities/deleteProps'\nimport { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n resetAttributes: {\n /**\n * Resets some node attributes to the default value.\n */\n resetAttributes: (typeOrName: string | NodeType | MarkType, attributes: string | string[]) => ReturnType,\n }\n }\n}\n\nexport const resetAttributes: RawCommands['resetAttributes'] = (typeOrName, attributes) => ({ tr, state, dispatch }) => {\n let nodeType: NodeType | null = null\n let markType: MarkType | null = null\n\n const schemaType = getSchemaTypeNameByName(\n typeof typeOrName === 'string'\n ? typeOrName\n : typeOrName.name,\n state.schema,\n )\n\n if (!schemaType) {\n return false\n }\n\n if (schemaType === 'node') {\n nodeType = getNodeType(typeOrName as NodeType, state.schema)\n }\n\n if (schemaType === 'mark') {\n markType = getMarkType(typeOrName as MarkType, state.schema)\n }\n\n if (dispatch) {\n tr.selection.ranges.forEach(range => {\n state.doc.nodesBetween(range.$from.pos, range.$to.pos, (node, pos) => {\n if (nodeType && nodeType === node.type) {\n tr.setNodeMarkup(pos, undefined, deleteProps(node.attrs, attributes))\n }\n\n if (markType && node.marks.length) {\n node.marks.forEach(mark => {\n if (markType === mark.type) {\n tr.addMark(pos, pos + node.nodeSize, markType.create(deleteProps(mark.attrs, attributes)))\n }\n })\n }\n })\n })\n }\n\n return true\n}\n","import { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n scrollIntoView: {\n /**\n * Scroll the selection into view.\n */\n scrollIntoView: () => ReturnType,\n }\n }\n}\n\nexport const scrollIntoView: RawCommands['scrollIntoView'] = () => ({ tr, dispatch }) => {\n if (dispatch) {\n tr.scrollIntoView()\n }\n\n return true\n}\n","import { selectAll as originalSelectAll } from 'prosemirror-commands'\nimport { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n selectAll: {\n /**\n * Select the whole document.\n */\n selectAll: () => ReturnType,\n }\n }\n}\n\nexport const selectAll: RawCommands['selectAll'] = () => ({ state, dispatch }) => {\n return originalSelectAll(state, dispatch)\n}\n","import { selectNodeBackward as originalSelectNodeBackward } from 'prosemirror-commands'\nimport { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n selectNodeBackward: {\n /**\n * Select a node backward.\n */\n selectNodeBackward: () => ReturnType,\n }\n }\n}\n\nexport const selectNodeBackward: RawCommands['selectNodeBackward'] = () => ({ state, dispatch }) => {\n return originalSelectNodeBackward(state, dispatch)\n}\n","import { selectNodeForward as originalSelectNodeForward } from 'prosemirror-commands'\nimport { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n selectNodeForward: {\n /**\n * Select a node forward.\n */\n selectNodeForward: () => ReturnType,\n }\n }\n}\n\nexport const selectNodeForward: RawCommands['selectNodeForward'] = () => ({ state, dispatch }) => {\n return originalSelectNodeForward(state, dispatch)\n}\n","import { selectParentNode as originalSelectParentNode } from 'prosemirror-commands'\nimport { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n selectParentNode: {\n /**\n * Select the parent node.\n */\n selectParentNode: () => ReturnType,\n }\n }\n}\n\nexport const selectParentNode: RawCommands['selectParentNode'] = () => ({ state, dispatch }) => {\n return originalSelectParentNode(state, dispatch)\n}\n","import { TextSelection } from 'prosemirror-state'\nimport { ParseOptions } from 'prosemirror-model'\nimport createDocument from '../helpers/createDocument'\nimport { RawCommands, Content } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n setContent: {\n /**\n * Replace the whole document with new content.\n */\n setContent: (\n content: Content,\n emitUpdate?: boolean,\n parseOptions?: ParseOptions,\n ) => ReturnType,\n }\n }\n}\n\nexport const setContent: RawCommands['setContent'] = (content, emitUpdate = false, parseOptions = {}) => ({ tr, editor, dispatch }) => {\n const { doc } = tr\n const document = createDocument(content, editor.schema, parseOptions)\n const selection = TextSelection.create(doc, 0, doc.content.size)\n\n if (dispatch) {\n tr.setSelection(selection)\n .replaceSelectionWith(document, false)\n .setMeta('preventUpdate', !emitUpdate)\n }\n\n return true\n}\n","import { MarkType } from 'prosemirror-model'\nimport { RawCommands } from '../types'\nimport getMarkType from '../helpers/getMarkType'\nimport getMarkAttributes from '../helpers/getMarkAttributes'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n setMark: {\n /**\n * Add a mark with new attributes.\n */\n setMark: (typeOrName: string | MarkType, attributes?: Record<string, any>) => ReturnType,\n }\n }\n}\n\nexport const setMark: RawCommands['setMark'] = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\n const { selection } = tr\n const { empty, ranges } = selection\n const type = getMarkType(typeOrName, state.schema)\n\n if (dispatch) {\n if (empty) {\n const oldAttributes = getMarkAttributes(state, type)\n\n tr.addStoredMark(type.create({\n ...oldAttributes,\n ...attributes,\n }))\n } else {\n ranges.forEach(range => {\n const from = range.$from.pos\n const to = range.$to.pos\n\n state.doc.nodesBetween(from, to, (node, pos) => {\n const trimmedFrom = Math.max(pos, from)\n const trimmedTo = Math.min(pos + node.nodeSize, to)\n const someHasMark = node.marks.find(mark => mark.type === type)\n\n // if there is already a mark of this type\n // we know that we have to merge its attributes\n // otherwise we add a fresh new mark\n if (someHasMark) {\n node.marks.forEach(mark => {\n if (type === mark.type) {\n tr.addMark(trimmedFrom, trimmedTo, type.create({\n ...mark.attrs,\n ...attributes,\n }))\n }\n })\n } else {\n tr.addMark(trimmedFrom, trimmedTo, type.create(attributes))\n }\n })\n })\n }\n }\n\n return true\n}\n","import { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n setMeta: {\n /**\n * Store a metadata property in the current transaction.\n */\n setMeta: (key: string, value: any) => ReturnType,\n }\n }\n}\n\nexport const setMeta: RawCommands['setMeta'] = (key, value) => ({ tr }) => {\n tr.setMeta(key, value)\n\n return true\n}\n","import { NodeType } from 'prosemirror-model'\nimport { setBlockType } from 'prosemirror-commands'\nimport { RawCommands } from '../types'\nimport getNodeType from '../helpers/getNodeType'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n setNode: {\n /**\n * Replace a given range with a node.\n */\n setNode: (typeOrName: string | NodeType, attributes?: Record<string, any>) => ReturnType,\n }\n }\n}\n\nexport const setNode: RawCommands['setNode'] = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema)\n\n return setBlockType(type, attributes)(state, dispatch)\n}\n","import { Selection, NodeSelection } from 'prosemirror-state'\nimport minMax from '../utilities/minMax'\nimport { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n setNodeSelection: {\n /**\n * Creates a NodeSelection.\n */\n setNodeSelection: (position: number) => ReturnType,\n }\n }\n}\n\nexport const setNodeSelection: RawCommands['setNodeSelection'] = position => ({ tr, dispatch }) => {\n if (dispatch) {\n const { doc } = tr\n const minPos = Selection.atStart(doc).from\n const maxPos = Selection.atEnd(doc).to\n const resolvedPos = minMax(position, minPos, maxPos)\n const selection = NodeSelection.create(doc, resolvedPos)\n\n tr.setSelection(selection)\n }\n\n return true\n}\n","import { Selection, TextSelection } from 'prosemirror-state'\nimport minMax from '../utilities/minMax'\nimport { RawCommands, Range } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n setTextSelection: {\n /**\n * Creates a TextSelection.\n */\n setTextSelection: (position: number | Range) => ReturnType,\n }\n }\n}\n\nexport const setTextSelection: RawCommands['setTextSelection'] = position => ({ tr, dispatch }) => {\n if (dispatch) {\n const { doc } = tr\n const { from, to } = typeof position === 'number'\n ? { from: position, to: position }\n : position\n const minPos = Selection.atStart(doc).from\n const maxPos = Selection.atEnd(doc).to\n const resolvedFrom = minMax(from, minPos, maxPos)\n const resolvedEnd = minMax(to, minPos, maxPos)\n const selection = TextSelection.create(doc, resolvedFrom, resolvedEnd)\n\n tr.setSelection(selection)\n }\n\n return true\n}\n","import { sinkListItem as originalSinkListItem } from 'prosemirror-schema-list'\nimport { NodeType } from 'prosemirror-model'\nimport { RawCommands } from '../types'\nimport getNodeType from '../helpers/getNodeType'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n sinkListItem: {\n /**\n * Sink the list item down into an inner list.\n */\n sinkListItem: (typeOrName: string | NodeType) => ReturnType,\n }\n }\n}\n\nexport const sinkListItem: RawCommands['sinkListItem'] = typeOrName => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema)\n\n return originalSinkListItem(type)(state, dispatch)\n}\n","import { ExtensionAttribute } from '../types'\n\nexport default function getSplittedAttributes(\n extensionAttributes: ExtensionAttribute[],\n typeName: string,\n attributes: Record<string, any>,\n): Record<string, any> {\n return Object.fromEntries(Object\n .entries(attributes)\n .filter(([name]) => {\n const extensionAttribute = extensionAttributes.find(item => {\n return item.type === typeName && item.name === name\n })\n\n if (!extensionAttribute) {\n return false\n }\n\n return extensionAttribute.attribute.keepOnSplit\n }))\n}\n","import { canSplit } from 'prosemirror-transform'\nimport { ContentMatch } from 'prosemirror-model'\nimport { EditorState, NodeSelection, TextSelection } from 'prosemirror-state'\nimport { RawCommands } from '../types'\nimport getSplittedAttributes from '../helpers/getSplittedAttributes'\n\nfunction defaultBlockAt(match: ContentMatch) {\n for (let i = 0; i < match.edgeCount; i += 1) {\n const { type } = match.edge(i)\n\n if (type.isTextblock && !type.hasRequiredAttrs()) {\n return type\n }\n }\n return null\n}\n\nfunction ensureMarks(state: EditorState, splittableMarks?: string[]) {\n const marks = state.storedMarks\n || (state.selection.$to.parentOffset && state.selection.$from.marks())\n\n if (marks) {\n const filteredMarks = marks.filter(mark => splittableMarks?.includes(mark.type.name))\n\n state.tr.ensureMarks(filteredMarks)\n }\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n splitBlock: {\n /**\n * Forks a new node from an existing node.\n */\n splitBlock: (options?: { keepMarks?: boolean }) => ReturnType,\n }\n }\n}\n\nexport const splitBlock: RawCommands['splitBlock'] = ({ keepMarks = true } = {}) => ({\n tr,\n state,\n dispatch,\n editor,\n}) => {\n const { selection, doc } = tr\n const { $from, $to } = selection\n const extensionAttributes = editor.extensionManager.attributes\n const newAttributes = getSplittedAttributes(\n extensionAttributes,\n $from.node().type.name,\n $from.node().attrs,\n )\n\n if (selection instanceof NodeSelection && selection.node.isBlock) {\n if (!$from.parentOffset || !canSplit(doc, $from.pos)) {\n return false\n }\n\n if (dispatch) {\n if (keepMarks) {\n ensureMarks(state, editor.extensionManager.splittableMarks)\n }\n\n tr.split($from.pos).scrollIntoView()\n }\n\n return true\n }\n\n if (!$from.parent.isBlock) {\n return false\n }\n\n if (dispatch) {\n const atEnd = $to.parentOffset === $to.parent.content.size\n\n if (selection instanceof TextSelection) {\n tr.deleteSelection()\n }\n\n const deflt = $from.depth === 0\n ? undefined\n : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)))\n\n let types = atEnd && deflt\n ? [{\n type: deflt,\n attrs: newAttributes,\n }]\n : undefined\n\n let can = canSplit(tr.doc, tr.mapping.map($from.pos), 1, types)\n\n if (\n !types\n && !can\n && canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt ? [{ type: deflt }] : undefined)\n ) {\n can = true\n types = deflt\n ? [{\n type: deflt,\n attrs: newAttributes,\n }]\n : undefined\n }\n\n if (can) {\n tr.split(tr.mapping.map($from.pos), 1, types)\n\n if (\n deflt\n && !atEnd\n && !$from.parentOffset\n && $from.parent.type !== deflt\n ) {\n const first = tr.mapping.map($from.before())\n const $first = tr.doc.resolve(first)\n\n if ($from.node(-1).canReplaceWith($first.index(), $first.index() + 1, deflt)) {\n tr.setNodeMarkup(tr.mapping.map($from.before()), deflt)\n }\n }\n }\n\n if (keepMarks) {\n ensureMarks(state, editor.extensionManager.splittableMarks)\n }\n\n tr.scrollIntoView()\n }\n\n return true\n}\n","import {\n NodeType,\n Node as ProseMirrorNode,\n Fragment,\n Slice,\n} from 'prosemirror-model'\nimport { canSplit } from 'prosemirror-transform'\nimport { TextSelection } from 'prosemirror-state'\nimport { RawCommands } from '../types'\nimport getNodeType from '../helpers/getNodeType'\nimport getSplittedAttributes from '../helpers/getSplittedAttributes'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n splitListItem: {\n /**\n * Splits one list item into two list items.\n */\n splitListItem: (typeOrName: string | NodeType) => ReturnType,\n }\n }\n}\n\nexport const splitListItem: RawCommands['splitListItem'] = typeOrName => ({\n tr, state, dispatch, editor,\n}) => {\n const type = getNodeType(typeOrName, state.schema)\n const { $from, $to } = state.selection\n\n // @ts-ignore\n // eslint-disable-next-line\n const node: ProseMirrorNode = state.selection.node\n\n if ((node && node.isBlock) || $from.depth < 2 || !$from.sameParent($to)) {\n return false\n }\n\n const grandParent = $from.node(-1)\n\n if (grandParent.type !== type) {\n return false\n }\n\n const extensionAttributes = editor.extensionManager.attributes\n\n if ($from.parent.content.size === 0 && $from.node(-1).childCount === $from.indexAfter(-1)) {\n // In an empty block. If this is a nested list, the wrapping\n // list item should be split. Otherwise, bail out and let next\n // command handle lifting.\n if (\n $from.depth === 2\n || $from.node(-3).type !== type\n || $from.index(-2) !== $from.node(-2).childCount - 1\n ) {\n return false\n }\n\n if (dispatch) {\n let wrap = Fragment.empty\n // eslint-disable-next-line\n const depthBefore = $from.index(-1)\n ? 1\n : $from.index(-2)\n ? 2\n : 3\n\n // Build a fragment containing empty versions of the structure\n // from the outer list item to the parent node of the cursor\n for (let d = $from.depth - depthBefore; d >= $from.depth - 3; d -= 1) {\n wrap = Fragment.from($from.node(d).copy(wrap))\n }\n\n // eslint-disable-next-line\n const depthAfter = $from.indexAfter(-1) < $from.node(-2).childCount\n ? 1\n : $from.indexAfter(-2) < $from.node(-3).childCount\n ? 2\n : 3\n\n // Add a second list item with an empty default start node\n const newNextTypeAttributes = getSplittedAttributes(\n extensionAttributes,\n $from.node().type.name,\n $from.node().attrs,\n )\n const nextType = type.contentMatch.defaultType?.createAndFill(newNextTypeAttributes) || undefined\n\n wrap = wrap.append(Fragment.from(type.createAndFill(null, nextType) || undefined))\n\n const start = $from.before($from.depth - (depthBefore - 1))\n\n tr.replace(start, $from.after(-depthAfter), new Slice(wrap, 4 - depthBefore, 0))\n\n let sel = -1\n\n tr.doc.nodesBetween(start, tr.doc.content.size, (n, pos) => {\n if (sel > -1) {\n return false\n }\n\n if (n.isTextblock && n.content.size === 0) {\n sel = pos + 1\n }\n })\n\n if (sel > -1) {\n tr.setSelection(TextSelection.near(tr.doc.resolve(sel)))\n }\n\n tr.scrollIntoView()\n }\n\n return true\n }\n\n const nextType = $to.pos === $from.end()\n ? grandParent.contentMatchAt(0).defaultType\n : null\n\n const newTypeAttributes = getSplittedAttributes(\n extensionAttributes,\n grandParent.type.name,\n grandParent.attrs,\n )\n const newNextTypeAttributes = getSplittedAttributes(\n extensionAttributes,\n $from.node().type.name,\n $from.node().attrs,\n )\n\n tr.delete($from.pos, $to.pos)\n\n const types = nextType\n ? [{ type, attrs: newTypeAttributes }, { type: nextType, attrs: newNextTypeAttributes }]\n : [{ type, attrs: newTypeAttributes }]\n\n if (!canSplit(tr.doc, $from.pos, 2)) {\n return false\n }\n\n if (dispatch) {\n tr.split($from.pos, 2, types).scrollIntoView()\n }\n\n return true\n}\n","import { ResolvedPos, Node as ProseMirrorNode } from 'prosemirror-model'\nimport { Predicate } from '../types'\n\nexport default function findParentNodeClosestToPos($pos: ResolvedPos, predicate: Predicate): ({\n pos: number,\n start: number,\n depth: number,\n node: ProseMirrorNode,\n} | undefined) {\n for (let i = $pos.depth; i > 0; i -= 1) {\n const node = $pos.node(i)\n\n if (predicate(node)) {\n return {\n pos: i > 0 ? $pos.before(i) : 0,\n start: $pos.start(i),\n depth: i,\n node,\n }\n }\n }\n}\n","import { Selection } from 'prosemirror-state'\nimport findParentNodeClosestToPos from './findParentNodeClosestToPos'\nimport { Predicate } from '../types'\n\nexport default function findParentNode(predicate: Predicate) {\n return (selection: Selection) => findParentNodeClosestToPos(selection.$from, predicate)\n}\n","import { Extensions } from '../types'\nimport { NodeConfig } from '..'\nimport splitExtensions from './splitExtensions'\nimport callOrReturn from '../utilities/callOrReturn'\nimport getExtensionField from '../helpers/getExtensionField'\n\nexport default function isList(name: string, extensions: Extensions): boolean {\n const { nodeExtensions } = splitExtensions(extensions)\n const extension = nodeExtensions.find(item => item.name === name)\n\n if (!extension) {\n return false\n }\n\n const context = {\n name: extension.name,\n options: extension.options,\n }\n const group = callOrReturn(getExtensionField<NodeConfig['group']>(extension, 'group', context))\n\n if (typeof group !== 'string') {\n return false\n }\n\n return group.split(' ').includes('list')\n}\n","import { NodeType } from 'prosemirror-model'\nimport { RawCommands } from '../types'\nimport getNodeType from '../helpers/getNodeType'\nimport findParentNode from '../helpers/findParentNode'\nimport isList from '../helpers/isList'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n toggleList: {\n /**\n * Toggle between different list types.\n */\n toggleList: (listTypeOrName: string | NodeType, itemTypeOrName: string | NodeType) => ReturnType,\n }\n }\n}\n\nexport const toggleList: RawCommands['toggleList'] = (listTypeOrName, itemTypeOrName) => ({\n editor, tr, state, dispatch, chain, commands, can,\n}) => {\n const { extensions } = editor.extensionManager\n const listType = getNodeType(listTypeOrName, state.schema)\n const itemType = getNodeType(itemTypeOrName, state.schema)\n const { selection } = state\n const { $from, $to } = selection\n const range = $from.blockRange($to)\n\n if (!range) {\n return false\n }\n\n const parentList = findParentNode(node => isList(node.type.name, extensions))(selection)\n\n if (range.depth >= 1 && parentList && range.depth - parentList.depth <= 1) {\n // remove list\n if (parentList.node.type === listType) {\n return commands.liftListItem(itemType)\n }\n\n // change list type\n if (\n isList(parentList.node.type.name, extensions)\n && listType.validContent(parentList.node.content)\n && dispatch\n ) {\n tr.setNodeMarkup(parentList.pos, listType)\n\n return true\n }\n }\n\n const canWrapInList = can().wrapInList(listType)\n\n // try to convert node to paragraph if needed\n if (!canWrapInList) {\n return chain()\n .clearNodes()\n .wrapInList(listType)\n .run()\n }\n\n return commands.wrapInList(listType)\n}\n","import { MarkType } from 'prosemirror-model'\nimport { RawCommands } from '../types'\nimport getMarkType from '../helpers/getMarkType'\nimport isMarkActive from '../helpers/isMarkActive'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n toggleMark: {\n /**\n * Toggle a mark on and off.\n */\n toggleMark: (typeOrName: string | MarkType, attributes?: Record<string, any>) => ReturnType,\n }\n }\n}\n\nexport const toggleMark: RawCommands['toggleMark'] = (typeOrName, attributes = {}) => ({ state, commands }) => {\n const type = getMarkType(typeOrName, state.schema)\n const isActive = isMarkActive(state, type, attributes)\n\n if (isActive) {\n return commands.unsetMark(type)\n }\n\n return commands.setMark(type, attributes)\n}\n","import { NodeType } from 'prosemirror-model'\nimport { RawCommands } from '../types'\nimport isNodeActive from '../helpers/isNodeActive'\nimport getNodeType from '../helpers/getNodeType'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n toggleNode: {\n /**\n * Toggle a node with another node.\n */\n toggleNode: (typeOrName: string | NodeType, toggleTypeOrName: string | NodeType, attributes?: Record<string, any>) => ReturnType,\n }\n }\n}\n\nexport const toggleNode: RawCommands['toggleNode'] = (typeOrName, toggleTypeOrName, attributes = {}) => ({ state, commands }) => {\n const type = getNodeType(typeOrName, state.schema)\n const toggleType = getNodeType(toggleTypeOrName, state.schema)\n const isActive = isNodeActive(state, type, attributes)\n\n if (isActive) {\n return commands.setNode(toggleType)\n }\n\n return commands.setNode(type, attributes)\n}\n","import { wrapIn, lift } from 'prosemirror-commands'\nimport { NodeType } from 'prosemirror-model'\nimport { RawCommands } from '../types'\nimport isNodeActive from '../helpers/isNodeActive'\nimport getNodeType from '../helpers/getNodeType'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n toggleWrap: {\n /**\n * Wraps nodes in another node, or removes an existing wrap.\n */\n toggleWrap: (typeOrName: string | NodeType, attributes?: Record<string, any>) => ReturnType,\n }\n }\n}\n\nexport const toggleWrap: RawCommands['toggleWrap'] = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema)\n const isActive = isNodeActive(state, type, attributes)\n\n if (isActive) {\n return lift(state, dispatch)\n }\n\n return wrapIn(type, attributes)(state, dispatch)\n}\n","import { undoInputRule as originalUndoInputRule } from 'prosemirror-inputrules'\nimport { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n undoInputRule: {\n /**\n * Undo an input rule.\n */\n undoInputRule: () => ReturnType,\n }\n }\n}\n\nexport const undoInputRule: RawCommands['undoInputRule'] = () => ({ state, dispatch }) => {\n return originalUndoInputRule(state, dispatch)\n}\n","import { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n unsetAllMarks: {\n /**\n * Remove all marks in the current selection.\n */\n unsetAllMarks: () => ReturnType,\n }\n }\n}\n\nexport const unsetAllMarks: RawCommands['unsetAllMarks'] = () => ({ tr, state, dispatch }) => {\n const { selection } = tr\n const { empty, ranges } = selection\n\n if (empty) {\n return true\n }\n\n if (dispatch) {\n Object\n .entries(state.schema.marks)\n .forEach(([, mark]) => {\n ranges.forEach(range => {\n tr.removeMark(range.$from.pos, range.$to.pos, mark as any)\n })\n })\n }\n\n return true\n}\n","import { MarkType } from 'prosemirror-model'\nimport { RawCommands } from '../types'\nimport getMarkType from '../helpers/getMarkType'\nimport getMarkRange from '../helpers/getMarkRange'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n unsetMark: {\n /**\n * Remove all marks in the current selection.\n */\n unsetMark: (typeOrName: string | MarkType) => ReturnType,\n }\n }\n}\n\nexport const unsetMark: RawCommands['unsetMark'] = typeOrName => ({ tr, state, dispatch }) => {\n const { selection } = tr\n const type = getMarkType(typeOrName, state.schema)\n const { $from, empty, ranges } = selection\n\n if (dispatch) {\n if (empty) {\n let { from, to } = selection\n const range = getMarkRange($from, type)\n\n if (range) {\n from = range.from\n to = range.to\n }\n\n tr.removeMark(from, to, type)\n } else {\n ranges.forEach(range => {\n tr.removeMark(range.$from.pos, range.$to.pos, type)\n })\n }\n\n tr.removeStoredMark(type)\n }\n\n return true\n}\n","import { NodeType, MarkType } from 'prosemirror-model'\nimport getNodeType from '../helpers/getNodeType'\nimport getMarkType from '../helpers/getMarkType'\nimport getSchemaTypeNameByName from '../helpers/getSchemaTypeNameByName'\nimport { RawCommands } from '../types'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n updateAttributes: {\n /**\n * Update attributes of a node or mark.\n */\n updateAttributes: (typeOrName: string | NodeType | MarkType, attributes: Record<string, any>) => ReturnType,\n }\n }\n}\n\nexport const updateAttributes: RawCommands['updateAttributes'] = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\n let nodeType: NodeType | null = null\n let markType: MarkType | null = null\n\n const schemaType = getSchemaTypeNameByName(\n typeof typeOrName === 'string'\n ? typeOrName\n : typeOrName.name,\n state.schema,\n )\n\n if (!schemaType) {\n return false\n }\n\n if (schemaType === 'node') {\n nodeType = getNodeType(typeOrName as NodeType, state.schema)\n }\n\n if (schemaType === 'mark') {\n markType = getMarkType(typeOrName as MarkType, state.schema)\n }\n\n if (dispatch) {\n tr.selection.ranges.forEach(range => {\n const from = range.$from.pos\n const to = range.$to.pos\n\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (nodeType && nodeType === node.type) {\n tr.setNodeMarkup(pos, undefined, {\n ...node.attrs,\n ...attributes,\n })\n }\n\n if (markType && node.marks.length) {\n node.marks.forEach(mark => {\n if (markType === mark.type) {\n const trimmedFrom = Math.max(pos, from)\n const trimmedTo = Math.min(pos + node.nodeSize, to)\n\n tr.addMark(trimmedFrom, trimmedTo, markType.create({\n ...mark.attrs,\n ...attributes,\n }))\n }\n })\n }\n })\n })\n }\n\n return true\n}\n","import { wrapIn as originalWrapIn } from 'prosemirror-commands'\nimport { NodeType } from 'prosemirror-model'\nimport { RawCommands } from '../types'\nimport isNodeActive from '../helpers/isNodeActive'\nimport getNodeType from '../helpers/getNodeType'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n wrapIn: {\n /**\n * Wraps nodes in another node.\n */\n wrapIn: (typeOrName: string | NodeType, attributes?: Record<string, any>) => ReturnType,\n }\n }\n}\n\nexport const wrapIn: RawCommands['wrapIn'] = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema)\n const isActive = isNodeActive(state, type, attributes)\n\n if (isActive) {\n return false\n }\n\n return originalWrapIn(type, attributes)(state, dispatch)\n}\n","import { wrapInList as originalWrapInList } from 'prosemirror-schema-list'\nimport { NodeType } from 'prosemirror-model'\nimport { RawCommands } from '../types'\nimport getNodeType from '../helpers/getNodeType'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n wrapInList: {\n /**\n * Wrap a node in a list.\n */\n wrapInList: (typeOrName: string | NodeType, attributes?: Record<string, any>) => ReturnType,\n }\n }\n}\n\nexport const wrapInList: RawCommands['wrapInList'] = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema)\n\n return originalWrapInList(type, attributes)(state, dispatch)\n}\n","import { Extension } from '../Extension'\nimport * as blur from '../commands/blur'\nimport * as clearContent from '../commands/clearContent'\nimport * as clearNodes from '../commands/clearNodes'\nimport * as command from '../commands/command'\nimport * as createParagraphNear from '../commands/createParagraphNear'\nimport * as deleteNode from '../commands/deleteNode'\nimport * as deleteRange from '../commands/deleteRange'\nimport * as deleteSelection from '../commands/deleteSelection'\nimport * as enter from '../commands/enter'\nimport * as exitCode from '../commands/exitCode'\nimport * as extendMarkRange from '../commands/extendMarkRange'\nimport * as first from '../commands/first'\nimport * as focus from '../commands/focus'\nimport * as forEach from '../commands/forEach'\nimport * as insertContent from '../commands/insertContent'\nimport * as insertContentAt from '../commands/insertContentAt'\nimport * as joinBackward from '../commands/joinBackward'\nimport * as joinForward from '../commands/joinForward'\nimport * as keyboardShortcut from '../commands/keyboardShortcut'\nimport * as lift from '../commands/lift'\nimport * as liftEmptyBlock from '../commands/liftEmptyBlock'\nimport * as liftListItem from '../commands/liftListItem'\nimport * as newlineInCode from '../commands/newlineInCode'\nimport * as resetAttributes from '../commands/resetAttributes'\nimport * as scrollIntoView from '../commands/scrollIntoView'\nimport * as selectAll from '../commands/selectAll'\nimport * as selectNodeBackward from '../commands/selectNodeBackward'\nimport * as selectNodeForward from '../commands/selectNodeForward'\nimport * as selectParentNode from '../commands/selectParentNode'\nimport * as setContent from '../commands/setContent'\nimport * as setMark from '../commands/setMark'\nimport * as setMeta from '../commands/setMeta'\nimport * as setNode from '../commands/setNode'\nimport * as setNodeSelection from '../commands/setNodeSelection'\nimport * as setTextSelection from '../commands/setTextSelection'\nimport * as sinkListItem from '../commands/sinkListItem'\nimport * as splitBlock from '../commands/splitBlock'\nimport * as splitListItem from '../commands/splitListItem'\nimport * as toggleList from '../commands/toggleList'\nimport * as toggleMark from '../commands/toggleMark'\nimport * as toggleNode from '../commands/toggleNode'\nimport * as toggleWrap from '../commands/toggleWrap'\nimport * as undoInputRule from '../commands/undoInputRule'\nimport * as unsetAllMarks from '../commands/unsetAllMarks'\nimport * as unsetMark from '../commands/unsetMark'\nimport * as updateAttributes from '../commands/updateAttributes'\nimport * as wrapIn from '../commands/wrapIn'\nimport * as wrapInList from '../commands/wrapInList'\n\nexport { blur }\nexport { clearContent }\nexport { clearNodes }\nexport { command }\nexport { createParagraphNear }\nexport { deleteNode }\nexport { deleteRange }\nexport { deleteSelection }\nexport { enter }\nexport { exitCode }\nexport { extendMarkRange }\nexport { first }\nexport { focus }\nexport { forEach }\nexport { insertContent }\nexport { insertContentAt }\nexport { joinBackward }\nexport { joinForward }\nexport { keyboardShortcut }\nexport { lift }\nexport { liftEmptyBlock }\nexport { liftListItem }\nexport { newlineInCode }\nexport { resetAttributes }\nexport { scrollIntoView }\nexport { selectAll }\nexport { selectNodeBackward }\nexport { selectNodeForward }\nexport { selectParentNode }\nexport { setContent }\nexport { setMark }\nexport { setMeta }\nexport { setNode }\nexport { setNodeSelection }\nexport { setTextSelection }\nexport { sinkListItem }\nexport { splitBlock }\nexport { splitListItem }\nexport { toggleList }\nexport { toggleMark }\nexport { toggleNode }\nexport { toggleWrap }\nexport { undoInputRule }\nexport { unsetAllMarks }\nexport { unsetMark }\nexport { updateAttributes }\nexport { wrapIn }\nexport { wrapInList }\n\nexport const Commands = Extension.create({\n name: 'commands',\n\n addCommands() {\n return {\n ...blur,\n ...clearContent,\n ...clearNodes,\n ...command,\n ...createParagraphNear,\n ...deleteNode,\n ...deleteRange,\n ...deleteSelection,\n ...enter,\n ...exitCode,\n ...extendMarkRange,\n ...first,\n ...focus,\n ...forEach,\n ...insertContent,\n ...insertContentAt,\n ...joinBackward,\n ...joinForward,\n ...keyboardShortcut,\n ...lift,\n ...liftEmptyBlock,\n ...liftListItem,\n ...newlineInCode,\n ...resetAttributes,\n ...scrollIntoView,\n ...selectAll,\n ...selectNodeBackward,\n ...selectNodeForward,\n ...selectParentNode,\n ...setContent,\n ...setMark,\n ...setMeta,\n ...setNode,\n ...setNodeSelection,\n ...setTextSelection,\n ...sinkListItem,\n ...splitBlock,\n ...splitListItem,\n ...toggleList,\n ...toggleMark,\n ...toggleNode,\n ...toggleWrap,\n ...undoInputRule,\n ...unsetAllMarks,\n ...unsetMark,\n ...updateAttributes,\n ...wrapIn,\n ...wrapInList,\n }\n },\n})\n","import { Plugin, PluginKey } from 'prosemirror-state'\nimport { Extension } from '../Extension'\n\nexport const Editable = Extension.create({\n name: 'editable',\n\n addProseMirrorPlugins() {\n return [\n new Plugin({\n key: new PluginKey('editable'),\n props: {\n editable: () => this.editor.options.editable,\n },\n }),\n ]\n },\n})\n","import { Plugin, PluginKey } from 'prosemirror-state'\nimport { Extension } from '../Extension'\n\nexport const FocusEvents = Extension.create({\n name: 'focusEvents',\n\n addProseMirrorPlugins() {\n const { editor } = this\n\n return [\n new Plugin({\n key: new PluginKey('focusEvents'),\n props: {\n attributes: {\n tabindex: '0',\n },\n handleDOMEvents: {\n focus: (view, event) => {\n editor.isFocused = true\n\n const transaction = editor.state.tr\n .setMeta('focus', { event })\n .setMeta('addToHistory', false)\n\n view.dispatch(transaction)\n\n return false\n },\n blur: (view, event) => {\n editor.isFocused = false\n\n const transaction = editor.state.tr\n .setMeta('blur', { event })\n .setMeta('addToHistory', false)\n\n view.dispatch(transaction)\n\n return false\n },\n },\n },\n }),\n ]\n },\n})\n","import { Extension } from '../Extension'\n\nexport const Keymap = Extension.create({\n name: 'keymap',\n\n addKeyboardShortcuts() {\n const handleBackspace = () => this.editor.commands.first(({ commands }) => [\n () => commands.undoInputRule(),\n () => commands.deleteSelection(),\n () => commands.joinBackward(),\n () => commands.selectNodeBackward(),\n ])\n\n const handleDelete = () => this.editor.commands.first(({ commands }) => [\n () => commands.deleteSelection(),\n () => commands.joinForward(),\n () => commands.selectNodeForward(),\n ])\n\n return {\n Enter: () => this.editor.commands.first(({ commands }) => [\n () => commands.newlineInCode(),\n () => commands.createParagraphNear(),\n () => commands.liftEmptyBlock(),\n () => commands.splitBlock(),\n ]),\n 'Mod-Enter': () => this.editor.commands.exitCode(),\n Backspace: () => handleBackspace(),\n 'Mod-Backspace': () => handleBackspace(),\n Delete: () => handleDelete(),\n 'Mod-Delete': () => handleDelete(),\n // we don’t need a custom `selectAll` for now\n // 'Mod-a': () => this.editor.commands.selectAll(),\n }\n },\n})\n","const style = `.ProseMirror {\n position: relative;\n}\n\n.ProseMirror {\n word-wrap: break-word;\n white-space: pre-wrap;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none;\n}\n\n.ProseMirror [contenteditable=\"false\"] {\n white-space: normal;\n}\n\n.ProseMirror [contenteditable=\"false\"] [contenteditable=\"true\"] {\n white-space: pre-wrap;\n}\n\n.ProseMirror pre {\n white-space: pre-wrap;\n}\n\n.ProseMirror-gapcursor {\n display: none;\n pointer-events: none;\n position: absolute;\n}\n\n.ProseMirror-gapcursor:after {\n content: \"\";\n display: block;\n position: absolute;\n top: -2px;\n width: 20px;\n border-top: 1px solid black;\n animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\n}\n\n@keyframes ProseMirror-cursor-blink {\n to {\n visibility: hidden;\n }\n}\n\n.ProseMirror-hideselection *::selection {\n background: transparent;\n}\n\n.ProseMirror-hideselection *::-moz-selection {\n background: transparent;\n}\n\n.ProseMirror-hideselection * {\n caret-color: transparent;\n}\n\n.ProseMirror-focused .ProseMirror-gapcursor {\n display: block;\n}\n\n.tippy-box[data-animation=fade][data-state=hidden] {\n opacity: 0\n}`\n\nexport default style\n","import {\n EditorState,\n Plugin,\n PluginKey,\n Transaction,\n} from 'prosemirror-state'\nimport { EditorView } from 'prosemirror-view'\nimport { Schema, MarkType, NodeType } from 'prosemirror-model'\nimport getAttributes from './helpers/getAttributes'\nimport isActive from './helpers/isActive'\nimport removeElement from './utilities/removeElement'\nimport createDocument from './helpers/createDocument'\nimport getHTMLFromFragment from './helpers/getHTMLFromFragment'\nimport isNodeEmpty from './helpers/isNodeEmpty'\nimport createStyleTag from './utilities/createStyleTag'\nimport CommandManager from './CommandManager'\nimport ExtensionManager from './ExtensionManager'\nimport EventEmitter from './EventEmitter'\nimport {\n EditorOptions,\n CanCommands,\n ChainedCommands,\n SingleCommands,\n} from './types'\nimport * as extensions from './extensions'\nimport style from './style'\n\nexport { extensions }\n\nexport interface HTMLElement {\n editor?: Editor\n}\n\nexport class Editor extends EventEmitter {\n\n private commandManager!: CommandManager\n\n public extensionManager!: ExtensionManager\n\n private css!: HTMLStyleElement\n\n public schema!: Schema\n\n public view!: EditorView\n\n public isFocused = false\n\n public options: EditorOptions = {\n element: document.createElement('div'),\n content: '',\n injectCSS: true,\n extensions: [],\n autofocus: false,\n editable: true,\n editorProps: {},\n parseOptions: {},\n enableInputRules: true,\n enablePasteRules: true,\n onBeforeCreate: () => null,\n onCreate: () => null,\n onUpdate: () => null,\n onSelectionUpdate: () => null,\n onTransaction: () => null,\n onFocus: () => null,\n onBlur: () => null,\n onDestroy: () => null,\n }\n\n constructor(options: Partial<EditorOptions> = {}) {\n super()\n this.setOptions(options)\n this.createExtensionManager()\n this.createCommandManager()\n this.createSchema()\n this.on('beforeCreate', this.options.onBeforeCreate)\n this.emit('beforeCreate', { editor: this })\n this.createView()\n this.injectCSS()\n this.on('create', this.options.onCreate)\n this.on('update', this.options.onUpdate)\n this.on('selectionUpdate', this.options.onSelectionUpdate)\n this.on('transaction', this.options.onTransaction)\n this.on('focus', this.options.onFocus)\n this.on('blur', this.options.onBlur)\n this.on('destroy', this.options.onDestroy)\n\n window.setTimeout(() => {\n if (this.isDestroyed) {\n return\n }\n\n this.commands.focus(this.options.autofocus)\n this.emit('create', { editor: this })\n }, 0)\n }\n\n /**\n * An object of all registered commands.\n */\n public get commands(): SingleCommands {\n return this.commandManager.createCommands()\n }\n\n /**\n * Create a command chain to call multiple commands at once.\n */\n public chain(): ChainedCommands {\n return this.commandManager.createChain()\n }\n\n /**\n * Check if a command or a command chain can be executed. Without executing it.\n */\n public can(): CanCommands {\n return this.commandManager.createCan()\n }\n\n /**\n * Inject CSS styles.\n */\n private injectCSS(): void {\n if (this.options.injectCSS && document) {\n this.css = createStyleTag(style)\n }\n }\n\n /**\n * Update editor options.\n *\n * @param options A list of options\n */\n public setOptions(options: Partial<EditorOptions> = {}): void {\n this.options = {\n ...this.options,\n ...options,\n }\n\n if (!this.view || !this.state || this.isDestroyed) {\n return\n }\n\n if (this.options.editorProps) {\n this.view.setProps(this.options.editorProps)\n }\n\n this.view.updateState(this.state)\n }\n\n /**\n * Update editable state of the editor.\n */\n public setEditable(editable: boolean): void {\n this.setOptions({ editable })\n }\n\n /**\n * Returns whether the editor is editable.\n */\n public get isEditable(): boolean {\n // since plugins are applied after creating the view\n // `editable` is always `true` for one tick.\n // that’s why we also have to check for `options.editable`\n return this.options.editable\n && this.view\n && this.view.editable\n }\n\n /**\n * Returns the editor state.\n */\n public get state(): EditorState {\n return this.view.state\n }\n\n /**\n * Register a ProseMirror plugin.\n *\n * @param plugin A ProseMirror plugin\n * @param handlePlugins Control how to merge the plugin into the existing plugins.\n */\n public registerPlugin(plugin: Plugin, handlePlugins?: (newPlugin: Plugin, plugins: Plugin[]) => Plugin[]): void {\n const plugins = typeof handlePlugins === 'function'\n ? handlePlugins(plugin, this.state.plugins)\n : [...this.state.plugins, plugin]\n\n const state = this.state.reconfigure({ plugins })\n\n this.view.updateState(state)\n }\n\n /**\n * Unregister a ProseMirror plugin.\n *\n * @param name The plugins name\n */\n public unregisterPlugin(nameOrPluginKey: string | PluginKey): void {\n if (this.isDestroyed) {\n return\n }\n\n const name = typeof nameOrPluginKey === 'string'\n ? `${nameOrPluginKey}$`\n // @ts-ignore\n : nameOrPluginKey.key\n\n const state = this.state.reconfigure({\n // @ts-ignore\n plugins: this.state.plugins.filter(plugin => !plugin.key.startsWith(name)),\n })\n\n this.view.updateState(state)\n }\n\n /**\n * Creates an extension manager.\n */\n private createExtensionManager(): void {\n const coreExtensions = Object.entries(extensions).map(([, extension]) => extension)\n const allExtensions = [...coreExtensions, ...this.options.extensions].filter(extension => {\n return ['extension', 'node', 'mark'].includes(extension?.type)\n })\n\n this.extensionManager = new ExtensionManager(allExtensions, this)\n }\n\n /**\n * Creates an command manager.\n */\n private createCommandManager(): void {\n this.commandManager = new CommandManager(this, this.extensionManager.commands)\n }\n\n /**\n * Creates a ProseMirror schema.\n */\n private createSchema(): void {\n this.schema = this.extensionManager.schema\n }\n\n /**\n * Creates a ProseMirror view.\n */\n private createView(): void {\n this.view = new EditorView(this.options.element, {\n ...this.options.editorProps,\n dispatchTransaction: this.dispatchTransaction.bind(this),\n state: EditorState.create({\n doc: createDocument(this.options.content, this.schema, this.options.parseOptions),\n }),\n })\n\n // `editor.view` is not yet available at this time.\n // Therefore we will add all plugins and node views directly afterwards.\n const newState = this.state.reconfigure({\n plugins: this.extensionManager.plugins,\n })\n\n this.view.updateState(newState)\n\n this.createNodeViews()\n\n // Let’s store the editor instance in the DOM element.\n // So we’ll have access to it for tests.\n const dom = this.view.dom as HTMLElement\n dom.editor = this\n }\n\n /**\n * Creates all node views.\n */\n public createNodeViews(): void {\n this.view.setProps({\n nodeViews: this.extensionManager.nodeViews,\n })\n }\n\n public isCapturingTransaction = false\n\n private capturedTransaction: Transaction | null = null\n\n public captureTransaction(fn: Function) {\n this.isCapturingTransaction = true\n fn()\n this.isCapturingTransaction = false\n\n const tr = this.capturedTransaction\n\n this.capturedTransaction = null\n\n return tr\n }\n\n /**\n * The callback over which to send transactions (state updates) produced by the view.\n *\n * @param transaction An editor state transaction\n */\n private dispatchTransaction(transaction: Transaction): void {\n if (this.isCapturingTransaction) {\n if (!this.capturedTransaction) {\n this.capturedTransaction = transaction\n\n return\n }\n\n transaction.steps.forEach(step => this.capturedTransaction?.step(step))\n\n return\n }\n\n const state = this.state.apply(transaction)\n const selectionHasChanged = !this.state.selection.eq(state.selection)\n\n this.view.updateState(state)\n this.emit('transaction', {\n editor: this,\n transaction,\n })\n\n if (selectionHasChanged) {\n this.emit('selectionUpdate', {\n editor: this,\n transaction,\n })\n }\n\n const focus = transaction.getMeta('focus')\n const blur = transaction.getMeta('blur')\n\n if (focus) {\n this.emit('focus', {\n editor: this,\n event: focus.event,\n transaction,\n })\n }\n\n if (blur) {\n this.emit('blur', {\n editor: this,\n event: blur.event,\n transaction,\n })\n }\n\n if (!transaction.docChanged || transaction.getMeta('preventUpdate')) {\n return\n }\n\n this.emit('update', {\n editor: this,\n transaction,\n })\n }\n\n /**\n * Get attributes of the currently selected node or mark.\n */\n public getAttributes(nameOrType: string | NodeType | MarkType): Record<string, any> {\n return getAttributes(this.state, nameOrType)\n }\n\n /**\n * Returns if the currently selected node or mark is active.\n *\n * @param name Name of the node or mark\n * @param attributes Attributes of the node or mark\n */\n public isActive(name: string, attributes?: {}): boolean;\n public isActive(attributes: {}): boolean;\n public isActive(nameOrAttributes: string, attributesOrUndefined?: {}): boolean {\n const name = typeof nameOrAttributes === 'string'\n ? nameOrAttributes\n : null\n\n const attributes = typeof nameOrAttributes === 'string'\n ? attributesOrUndefined\n : nameOrAttributes\n\n return isActive(this.state, name, attributes)\n }\n\n /**\n * Get the document as JSON.\n */\n public getJSON(): Record<string, any> {\n return this.state.doc.toJSON()\n }\n\n /**\n * Get the document as HTML.\n */\n public getHTML(): string {\n return getHTMLFromFragment(this.state.doc, this.schema)\n }\n\n /**\n * Check if there is no content.\n */\n public get isEmpty(): boolean {\n return isNodeEmpty(this.state.doc)\n }\n\n /**\n * Get the number of characters for the current document.\n */\n public getCharacterCount(): number {\n return this.state.doc.content.size - 2\n }\n\n /**\n * Destroy the editor.\n */\n public destroy(): void {\n this.emit('destroy')\n\n if (this.view) {\n this.view.destroy()\n }\n\n this.removeAllListeners()\n removeElement(this.css)\n }\n\n /**\n * Check if the editor is already destroyed.\n */\n public get isDestroyed(): boolean {\n // @ts-ignore\n return !this.view?.docView\n }\n\n}\n","import {\n DOMOutputSpec,\n NodeSpec,\n Node as ProseMirrorNode,\n NodeType,\n} from 'prosemirror-model'\nimport { Plugin, Transaction } from 'prosemirror-state'\nimport { InputRule } from 'prosemirror-inputrules'\nimport mergeDeep from './utilities/mergeDeep'\nimport {\n Extensions,\n Attributes,\n NodeViewRenderer,\n GlobalAttributes,\n RawCommands,\n ParentConfig,\n KeyboardShortcutCommand,\n} from './types'\nimport { NodeConfig } from '.'\nimport { Editor } from './Editor'\n\ndeclare module '@tiptap/core' {\n interface NodeConfig<Options = any> {\n [key: string]: any;\n\n /**\n * Name\n */\n name: string,\n\n /**\n * Priority\n */\n priority?: number,\n\n /**\n * Default options\n */\n defaultOptions?: Options,\n\n /**\n * Global attributes\n */\n addGlobalAttributes?: (this: {\n name: string,\n options: Options,\n parent: ParentConfig<NodeConfig<Options>>['addGlobalAttributes'],\n }) => GlobalAttributes | {},\n\n /**\n * Raw\n */\n addCommands?: (this: {\n name: string,\n options: Options,\n editor: Editor,\n type: NodeType,\n parent: ParentConfig<NodeConfig<Options>>['addCommands'],\n }) => Partial<RawCommands>,\n\n /**\n * Keyboard shortcuts\n */\n addKeyboardShortcuts?: (this: {\n name: string,\n options: Options,\n editor: Editor,\n type: NodeType,\n parent: ParentConfig<NodeConfig<Options>>['addKeyboardShortcuts'],\n }) => {\n [key: string]: KeyboardShortcutCommand,\n },\n\n /**\n * Input rules\n */\n addInputRules?: (this: {\n name: string,\n options: Options,\n editor: Editor,\n type: NodeType,\n parent: ParentConfig<NodeConfig<Options>>['addInputRules'],\n }) => InputRule[],\n\n /**\n * Paste rules\n */\n addPasteRules?: (this: {\n name: string,\n options: Options,\n editor: Editor,\n type: NodeType,\n parent: ParentConfig<NodeConfig<Options>>['addPasteRules'],\n }) => Plugin[],\n\n /**\n * ProseMirror plugins\n */\n addProseMirrorPlugins?: (this: {\n name: string,\n options: Options,\n editor: Editor,\n type: NodeType,\n parent: ParentConfig<NodeConfig<Options>>['addProseMirrorPlugins'],\n }) => Plugin[],\n\n /**\n * Extensions\n */\n addExtensions?: (this: {\n name: string,\n options: Options,\n parent: ParentConfig<NodeConfig<Options>>['addExtensions'],\n }) => Extensions,\n\n /**\n * Extend Node Schema\n */\n extendNodeSchema?: ((\n this: {\n name: string,\n options: Options,\n parent: ParentConfig<NodeConfig<Options>>['extendNodeSchema'],\n },\n extension: Node,\n ) => Record<string, any>) | null,\n\n /**\n * Extend Mark Schema\n */\n extendMarkSchema?: ((\n this: {\n name: string,\n options: Options,\n parent: ParentConfig<NodeConfig<Options>>['extendMarkSchema'],\n },\n extension: Node,\n ) => Record<string, any>) | null,\n\n /**\n * The editor is not ready yet.\n */\n onBeforeCreate?: ((this: {\n name: string,\n options: Options,\n editor: Editor,\n type: NodeType,\n parent: ParentConfig<NodeConfig<Options>>['onBeforeCreate'],\n }) => void) | null,\n\n /**\n * The editor is ready.\n */\n onCreate?: ((this: {\n name: string,\n options: Options,\n editor: Editor,\n type: NodeType,\n parent: ParentConfig<NodeConfig<Options>>['onCreate'],\n }) => void) | null,\n\n /**\n * The content has changed.\n */\n onUpdate?: ((this: {\n name: string,\n options: Options,\n editor: Editor,\n type: NodeType,\n parent: ParentConfig<NodeConfig<Options>>['onUpdate'],\n }) => void) | null,\n\n /**\n * The selection has changed.\n */\n onSelectionUpdate?: ((this: {\n name: string,\n options: Options,\n editor: Editor,\n type: NodeType,\n parent: ParentConfig<NodeConfig<Options>>['onSelectionUpdate'],\n }) => void) | null,\n\n /**\n * The editor state has changed.\n */\n onTransaction?: ((\n this: {\n name: string,\n options: Options,\n editor: Editor,\n type: NodeType,\n parent: ParentConfig<NodeConfig<Options>>['onTransaction'],\n },\n props: {\n transaction: Transaction,\n },\n ) => void) | null,\n\n /**\n * The editor is focused.\n */\n onFocus?: ((\n this: {\n name: string,\n options: Options,\n editor: Editor,\n type: NodeType,\n parent: ParentConfig<NodeConfig<Options>>['onFocus'],\n },\n props: {\n event: FocusEvent,\n },\n ) => void) | null,\n\n /**\n * The editor isn’t focused anymore.\n */\n onBlur?: ((\n this: {\n name: string,\n options: Options,\n editor: Editor,\n type: NodeType,\n parent: ParentConfig<NodeConfig<Options>>['onBlur'],\n },\n props: {\n event: FocusEvent,\n },\n ) => void) | null,\n\n /**\n * The editor is destroyed.\n */\n onDestroy?: ((this: {\n name: string,\n options: Options,\n editor: Editor,\n type: NodeType,\n parent: ParentConfig<NodeConfig<Options>>['onDestroy'],\n }) => void) | null,\n\n /**\n * Node View\n */\n addNodeView?: ((this: {\n name: string,\n options: Options,\n editor: Editor,\n type: NodeType,\n parent: ParentConfig<NodeConfig<Options>>['addNodeView'],\n }) => NodeViewRenderer) | null,\n\n /**\n * TopNode\n */\n topNode?: boolean,\n\n /**\n * Content\n */\n content?: NodeSpec['content'] | ((this: {\n name: string,\n options: Options,\n parent: ParentConfig<NodeConfig<Options>>['content'],\n }) => NodeSpec['content']),\n\n /**\n * Marks\n */\n marks?: NodeSpec['marks'] | ((this: {\n name: string,\n options: Options,\n parent: ParentConfig<NodeConfig<Options>>['marks'],\n }) => NodeSpec['marks']),\n\n /**\n * Group\n */\n group?: NodeSpec['group'] | ((this: {\n name: string,\n options: Options,\n parent: ParentConfig<NodeConfig<Options>>['group'],\n }) => NodeSpec['group']),\n\n /**\n * Inline\n */\n inline?: NodeSpec['inline'] | ((this: {\n name: string,\n options: Options,\n parent: ParentConfig<NodeConfig<Options>>['inline'],\n }) => NodeSpec['inline']),\n\n /**\n * Atom\n */\n atom?: NodeSpec['atom'] | ((this: {\n name: string,\n options: Options,\n parent: ParentConfig<NodeConfig<Options>>['atom'],\n }) => NodeSpec['atom']),\n\n /**\n * Selectable\n */\n selectable?: NodeSpec['selectable'] | ((this: {\n name: string,\n options: Options,\n parent: ParentConfig<NodeConfig<Options>>['selectable'],\n }) => NodeSpec['selectable']),\n\n /**\n * Draggable\n */\n draggable?: NodeSpec['draggable'] | ((this: {\n name: string,\n options: Options,\n parent: ParentConfig<NodeConfig<Options>>['draggable'],\n }) => NodeSpec['draggable']),\n\n /**\n * Code\n */\n code?: NodeSpec['code'] | ((this: {\n name: string,\n options: Options,\n parent: ParentConfig<NodeConfig<Options>>['code'],\n }) => NodeSpec['code']),\n\n /**\n * Defining\n */\n defining?: NodeSpec['defining'] | ((this: {\n name: string,\n options: Options,\n parent: ParentConfig<NodeConfig<Options>>['defining'],\n }) => NodeSpec['defining']),\n\n /**\n * Isolating\n */\n isolating?: NodeSpec['isolating'] | ((this: {\n name: string,\n options: Options,\n parent: ParentConfig<NodeConfig<Options>>['isolating'],\n }) => NodeSpec['isolating']),\n\n /**\n * Parse HTML\n */\n parseHTML?: (\n this: {\n name: string,\n options: Options,\n parent: ParentConfig<NodeConfig<Options>>['parseHTML'],\n },\n ) => NodeSpec['parseDOM'],\n\n /**\n * Render HTML\n */\n renderHTML?: ((\n this: {\n name: string,\n options: Options,\n parent: ParentConfig<NodeConfig<Options>>['renderHTML'],\n },\n props: {\n node: ProseMirrorNode,\n HTMLAttributes: Record<string, any>,\n }\n ) => DOMOutputSpec) | null,\n\n /**\n * Render Text\n */\n renderText?: ((\n this: {\n name: string,\n options: Options,\n editor: Editor,\n type: NodeType,\n parent: ParentConfig<NodeConfig<Options>>['renderText'],\n },\n props: {\n node: ProseMirrorNode,\n }\n ) => string) | null,\n\n /**\n * Add Attributes\n */\n addAttributes?: (\n this: {\n name: string,\n options: Options,\n parent: ParentConfig<NodeConfig<Options>>['addAttributes'],\n },\n ) => Attributes | {},\n }\n}\n\nexport class Node<Options = any> {\n type = 'node'\n\n name = 'node'\n\n parent: Node | null = null\n\n child: Node | null = null\n\n options: Options\n\n config: NodeConfig = {\n name: this.name,\n defaultOptions: {},\n }\n\n constructor(config: Partial<NodeConfig<Options>> = {}) {\n this.config = {\n ...this.config,\n ...config,\n }\n\n this.name = this.config.name\n this.options = this.config.defaultOptions\n }\n\n static create<O>(config: Partial<NodeConfig<O>> = {}) {\n return new Node<O>(config)\n }\n\n configure(options: Partial<Options> = {}) {\n // return a new instance so we can use the same extension\n // with different calls of `configure`\n const extension = this.extend()\n\n extension.options = mergeDeep(this.options, options) as Options\n\n return extension\n }\n\n extend<ExtendedOptions = Options>(extendedConfig: Partial<NodeConfig<ExtendedOptions>> = {}) {\n const extension = new Node<ExtendedOptions>(extendedConfig)\n\n extension.parent = this\n\n this.child = extension\n\n extension.name = extendedConfig.name\n ? extendedConfig.name\n : extension.parent.name\n\n extension.options = extendedConfig.defaultOptions\n ? extendedConfig.defaultOptions\n : extension.parent.options\n\n return extension\n }\n}\n","import {\n DOMOutputSpec,\n MarkSpec,\n Mark as ProseMirrorMark,\n MarkType,\n} from 'prosemirror-model'\nimport { Plugin, Transaction } from 'prosemirror-state'\nimport { InputRule } from 'prosemirror-inputrules'\nimport mergeDeep from './utilities/mergeDeep'\nimport {\n Extensions,\n Attributes,\n RawCommands,\n GlobalAttributes,\n ParentConfig,\n KeyboardShortcutCommand,\n} from './types'\nimport { Node } from './Node'\nimport { MarkConfig } from '.'\nimport { Editor } from './Editor'\n\ndeclare module '@tiptap/core' {\n export interface MarkConfig<Options = any> {\n [key: string]: any;\n\n /**\n * Name\n */\n name: string,\n\n /**\n * Priority\n */\n priority?: number,\n\n /**\n * Default options\n */\n defaultOptions?: Options,\n\n /**\n * Global attributes\n */\n addGlobalAttributes?: (this: {\n name: string,\n options: Options,\n parent: ParentConfig<MarkConfig<Options>>['addGlobalAttributes'],\n }) => GlobalAttributes | {},\n\n /**\n * Raw\n */\n addCommands?: (this: {\n name: string,\n options: Options,\n editor: Editor,\n type: MarkType,\n parent: ParentConfig<MarkConfig<Options>>['addCommands'],\n }) => Partial<RawCommands>,\n\n /**\n * Keyboard shortcuts\n */\n addKeyboardShortcuts?: (this: {\n name: string,\n options: Options,\n editor: Editor,\n type: MarkType,\n parent: ParentConfig<MarkConfig<Options>>['addKeyboardShortcuts'],\n }) => {\n [key: string]: KeyboardShortcutCommand,\n },\n\n /**\n * Input rules\n */\n addInputRules?: (this: {\n name: string,\n options: Options,\n editor: Editor,\n type: MarkType,\n parent: ParentConfig<MarkConfig<Options>>['addInputRules'],\n }) => InputRule[],\n\n /**\n * Paste rules\n */\n addPasteRules?: (this: {\n name: string,\n options: Options,\n editor: Editor,\n type: MarkType,\n parent: ParentConfig<MarkConfig<Options>>['addPasteRules'],\n }) => Plugin[],\n\n /**\n * ProseMirror plugins\n */\n addProseMirrorPlugins?: (this: {\n name: string,\n options: Options,\n editor: Editor,\n type: MarkType,\n parent: ParentConfig<MarkConfig<Options>>['addProseMirrorPlugins'],\n }) => Plugin[],\n\n /**\n * Extensions\n */\n addExtensions?: (this: {\n name: string,\n options: Options,\n parent: ParentConfig<MarkConfig<Options>>['addExtensions'],\n }) => Extensions,\n\n /**\n * Extend Node Schema\n */\n extendNodeSchema?: ((\n this: {\n name: string,\n options: Options,\n parent: ParentConfig<MarkConfig<Options>>['extendNodeSchema'],\n },\n extension: Node,\n ) => Record<string, any>) | null,\n\n /**\n * Extend Mark Schema\n */\n extendMarkSchema?: ((\n this: {\n name: string,\n options: Options,\n parent: ParentConfig<MarkConfig<Options>>['extendMarkSchema'],\n },\n extension: Mark,\n ) => Record<string, any>) | null,\n\n /**\n * The editor is not ready yet.\n */\n onBeforeCreate?: ((this: {\n name: string,\n options: Options,\n editor: Editor,\n type: MarkType,\n parent: ParentConfig<MarkConfig<Options>>['onBeforeCreate'],\n }) => void) | null,\n\n /**\n * The editor is ready.\n */\n onCreate?: ((this: {\n name: string,\n options: Options,\n editor: Editor,\n type: MarkType,\n parent: ParentConfig<MarkConfig<Options>>['onCreate'],\n }) => void) | null,\n\n /**\n * The content has changed.\n */\n onUpdate?: ((this: {\n name: string,\n options: Options,\n editor: Editor,\n type: MarkType,\n parent: ParentConfig<MarkConfig<Options>>['onUpdate'],\n }) => void) | null,\n\n /**\n * The selection has changed.\n */\n onSelectionUpdate?: ((this: {\n name: string,\n options: Options,\n editor: Editor,\n type: MarkType,\n parent: ParentConfig<MarkConfig<Options>>['onSelectionUpdate'],\n }) => void) | null,\n\n /**\n * The editor state has changed.\n */\n onTransaction?: ((\n this: {\n name: string,\n options: Options,\n editor: Editor,\n type: MarkType,\n parent: ParentConfig<MarkConfig<Options>>['onTransaction'],\n },\n props: {\n transaction: Transaction,\n },\n ) => void) | null,\n\n /**\n * The editor is focused.\n */\n onFocus?: ((\n this: {\n name: string,\n options: Options,\n editor: Editor,\n type: MarkType,\n parent: ParentConfig<MarkConfig<Options>>['onFocus'],\n },\n props: {\n event: FocusEvent,\n },\n ) => void) | null,\n\n /**\n * The editor isn’t focused anymore.\n */\n onBlur?: ((\n this: {\n name: string,\n options: Options,\n editor: Editor,\n type: MarkType,\n parent: ParentConfig<MarkConfig<Options>>['onBlur'],\n },\n props: {\n event: FocusEvent,\n },\n ) => void) | null,\n\n /**\n * The editor is destroyed.\n */\n onDestroy?: ((this: {\n name: string,\n options: Options,\n editor: Editor,\n type: MarkType,\n parent: ParentConfig<MarkConfig<Options>>['onDestroy'],\n }) => void) | null,\n\n /**\n * Keep mark after split node\n */\n keepOnSplit?: boolean | (() => boolean),\n\n /**\n * Inclusive\n */\n inclusive?: MarkSpec['inclusive'] | ((this: {\n name: string,\n options: Options,\n parent: ParentConfig<MarkConfig<Options>>['inclusive'],\n }) => MarkSpec['inclusive']),\n\n /**\n * Excludes\n */\n excludes?: MarkSpec['excludes'] | ((this: {\n name: string,\n options: Options,\n parent: ParentConfig<MarkConfig<Options>>['excludes'],\n }) => MarkSpec['excludes']),\n\n /**\n * Group\n */\n group?: MarkSpec['group'] | ((this: {\n name: string,\n options: Options,\n parent: ParentConfig<MarkConfig<Options>>['group'],\n }) => MarkSpec['group']),\n\n /**\n * Spanning\n */\n spanning?: MarkSpec['spanning'] | ((this: {\n name: string,\n options: Options,\n parent: ParentConfig<MarkConfig<Options>>['spanning'],\n }) => MarkSpec['spanning']),\n\n /**\n * Parse HTML\n */\n parseHTML?: (\n this: {\n name: string,\n options: Options,\n parent: ParentConfig<MarkConfig<Options>>['parseHTML'],\n },\n ) => MarkSpec['parseDOM'],\n\n /**\n * Render HTML\n */\n renderHTML?: ((\n this: {\n name: string,\n options: Options,\n parent: ParentConfig<MarkConfig<Options>>['renderHTML'],\n },\n props: {\n mark: ProseMirrorMark,\n HTMLAttributes: Record<string, any>,\n },\n ) => DOMOutputSpec) | null,\n\n /**\n * Attributes\n */\n addAttributes?: (\n this: {\n name: string,\n options: Options,\n parent: ParentConfig<MarkConfig<Options>>['addAttributes'],\n },\n ) => Attributes | {},\n }\n}\n\nexport class Mark<Options = any> {\n type = 'mark'\n\n name = 'mark'\n\n parent: Mark | null = null\n\n child: Mark | null = null\n\n options: Options\n\n config: MarkConfig = {\n name: this.name,\n defaultOptions: {},\n }\n\n constructor(config: Partial<MarkConfig<Options>> = {}) {\n this.config = {\n ...this.config,\n ...config,\n }\n\n this.name = this.config.name\n this.options = this.config.defaultOptions\n }\n\n static create<O>(config: Partial<MarkConfig<O>> = {}) {\n return new Mark<O>(config)\n }\n\n configure(options: Partial<Options> = {}) {\n // return a new instance so we can use the same extension\n // with different calls of `configure`\n const extension = this.extend()\n\n extension.options = mergeDeep(this.options, options) as Options\n\n return extension\n }\n\n extend<ExtendedOptions = Options>(extendedConfig: Partial<MarkConfig<ExtendedOptions>> = {}) {\n const extension = new Mark<ExtendedOptions>(extendedConfig)\n\n extension.parent = this\n\n this.child = extension\n\n extension.name = extendedConfig.name\n ? extendedConfig.name\n : extension.parent.name\n\n extension.options = extendedConfig.defaultOptions\n ? extendedConfig.defaultOptions\n : extension.parent.options\n\n return extension\n }\n}\n","export default function isiOS(): boolean {\n return [\n 'iPad Simulator',\n 'iPhone Simulator',\n 'iPod Simulator',\n 'iPad',\n 'iPhone',\n 'iPod',\n ].includes(navigator.platform)\n // iPad on iOS 13 detection\n || (navigator.userAgent.includes('Mac') && 'ontouchend' in document)\n}\n","import { Decoration, NodeView as ProseMirrorNodeView } from 'prosemirror-view'\nimport { NodeSelection } from 'prosemirror-state'\nimport { Node as ProseMirrorNode } from 'prosemirror-model'\nimport { Editor as CoreEditor } from './Editor'\nimport { Node } from './Node'\nimport isiOS from './utilities/isiOS'\nimport { NodeViewRendererProps, NodeViewRendererOptions } from './types'\n\nexport class NodeView<\n Component,\n Editor extends CoreEditor = CoreEditor,\n Options extends NodeViewRendererOptions = NodeViewRendererOptions,\n> implements ProseMirrorNodeView {\n\n component: Component\n\n editor: Editor\n\n options: Options\n\n extension: Node\n\n node: ProseMirrorNode\n\n decorations: Decoration[]\n\n getPos: any\n\n isDragging = false\n\n constructor(component: Component, props: NodeViewRendererProps, options?: Partial<Options>) {\n this.component = component\n this.editor = props.editor as Editor\n this.options = {\n stopEvent: null,\n ignoreMutation: null,\n ...options,\n } as Options\n this.extension = props.extension\n this.node = props.node\n this.decorations = props.decorations\n this.getPos = props.getPos\n this.mount()\n }\n\n mount() {\n // eslint-disable-next-line\n return\n }\n\n get dom(): Element | null {\n return null\n }\n\n get contentDOM(): Element | null {\n return null\n }\n\n onDragStart(event: DragEvent) {\n const { view } = this.editor\n const target = (event.target as HTMLElement)\n\n // get the drag handle element\n // `closest` is not available for text nodes so we may have to use its parent\n const dragHandle = target.nodeType === 3\n ? target.parentElement?.closest('[data-drag-handle]')\n : target.closest('[data-drag-handle]')\n\n if (\n !this.dom\n || this.contentDOM?.contains(target)\n || !dragHandle\n ) {\n return\n }\n\n let x = 0\n let y = 0\n\n // calculate offset for drag element if we use a different drag handle element\n if (this.dom !== dragHandle) {\n const domBox = this.dom.getBoundingClientRect()\n const handleBox = dragHandle.getBoundingClientRect()\n\n x = handleBox.x - domBox.x + event.offsetX\n y = handleBox.y - domBox.y + event.offsetY\n }\n\n event.dataTransfer?.setDragImage(this.dom, x, y)\n\n // we need to tell ProseMirror that we want to move the whole node\n // so we create a NodeSelection\n const selection = NodeSelection.create(view.state.doc, this.getPos())\n const transaction = view.state.tr.setSelection(selection)\n\n view.dispatch(transaction)\n }\n\n stopEvent(event: Event) {\n if (!this.dom) {\n return false\n }\n\n if (typeof this.options.stopEvent === 'function') {\n return this.options.stopEvent({ event })\n }\n\n const target = (event.target as HTMLElement)\n const isInElement = this.dom.contains(target) && !this.contentDOM?.contains(target)\n\n // any event from child nodes should be handled by ProseMirror\n if (!isInElement) {\n return false\n }\n\n const isInput = ['INPUT', 'BUTTON', 'SELECT', 'TEXTAREA'].includes(target.tagName)\n || target.isContentEditable\n\n // any input event within node views should be ignored by ProseMirror\n if (isInput) {\n return true\n }\n\n const { isEditable } = this.editor\n const { isDragging } = this\n const isDraggable = !!this.node.type.spec.draggable\n const isSelectable = NodeSelection.isSelectable(this.node)\n const isCopyEvent = event.type === 'copy'\n const isPasteEvent = event.type === 'paste'\n const isCutEvent = event.type === 'cut'\n const isClickEvent = event.type === 'mousedown'\n const isDragEvent = event.type.startsWith('drag') || event.type === 'drop'\n\n // ProseMirror tries to drag selectable nodes\n // even if `draggable` is set to `false`\n // this fix prevents that\n if (!isDraggable && isSelectable && isDragEvent) {\n event.preventDefault()\n }\n\n if (isDraggable && isDragEvent && !isDragging) {\n event.preventDefault()\n return false\n }\n\n // we have to store that dragging started\n if (isDraggable && isEditable && !isDragging && isClickEvent) {\n const dragHandle = target.closest('[data-drag-handle]')\n const isValidDragHandle = dragHandle\n && (this.dom === dragHandle || (this.dom.contains(dragHandle)))\n\n if (isValidDragHandle) {\n this.isDragging = true\n\n document.addEventListener('dragend', () => {\n this.isDragging = false\n }, { once: true })\n\n document.addEventListener('mouseup', () => {\n this.isDragging = false\n }, { once: true })\n }\n }\n\n // these events are handled by prosemirror\n if (\n isDragging\n || isCopyEvent\n || isPasteEvent\n || isCutEvent\n || (isClickEvent && isSelectable)\n ) {\n return false\n }\n\n return true\n }\n\n ignoreMutation(mutation: MutationRecord | { type: 'selection', target: Element }) {\n if (!this.dom || !this.contentDOM) {\n return true\n }\n\n if (typeof this.options.ignoreMutation === 'function') {\n return this.options.ignoreMutation({ mutation })\n }\n\n // a leaf/atom node is like a black box for ProseMirror\n // and should be fully handled by the node view\n if (this.node.isLeaf || this.node.isAtom) {\n return true\n }\n\n // ProseMirror should handle any selections\n if (mutation.type === 'selection') {\n return false\n }\n\n // try to prevent a bug on iOS that will break node views on enter\n // this is because ProseMirror can’t preventDispatch on enter\n // this will lead to a re-render of the node view on enter\n // see: https://github.com/ueberdosis/tiptap/issues/1214\n if (this.dom.contains(mutation.target) && mutation.type === 'childList' && isiOS()) {\n const changedNodes = [\n ...Array.from(mutation.addedNodes),\n ...Array.from(mutation.removedNodes),\n ] as HTMLElement[]\n\n // we’ll check if every changed node is contentEditable\n // to make sure it’s probably mutated by ProseMirror\n if (changedNodes.every(node => node.isContentEditable)) {\n return false\n }\n }\n\n // we will allow mutation contentDOM with attributes\n // so we can for example adding classes within our node view\n if (this.contentDOM === mutation.target && mutation.type === 'attributes') {\n return true\n }\n\n // ProseMirror should handle any changes within contentDOM\n if (this.contentDOM.contains(mutation.target)) {\n return false\n }\n\n return true\n }\n\n updateAttributes(attributes: {}) {\n this.editor.commands.command(({ tr }) => {\n const pos = this.getPos()\n\n tr.setNodeMarkup(pos, undefined, {\n ...this.node.attrs,\n ...attributes,\n })\n\n return true\n })\n }\n\n deleteNode(): void {\n const from = this.getPos()\n const to = from + this.node.nodeSize\n\n this.editor.commands.deleteRange({ from, to })\n }\n}\n","import { Transaction } from 'prosemirror-state'\n\nexport interface TrackerResult {\n position: number,\n deleted: boolean,\n}\n\nexport class Tracker {\n\n transaction: Transaction\n\n currentStep: number\n\n constructor(transaction: Transaction) {\n this.transaction = transaction\n this.currentStep = this.transaction.steps.length\n }\n\n map(position: number): TrackerResult {\n let deleted = false\n\n const mappedPosition = this.transaction.steps\n .slice(this.currentStep)\n .reduce((newPosition, step) => {\n const mapResult = step\n .getMap()\n .mapResult(newPosition)\n\n if (mapResult.deleted) {\n deleted = true\n }\n\n return mapResult.pos\n }, position)\n\n return {\n position: mappedPosition,\n deleted,\n }\n }\n\n}\n","import { InputRule } from 'prosemirror-inputrules'\nimport { NodeType } from 'prosemirror-model'\n\nexport default function (regexp: RegExp, type: NodeType, getAttributes?: (match: any) => any): InputRule {\n return new InputRule(regexp, (state, match, start, end) => {\n const attributes = getAttributes instanceof Function\n ? getAttributes(match)\n : getAttributes\n const { tr } = state\n\n if (match[0]) {\n tr.replaceWith(start - 1, end, type.create(attributes))\n }\n\n return tr\n })\n}\n","import { EditorState } from 'prosemirror-state'\nimport { MarkRange } from '../types'\n\nexport default function getMarksBetween(from: number, to: number, state: EditorState): MarkRange[] {\n let marks: MarkRange[] = []\n\n state.doc.nodesBetween(from, to, (node, pos) => {\n marks = [...marks, ...node.marks.map(mark => ({\n from: pos,\n to: pos + node.nodeSize,\n mark,\n }))]\n })\n\n return marks\n}\n","import { InputRule } from 'prosemirror-inputrules'\nimport { MarkType } from 'prosemirror-model'\nimport getMarksBetween from '../helpers/getMarksBetween'\n\nexport default function (regexp: RegExp, markType: MarkType, getAttributes?: Function): InputRule {\n return new InputRule(regexp, (state, match, start, end) => {\n const attributes = getAttributes instanceof Function\n ? getAttributes(match)\n : getAttributes\n const { tr } = state\n const captureGroup = match[match.length - 1]\n const fullMatch = match[0]\n let markEnd = end\n\n if (captureGroup) {\n const startSpaces = fullMatch.search(/\\S/)\n const textStart = start + fullMatch.indexOf(captureGroup)\n const textEnd = textStart + captureGroup.length\n\n const excludedMarks = getMarksBetween(start, end, state)\n .filter(item => {\n // TODO: PR to add excluded to MarkType\n // @ts-ignore\n const { excluded } = item.mark.type\n return excluded.find((type: MarkType) => type.name === markType.name)\n })\n .filter(item => item.to > textStart)\n\n if (excludedMarks.length) {\n return null\n }\n\n if (textEnd < end) {\n tr.delete(textEnd, end)\n }\n\n if (textStart > start) {\n tr.delete(start + startSpaces, textStart)\n }\n\n markEnd = start + startSpaces + captureGroup.length\n\n tr.addMark(start + startSpaces, markEnd, markType.create(attributes))\n\n tr.removeStoredMark(markType)\n }\n\n return tr\n })\n}\n","import { Plugin, PluginKey } from 'prosemirror-state'\nimport { Slice, Fragment, MarkType } from 'prosemirror-model'\n\nexport default function (\n regexp: RegExp,\n type: MarkType,\n getAttributes?:\n | Record<string, any>\n | ((match: RegExpExecArray) => Record<string, any>)\n | false\n | null\n ,\n): Plugin {\n const handler = (fragment: Fragment, parent?: any) => {\n const nodes: any[] = []\n\n fragment.forEach(child => {\n if (child.isText && child.text) {\n const { text } = child\n let pos = 0\n let match\n\n // eslint-disable-next-line\n while ((match = regexp.exec(text)) !== null) {\n const outerMatch = Math.max(match.length - 2, 0)\n const innerMatch = Math.max(match.length - 1, 0)\n\n if (parent?.type.allowsMarkType(type)) {\n const start = match.index\n const matchStart = start + match[0].indexOf(match[outerMatch])\n const matchEnd = matchStart + match[outerMatch].length\n const textStart = matchStart + match[outerMatch].lastIndexOf(match[innerMatch])\n const textEnd = textStart + match[innerMatch].length\n const attrs = getAttributes instanceof Function\n ? getAttributes(match)\n : getAttributes\n\n if (!attrs && attrs !== undefined) {\n continue\n }\n\n // adding text before markdown to nodes\n if (matchStart > 0) {\n nodes.push(child.cut(pos, matchStart))\n }\n\n // adding the markdown part to nodes\n nodes.push(child\n .cut(textStart, textEnd)\n .mark(type.create(attrs).addToSet(child.marks)))\n\n pos = matchEnd\n }\n }\n\n // adding rest of text to nodes\n if (pos < text.length) {\n nodes.push(child.cut(pos))\n }\n } else {\n nodes.push(child.copy(handler(child.content, child)))\n }\n })\n\n return Fragment.fromArray(nodes)\n }\n\n return new Plugin({\n key: new PluginKey('markPasteRule'),\n props: {\n transformPasted: slice => {\n return new Slice(handler(slice.content), slice.openStart, slice.openEnd)\n },\n },\n })\n}\n","import { Node as ProseMirrorNode } from 'prosemirror-model'\nimport { Predicate, NodeWithPos } from '../types'\n\nexport default function findChildren(node: ProseMirrorNode, predicate: Predicate): NodeWithPos[] {\n const nodesWithPos: NodeWithPos[] = []\n\n node.descendants((child, pos) => {\n if (predicate(child)) {\n nodesWithPos.push({\n node: child,\n pos,\n })\n }\n })\n\n return nodesWithPos\n}\n","import { Node as ProseMirrorNode } from 'prosemirror-model'\nimport { Predicate, Range, NodeWithPos } from '../types'\n\n/**\n * Same as `findChildren` but searches only within a `range`.\n */\nexport default function findChildrenInRange(node: ProseMirrorNode, range: Range, predicate: Predicate): NodeWithPos[] {\n const nodesWithPos: NodeWithPos[] = []\n\n // if (range.from === range.to) {\n // const nodeAt = node.nodeAt(range.from)\n\n // if (nodeAt) {\n // nodesWithPos.push({\n // node: nodeAt,\n // pos: range.from,\n // })\n // }\n // }\n\n node.nodesBetween(range.from, range.to, (child, pos) => {\n if (predicate(child)) {\n nodesWithPos.push({\n node: child,\n pos,\n })\n }\n })\n\n return nodesWithPos\n}\n","import { Schema } from 'prosemirror-model'\nimport getSchemaByResolvedExtensions from './getSchemaByResolvedExtensions'\nimport ExtensionManager from '../ExtensionManager'\nimport { Extensions } from '../types'\n\nexport default function getSchema(extensions: Extensions): Schema {\n const resolvedExtensions = ExtensionManager.resolve(extensions)\n\n return getSchemaByResolvedExtensions(resolvedExtensions)\n}\n","import { Node } from 'prosemirror-model'\nimport getSchema from './getSchema'\nimport getHTMLFromFragment from './getHTMLFromFragment'\nimport { Extensions, JSONContent } from '../types'\n\nexport default function generateHTML(doc: JSONContent, extensions: Extensions): string {\n const schema = getSchema(extensions)\n const contentNode = Node.fromJSON(schema, doc)\n\n return getHTMLFromFragment(contentNode, schema)\n}\n","import { DOMParser } from 'prosemirror-model'\nimport getSchema from './getSchema'\nimport elementFromString from '../utilities/elementFromString'\nimport { Extensions } from '../types'\n\nexport default function generateJSON(html: string, extensions: Extensions): Record<string, any> {\n const schema = getSchema(extensions)\n const dom = elementFromString(html)\n\n return DOMParser.fromSchema(schema)\n .parse(dom)\n .toJSON()\n}\n","import { Node as ProseMirrorNode } from 'prosemirror-model'\nimport { JSONContent } from '../types'\n\ninterface DebugJSONContent extends JSONContent {\n from: number,\n to: number,\n}\n\n/**\n * Returns a node tree with node positions.\n */\nexport default function getDebugJSON(node: ProseMirrorNode, startOffset = 0) {\n const nodes: DebugJSONContent[] = []\n\n node.forEach((n, offset) => {\n const from = startOffset + offset\n const to = from + n.nodeSize\n const marks = n.marks.map(mark => ({\n type: mark.type.name,\n attrs: { ...mark.attrs },\n }))\n const attrs = { ...n.attrs }\n const content = getDebugJSON(n, from + 1)\n const output: DebugJSONContent = {\n type: n.type.name,\n from,\n to,\n }\n\n if (Object.keys(attrs).length) {\n output.attrs = attrs\n }\n\n if (marks.length) {\n output.marks = marks\n }\n\n if (content.length) {\n output.content = content\n }\n\n if (n.text) {\n output.text = n.text\n }\n\n nodes.push(output)\n })\n\n return nodes\n}\n","import { NodeSelection } from 'prosemirror-state'\nimport isObject from '../utilities/isObject'\n\nexport default function isNodeSelection(value: unknown): value is NodeSelection {\n return isObject(value) && value instanceof NodeSelection\n}\n","import { EditorView } from 'prosemirror-view'\n\nexport default function posToDOMRect(view: EditorView, from: number, to: number): DOMRect {\n const start = view.coordsAtPos(from)\n const end = view.coordsAtPos(to, -1)\n const top = Math.min(start.top, end.top)\n const bottom = Math.max(start.bottom, end.bottom)\n const left = Math.min(start.left, end.left)\n const right = Math.max(start.right, end.right)\n const width = right - left\n const height = bottom - top\n const x = left\n const y = top\n const data = {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x,\n y,\n }\n\n return {\n ...data,\n toJSON: () => data,\n }\n}\n"],"names":["Fragment","DOMParser","DOMSerializer","Schema","keymap","inputRulesPlugin","Plugin","PluginKey","liftTarget","originalCreateParagraphNear","originalDeleteSelection","originalExitCode","TextSelection","Selection","ReplaceStep","ReplaceAroundStep","originalJoinBackward","originalJoinForward","originalLift","originalLiftEmptyBlock","originalLiftListItem","originalNewlineInCode","originalSelectAll","originalSelectNodeBackward","originalSelectNodeForward","originalSelectParentNode","setBlockType","NodeSelection","originalSinkListItem","canSplit","Slice","lift","wrapIn","originalUndoInputRule","originalWrapIn","originalWrapInList","blur","clearContent","clearNodes","command","createParagraphNear","deleteNode","deleteRange","deleteSelection","enter","exitCode","extendMarkRange","first","focus","forEach","insertContent","insertContentAt","joinBackward","joinForward","keyboardShortcut","liftEmptyBlock","liftListItem","newlineInCode","resetAttributes","scrollIntoView","selectAll","selectNodeBackward","selectNodeForward","selectParentNode","setContent","setMark","setMeta","setNode","setNodeSelection","setTextSelection","sinkListItem","splitBlock","splitListItem","toggleList","toggleMark","toggleNode","toggleWrap","undoInputRule","unsetAllMarks","unsetMark","updateAttributes","wrapInList","EditorView","EditorState","InputRule","Node"],"mappings":"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"}
|