{"version":3,"file":"static/chunks/22747d63-9d67d2280fb84975.js","mappings":"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","sources":["webpack://_N_E/../../node_modules/@tiptap/core/dist/index.js"],"sourcesContent":["import { Plugin, PluginKey, TextSelection, Selection, NodeSelection, EditorState } from '@tiptap/pm/state';\nimport { EditorView } from '@tiptap/pm/view';\nimport { keymap } from '@tiptap/pm/keymap';\nimport { Schema, Fragment, DOMParser, DOMSerializer, Node as Node$1, Slice } from '@tiptap/pm/model';\nimport { liftTarget, ReplaceStep, ReplaceAroundStep, joinPoint, Transform, canSplit, canJoin, findWrapping } from '@tiptap/pm/transform';\nimport { createParagraphNear as createParagraphNear$1, deleteSelection as deleteSelection$1, exitCode as exitCode$1, joinUp as joinUp$1, joinDown as joinDown$1, joinBackward as joinBackward$1, joinForward as joinForward$1, joinTextblockBackward as joinTextblockBackward$1, joinTextblockForward as joinTextblockForward$1, lift as lift$1, liftEmptyBlock as liftEmptyBlock$1, newlineInCode as newlineInCode$1, selectNodeBackward as selectNodeBackward$1, selectNodeForward as selectNodeForward$1, selectParentNode as selectParentNode$1, selectTextblockEnd as selectTextblockEnd$1, selectTextblockStart as selectTextblockStart$1, setBlockType, wrapIn as wrapIn$1 } from '@tiptap/pm/commands';\nimport { liftListItem as liftListItem$1, sinkListItem as sinkListItem$1, wrapInList as wrapInList$1 } from '@tiptap/pm/schema-list';\n\n/**\n * Takes a Transaction & Editor State and turns it into a chainable state object\n * @param config The transaction and state to create the chainable state from\n * @returns A chainable Editor state object\n */\nfunction createChainableState(config) {\n const { state, transaction } = config;\n let { selection } = transaction;\n let { doc } = transaction;\n let { storedMarks } = transaction;\n return {\n ...state,\n apply: state.apply.bind(state),\n applyTransaction: state.applyTransaction.bind(state),\n plugins: state.plugins,\n schema: state.schema,\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 = transaction.selection;\n doc = transaction.doc;\n storedMarks = transaction.storedMarks;\n return transaction;\n },\n };\n}\n\nclass CommandManager {\n constructor(props) {\n this.editor = props.editor;\n this.rawCommands = this.editor.extensionManager.commands;\n this.customState = props.state;\n }\n get hasCustomState() {\n return !!this.customState;\n }\n get state() {\n return this.customState || this.editor.state;\n }\n get commands() {\n const { rawCommands, editor, state } = this;\n const { view } = editor;\n const { tr } = state;\n const props = this.buildProps(tr);\n return Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => {\n const method = (...args) => {\n const callback = command(...args)(props);\n if (!tr.getMeta('preventDispatch') && !this.hasCustomState) {\n view.dispatch(tr);\n }\n return callback;\n };\n return [name, method];\n }));\n }\n get chain() {\n return () => this.createChain();\n }\n get can() {\n return () => this.createCan();\n }\n createChain(startTr, shouldDispatch = true) {\n const { rawCommands, editor, state } = this;\n const { view } = editor;\n const callbacks = [];\n const hasStartTransaction = !!startTr;\n const tr = startTr || state.tr;\n const run = () => {\n if (!hasStartTransaction\n && shouldDispatch\n && !tr.getMeta('preventDispatch')\n && !this.hasCustomState) {\n view.dispatch(tr);\n }\n return callbacks.every(callback => callback === true);\n };\n const chain = {\n ...Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => {\n const chainedCommand = (...args) => {\n const props = this.buildProps(tr, shouldDispatch);\n const callback = command(...args)(props);\n callbacks.push(callback);\n return chain;\n };\n return [name, chainedCommand];\n })),\n run,\n };\n return chain;\n }\n createCan(startTr) {\n const { rawCommands, state } = this;\n const dispatch = false;\n const tr = startTr || state.tr;\n const props = this.buildProps(tr, dispatch);\n const formattedCommands = Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => {\n return [name, (...args) => command(...args)({ ...props, dispatch: undefined })];\n }));\n return {\n ...formattedCommands,\n chain: () => this.createChain(tr, dispatch),\n };\n }\n buildProps(tr, shouldDispatch = true) {\n const { rawCommands, editor, state } = this;\n const { view } = editor;\n const props = {\n tr,\n editor,\n view,\n state: createChainableState({\n state,\n transaction: tr,\n }),\n dispatch: shouldDispatch ? () => undefined : undefined,\n chain: () => this.createChain(tr, shouldDispatch),\n can: () => this.createCan(tr),\n get commands() {\n return Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => {\n return [name, (...args) => command(...args)(props)];\n }));\n },\n };\n return props;\n }\n}\n\nclass EventEmitter {\n constructor() {\n this.callbacks = {};\n }\n on(event, fn) {\n if (!this.callbacks[event]) {\n this.callbacks[event] = [];\n }\n this.callbacks[event].push(fn);\n return this;\n }\n emit(event, ...args) {\n const callbacks = this.callbacks[event];\n if (callbacks) {\n callbacks.forEach(callback => callback.apply(this, args));\n }\n return this;\n }\n off(event, fn) {\n const callbacks = this.callbacks[event];\n if (callbacks) {\n if (fn) {\n this.callbacks[event] = callbacks.filter(callback => callback !== fn);\n }\n else {\n delete this.callbacks[event];\n }\n }\n return this;\n }\n removeAllListeners() {\n this.callbacks = {};\n }\n}\n\n/**\n * Returns a field from an extension\n * @param extension The Tiptap extension\n * @param field The field, for example `renderHTML` or `priority`\n * @param context The context object that should be passed as `this` into the function\n * @returns The field value\n */\nfunction getExtensionField(extension, field, context) {\n if (extension.config[field] === undefined && extension.parent) {\n return getExtensionField(extension.parent, field, context);\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 return value;\n }\n return extension.config[field];\n}\n\nfunction splitExtensions(extensions) {\n const baseExtensions = extensions.filter(extension => extension.type === 'extension');\n const nodeExtensions = extensions.filter(extension => extension.type === 'node');\n const markExtensions = extensions.filter(extension => extension.type === 'mark');\n return {\n baseExtensions,\n nodeExtensions,\n markExtensions,\n };\n}\n\n/**\n * Get a list of all extension attributes defined in `addAttribute` and `addGlobalAttribute`.\n * @param extensions List of extensions\n */\nfunction getAttributesFromExtensions(extensions) {\n const extensionAttributes = [];\n const { nodeExtensions, markExtensions } = splitExtensions(extensions);\n const nodeAndMarkExtensions = [...nodeExtensions, ...markExtensions];\n const defaultAttribute = {\n default: null,\n rendered: true,\n renderHTML: null,\n parseHTML: null,\n keepOnSplit: true,\n isRequired: false,\n };\n extensions.forEach(extension => {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n extensions: nodeAndMarkExtensions,\n };\n const addGlobalAttributes = getExtensionField(extension, 'addGlobalAttributes', context);\n if (!addGlobalAttributes) {\n return;\n }\n const globalAttributes = addGlobalAttributes();\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 nodeAndMarkExtensions.forEach(extension => {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n };\n const addAttributes = getExtensionField(extension, 'addAttributes', context);\n if (!addAttributes) {\n return;\n }\n // TODO: remove `as Attributes`\n const attributes = addAttributes();\n Object\n .entries(attributes)\n .forEach(([name, attribute]) => {\n const mergedAttr = {\n ...defaultAttribute,\n ...attribute,\n };\n if (typeof (mergedAttr === null || mergedAttr === void 0 ? void 0 : mergedAttr.default) === 'function') {\n mergedAttr.default = mergedAttr.default();\n }\n if ((mergedAttr === null || mergedAttr === void 0 ? void 0 : mergedAttr.isRequired) && (mergedAttr === null || mergedAttr === void 0 ? void 0 : mergedAttr.default) === undefined) {\n delete mergedAttr.default;\n }\n extensionAttributes.push({\n type: extension.name,\n name,\n attribute: mergedAttr,\n });\n });\n });\n return extensionAttributes;\n}\n\nfunction getNodeType(nameOrType, schema) {\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 return schema.nodes[nameOrType];\n }\n return nameOrType;\n}\n\nfunction mergeAttributes(...objects) {\n return objects\n .filter(item => !!item)\n .reduce((items, item) => {\n const mergedAttributes = { ...items };\n Object.entries(item).forEach(([key, value]) => {\n const exists = mergedAttributes[key];\n if (!exists) {\n mergedAttributes[key] = value;\n return;\n }\n if (key === 'class') {\n const valueClasses = value ? value.split(' ') : [];\n const existingClasses = mergedAttributes[key] ? mergedAttributes[key].split(' ') : [];\n const insertClasses = valueClasses.filter(valueClass => !existingClasses.includes(valueClass));\n mergedAttributes[key] = [...existingClasses, ...insertClasses].join(' ');\n }\n else if (key === 'style') {\n const newStyles = value ? value.split(';').map((style) => style.trim()).filter(Boolean) : [];\n const existingStyles = mergedAttributes[key] ? mergedAttributes[key].split(';').map((style) => style.trim()).filter(Boolean) : [];\n const styleMap = new Map();\n existingStyles.forEach(style => {\n const [property, val] = style.split(':').map(part => part.trim());\n styleMap.set(property, val);\n });\n newStyles.forEach(style => {\n const [property, val] = style.split(':').map(part => part.trim());\n styleMap.set(property, val);\n });\n mergedAttributes[key] = Array.from(styleMap.entries()).map(([property, val]) => `${property}: ${val}`).join('; ');\n }\n else {\n mergedAttributes[key] = value;\n }\n });\n return mergedAttributes;\n }, {});\n}\n\nfunction getRenderedAttributes(nodeOrMark, extensionAttributes) {\n return extensionAttributes\n .filter(attribute => attribute.type === nodeOrMark.type.name)\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 return item.attribute.renderHTML(nodeOrMark.attrs) || {};\n })\n .reduce((attributes, attribute) => mergeAttributes(attributes, attribute), {});\n}\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\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 */\nfunction callOrReturn(value, context = undefined, ...props) {\n if (isFunction(value)) {\n if (context) {\n return value.bind(context)(...props);\n }\n return value(...props);\n }\n return value;\n}\n\nfunction isEmptyObject(value = {}) {\n return Object.keys(value).length === 0 && value.constructor === Object;\n}\n\nfunction fromString(value) {\n if (typeof value !== 'string') {\n return value;\n }\n if (value.match(/^[+-]?(?:\\d*\\.)?\\d+$/)) {\n return Number(value);\n }\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n return value;\n}\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 */\nfunction injectExtensionAttributesToParseRule(parseRule, extensionAttributes) {\n if ('style' in parseRule) {\n return parseRule;\n }\n return {\n ...parseRule,\n getAttrs: (node) => {\n const oldAttributes = parseRule.getAttrs ? parseRule.getAttrs(node) : parseRule.attrs;\n if (oldAttributes === false) {\n return false;\n }\n const newAttributes = extensionAttributes.reduce((items, item) => {\n const value = item.attribute.parseHTML\n ? item.attribute.parseHTML(node)\n : fromString((node).getAttribute(item.name));\n if (value === null || value === undefined) {\n return items;\n }\n return {\n ...items,\n [item.name]: value,\n };\n }, {});\n return { ...oldAttributes, ...newAttributes };\n },\n };\n}\n\nfunction cleanUpSchemaItem(data) {\n return Object.fromEntries(\n // @ts-ignore\n Object.entries(data).filter(([key, value]) => {\n if (key === 'attrs' && isEmptyObject(value)) {\n return false;\n }\n return value !== null && value !== undefined;\n }));\n}\n/**\n * Creates a new Prosemirror schema based on the given extensions.\n * @param extensions An array of Tiptap extensions\n * @param editor The editor instance\n * @returns A Prosemirror schema\n */\nfunction getSchemaByResolvedExtensions(extensions, editor) {\n var _a;\n const allAttributes = getAttributesFromExtensions(extensions);\n const { nodeExtensions, markExtensions } = splitExtensions(extensions);\n const topNode = (_a = nodeExtensions.find(extension => getExtensionField(extension, 'topNode'))) === null || _a === void 0 ? void 0 : _a.name;\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 storage: extension.storage,\n editor,\n };\n const extraNodeFields = extensions.reduce((fields, e) => {\n const extendNodeSchema = getExtensionField(e, 'extendNodeSchema', context);\n return {\n ...fields,\n ...(extendNodeSchema ? extendNodeSchema(extension) : {}),\n };\n }, {});\n const schema = cleanUpSchemaItem({\n ...extraNodeFields,\n content: callOrReturn(getExtensionField(extension, 'content', context)),\n marks: callOrReturn(getExtensionField(extension, 'marks', context)),\n group: callOrReturn(getExtensionField(extension, 'group', context)),\n inline: callOrReturn(getExtensionField(extension, 'inline', context)),\n atom: callOrReturn(getExtensionField(extension, 'atom', context)),\n selectable: callOrReturn(getExtensionField(extension, 'selectable', context)),\n draggable: callOrReturn(getExtensionField(extension, 'draggable', context)),\n code: callOrReturn(getExtensionField(extension, 'code', context)),\n whitespace: callOrReturn(getExtensionField(extension, 'whitespace', context)),\n defining: callOrReturn(getExtensionField(extension, 'defining', context)),\n isolating: callOrReturn(getExtensionField(extension, 'isolating', context)),\n attrs: Object.fromEntries(extensionAttributes.map(extensionAttribute => {\n var _a;\n return [extensionAttribute.name, { default: (_a = extensionAttribute === null || extensionAttribute === void 0 ? void 0 : extensionAttribute.attribute) === null || _a === void 0 ? void 0 : _a.default }];\n })),\n });\n const parseHTML = callOrReturn(getExtensionField(extension, 'parseHTML', context));\n if (parseHTML) {\n schema.parseDOM = parseHTML.map(parseRule => injectExtensionAttributesToParseRule(parseRule, extensionAttributes));\n }\n const renderHTML = getExtensionField(extension, 'renderHTML', context);\n if (renderHTML) {\n schema.toDOM = node => renderHTML({\n node,\n HTMLAttributes: getRenderedAttributes(node, extensionAttributes),\n });\n }\n const renderText = getExtensionField(extension, 'renderText', context);\n if (renderText) {\n schema.toText = renderText;\n }\n return [extension.name, schema];\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 storage: extension.storage,\n editor,\n };\n const extraMarkFields = extensions.reduce((fields, e) => {\n const extendMarkSchema = getExtensionField(e, 'extendMarkSchema', context);\n return {\n ...fields,\n ...(extendMarkSchema ? extendMarkSchema(extension) : {}),\n };\n }, {});\n const schema = cleanUpSchemaItem({\n ...extraMarkFields,\n inclusive: callOrReturn(getExtensionField(extension, 'inclusive', context)),\n excludes: callOrReturn(getExtensionField(extension, 'excludes', context)),\n group: callOrReturn(getExtensionField(extension, 'group', context)),\n spanning: callOrReturn(getExtensionField(extension, 'spanning', context)),\n code: callOrReturn(getExtensionField(extension, 'code', context)),\n attrs: Object.fromEntries(extensionAttributes.map(extensionAttribute => {\n var _a;\n return [extensionAttribute.name, { default: (_a = extensionAttribute === null || extensionAttribute === void 0 ? void 0 : extensionAttribute.attribute) === null || _a === void 0 ? void 0 : _a.default }];\n })),\n });\n const parseHTML = callOrReturn(getExtensionField(extension, 'parseHTML', context));\n if (parseHTML) {\n schema.parseDOM = parseHTML.map(parseRule => injectExtensionAttributesToParseRule(parseRule, extensionAttributes));\n }\n const renderHTML = getExtensionField(extension, 'renderHTML', context);\n if (renderHTML) {\n schema.toDOM = mark => renderHTML({\n mark,\n HTMLAttributes: getRenderedAttributes(mark, extensionAttributes),\n });\n }\n return [extension.name, schema];\n }));\n return new Schema({\n topNode,\n nodes,\n marks,\n });\n}\n\n/**\n * Tries to get a node or mark type by its name.\n * @param name The name of the node or mark type\n * @param schema The Prosemiror schema to search in\n * @returns The node or mark type, or null if it doesn't exist\n */\nfunction getSchemaTypeByName(name, schema) {\n return schema.nodes[name] || schema.marks[name] || null;\n}\n\nfunction isExtensionRulesEnabled(extension, enabled) {\n if (Array.isArray(enabled)) {\n return enabled.some(enabledExtension => {\n const name = typeof enabledExtension === 'string'\n ? enabledExtension\n : enabledExtension.name;\n return name === extension.name;\n });\n }\n return enabled;\n}\n\n/**\n * Returns the text content of a resolved prosemirror position\n * @param $from The resolved position to get the text content from\n * @param maxMatch The maximum number of characters to match\n * @returns The text content\n */\nconst getTextContentFromNodes = ($from, maxMatch = 500) => {\n let textBefore = '';\n const sliceEndPos = $from.parentOffset;\n $from.parent.nodesBetween(Math.max(0, sliceEndPos - maxMatch), sliceEndPos, (node, pos, parent, index) => {\n var _a, _b;\n const chunk = ((_b = (_a = node.type.spec).toText) === null || _b === void 0 ? void 0 : _b.call(_a, {\n node,\n pos,\n parent,\n index,\n }))\n || node.textContent\n || '%leaf%';\n textBefore += node.isAtom && !node.isText ? chunk : chunk.slice(0, Math.max(0, sliceEndPos - pos));\n });\n return textBefore;\n};\n\nfunction isRegExp(value) {\n return Object.prototype.toString.call(value) === '[object RegExp]';\n}\n\nclass InputRule {\n constructor(config) {\n this.find = config.find;\n this.handler = config.handler;\n }\n}\nconst inputRuleMatcherHandler = (text, find) => {\n if (isRegExp(find)) {\n return find.exec(text);\n }\n const inputRuleMatch = find(text);\n if (!inputRuleMatch) {\n return null;\n }\n const result = [inputRuleMatch.text];\n result.index = inputRuleMatch.index;\n result.input = text;\n result.data = inputRuleMatch.data;\n if (inputRuleMatch.replaceWith) {\n if (!inputRuleMatch.text.includes(inputRuleMatch.replaceWith)) {\n console.warn('[tiptap warn]: \"inputRuleMatch.replaceWith\" must be part of \"inputRuleMatch.text\".');\n }\n result.push(inputRuleMatch.replaceWith);\n }\n return result;\n};\nfunction run$1(config) {\n var _a;\n const { editor, from, to, text, rules, plugin, } = config;\n const { view } = editor;\n if (view.composing) {\n return false;\n }\n const $from = view.state.doc.resolve(from);\n if (\n // check for code node\n $from.parent.type.spec.code\n // check for code mark\n || !!((_a = ($from.nodeBefore || $from.nodeAfter)) === null || _a === void 0 ? void 0 : _a.marks.find(mark => mark.type.spec.code))) {\n return false;\n }\n let matched = false;\n const textBefore = getTextContentFromNodes($from) + text;\n rules.forEach(rule => {\n if (matched) {\n return;\n }\n const match = inputRuleMatcherHandler(textBefore, rule.find);\n if (!match) {\n return;\n }\n const tr = view.state.tr;\n const state = createChainableState({\n state: view.state,\n transaction: tr,\n });\n const range = {\n from: from - (match[0].length - text.length),\n to,\n };\n const { commands, chain, can } = new CommandManager({\n editor,\n state,\n });\n const handler = rule.handler({\n state,\n range,\n match,\n commands,\n chain,\n can,\n });\n // stop if there are no changes\n if (handler === null || !tr.steps.length) {\n return;\n }\n // store transform as meta data\n // so we can undo input rules within the `undoInputRules` command\n tr.setMeta(plugin, {\n transform: tr,\n from,\n to,\n text,\n });\n view.dispatch(tr);\n matched = true;\n });\n return matched;\n}\n/**\n * Create an input rules plugin. When enabled, it will cause text\n * input that matches any of the given rules to trigger the rule’s\n * action.\n */\nfunction inputRulesPlugin(props) {\n const { editor, rules } = props;\n const plugin = new Plugin({\n state: {\n init() {\n return null;\n },\n apply(tr, prev) {\n const stored = tr.getMeta(plugin);\n if (stored) {\n return stored;\n }\n // if InputRule is triggered by insertContent()\n const simulatedInputMeta = tr.getMeta('applyInputRules');\n const isSimulatedInput = !!simulatedInputMeta;\n if (isSimulatedInput) {\n setTimeout(() => {\n const { from, text } = simulatedInputMeta;\n const to = from + text.length;\n run$1({\n editor,\n from,\n to,\n text,\n rules,\n plugin,\n });\n });\n }\n return tr.selectionSet || tr.docChanged ? null : prev;\n },\n },\n props: {\n handleTextInput(view, from, to, text) {\n return run$1({\n editor,\n from,\n to,\n text,\n rules,\n plugin,\n });\n },\n handleDOMEvents: {\n compositionend: view => {\n setTimeout(() => {\n const { $cursor } = view.state.selection;\n if ($cursor) {\n run$1({\n editor,\n from: $cursor.pos,\n to: $cursor.pos,\n text: '',\n rules,\n plugin,\n });\n }\n });\n return false;\n },\n },\n // add support for input rules to trigger on enter\n // this is useful for example for code blocks\n handleKeyDown(view, event) {\n if (event.key !== 'Enter') {\n return false;\n }\n const { $cursor } = view.state.selection;\n if ($cursor) {\n return run$1({\n editor,\n from: $cursor.pos,\n to: $cursor.pos,\n text: '\\n',\n rules,\n plugin,\n });\n }\n return false;\n },\n },\n // @ts-ignore\n isInputRules: true,\n });\n return plugin;\n}\n\n// see: https://github.com/mesqueeb/is-what/blob/88d6e4ca92fb2baab6003c54e02eedf4e729e5ab/src/index.ts\nfunction getType(value) {\n return Object.prototype.toString.call(value).slice(8, -1);\n}\nfunction isPlainObject(value) {\n if (getType(value) !== 'Object') {\n return false;\n }\n return value.constructor === Object && Object.getPrototypeOf(value) === Object.prototype;\n}\n\nfunction mergeDeep(target, source) {\n const output = { ...target };\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n if (isPlainObject(source[key]) && isPlainObject(target[key])) {\n output[key] = mergeDeep(target[key], source[key]);\n }\n else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}\n\n/**\n * The Mark class is used to create custom mark extensions.\n * @see https://tiptap.dev/api/extensions#create-a-new-extension\n */\nclass Mark {\n constructor(config = {}) {\n this.type = 'mark';\n this.name = 'mark';\n this.parent = null;\n this.child = null;\n this.config = {\n name: this.name,\n defaultOptions: {},\n };\n this.config = {\n ...this.config,\n ...config,\n };\n this.name = this.config.name;\n if (config.defaultOptions && Object.keys(config.defaultOptions).length > 0) {\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${this.name}\".`);\n }\n // TODO: remove `addOptions` fallback\n this.options = this.config.defaultOptions;\n if (this.config.addOptions) {\n this.options = callOrReturn(getExtensionField(this, 'addOptions', {\n name: this.name,\n }));\n }\n this.storage = callOrReturn(getExtensionField(this, 'addStorage', {\n name: this.name,\n options: this.options,\n })) || {};\n }\n static create(config = {}) {\n return new Mark(config);\n }\n configure(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 ...this.config,\n addOptions: () => {\n return mergeDeep(this.options, options);\n },\n });\n // Always preserve the current name\n extension.name = this.name;\n // Set the parent to be our parent\n extension.parent = this.parent;\n return extension;\n }\n extend(extendedConfig = {}) {\n const extension = new Mark(extendedConfig);\n extension.parent = this;\n this.child = extension;\n extension.name = extendedConfig.name ? extendedConfig.name : extension.parent.name;\n if (extendedConfig.defaultOptions && Object.keys(extendedConfig.defaultOptions).length > 0) {\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${extension.name}\".`);\n }\n extension.options = callOrReturn(getExtensionField(extension, 'addOptions', {\n name: extension.name,\n }));\n extension.storage = callOrReturn(getExtensionField(extension, 'addStorage', {\n name: extension.name,\n options: extension.options,\n }));\n return extension;\n }\n static handleExit({ editor, mark }) {\n const { tr } = editor.state;\n const currentPos = editor.state.selection.$from;\n const isAtEnd = currentPos.pos === currentPos.end();\n if (isAtEnd) {\n const currentMarks = currentPos.marks();\n const isInMark = !!currentMarks.find(m => (m === null || m === void 0 ? void 0 : m.type.name) === mark.name);\n if (!isInMark) {\n return false;\n }\n const removeMark = currentMarks.find(m => (m === null || m === void 0 ? void 0 : m.type.name) === mark.name);\n if (removeMark) {\n tr.removeStoredMark(removeMark);\n }\n tr.insertText(' ', currentPos.pos);\n editor.view.dispatch(tr);\n return true;\n }\n return false;\n }\n}\n\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n\n/**\n * Paste rules are used to react to pasted content.\n * @see https://tiptap.dev/guide/custom-extensions/#paste-rules\n */\nclass PasteRule {\n constructor(config) {\n this.find = config.find;\n this.handler = config.handler;\n }\n}\nconst pasteRuleMatcherHandler = (text, find, event) => {\n if (isRegExp(find)) {\n return [...text.matchAll(find)];\n }\n const matches = find(text, event);\n if (!matches) {\n return [];\n }\n return matches.map(pasteRuleMatch => {\n const result = [pasteRuleMatch.text];\n result.index = pasteRuleMatch.index;\n result.input = text;\n result.data = pasteRuleMatch.data;\n if (pasteRuleMatch.replaceWith) {\n if (!pasteRuleMatch.text.includes(pasteRuleMatch.replaceWith)) {\n console.warn('[tiptap warn]: \"pasteRuleMatch.replaceWith\" must be part of \"pasteRuleMatch.text\".');\n }\n result.push(pasteRuleMatch.replaceWith);\n }\n return result;\n });\n};\nfunction run(config) {\n const { editor, state, from, to, rule, pasteEvent, dropEvent, } = config;\n const { commands, chain, can } = new CommandManager({\n editor,\n state,\n });\n const handlers = [];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isTextblock || node.type.spec.code) {\n return;\n }\n const resolvedFrom = Math.max(from, pos);\n const resolvedTo = Math.min(to, pos + node.content.size);\n const textToMatch = node.textBetween(resolvedFrom - pos, resolvedTo - pos, undefined, '\\ufffc');\n const matches = pasteRuleMatcherHandler(textToMatch, rule.find, pasteEvent);\n matches.forEach(match => {\n if (match.index === undefined) {\n return;\n }\n const start = resolvedFrom + match.index + 1;\n const end = start + match[0].length;\n const range = {\n from: state.tr.mapping.map(start),\n to: state.tr.mapping.map(end),\n };\n const handler = rule.handler({\n state,\n range,\n match,\n commands,\n chain,\n can,\n pasteEvent,\n dropEvent,\n });\n handlers.push(handler);\n });\n });\n const success = handlers.every(handler => handler !== null);\n return success;\n}\nconst createClipboardPasteEvent = (text) => {\n var _a;\n const event = new ClipboardEvent('paste', {\n clipboardData: new DataTransfer(),\n });\n (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.setData('text/html', text);\n return event;\n};\n/**\n * Create an paste rules plugin. When enabled, it will cause pasted\n * text that matches any of the given rules to trigger the rule’s\n * action.\n */\nfunction pasteRulesPlugin(props) {\n const { editor, rules } = props;\n let dragSourceElement = null;\n let isPastedFromProseMirror = false;\n let isDroppedFromProseMirror = false;\n let pasteEvent = typeof ClipboardEvent !== 'undefined' ? new ClipboardEvent('paste') : null;\n let dropEvent = typeof DragEvent !== 'undefined' ? new DragEvent('drop') : null;\n const processEvent = ({ state, from, to, rule, pasteEvt, }) => {\n const tr = state.tr;\n const chainableState = createChainableState({\n state,\n transaction: tr,\n });\n const handler = run({\n editor,\n state: chainableState,\n from: Math.max(from - 1, 0),\n to: to.b - 1,\n rule,\n pasteEvent: pasteEvt,\n dropEvent,\n });\n if (!handler || !tr.steps.length) {\n return;\n }\n dropEvent = typeof DragEvent !== 'undefined' ? new DragEvent('drop') : null;\n pasteEvent = typeof ClipboardEvent !== 'undefined' ? new ClipboardEvent('paste') : null;\n return tr;\n };\n const plugins = rules.map(rule => {\n return new Plugin({\n // we register a global drag handler to track the current drag source element\n view(view) {\n const handleDragstart = (event) => {\n var _a;\n dragSourceElement = ((_a = view.dom.parentElement) === null || _a === void 0 ? void 0 : _a.contains(event.target))\n ? view.dom.parentElement\n : null;\n };\n window.addEventListener('dragstart', handleDragstart);\n return {\n destroy() {\n window.removeEventListener('dragstart', handleDragstart);\n },\n };\n },\n props: {\n handleDOMEvents: {\n drop: (view, event) => {\n isDroppedFromProseMirror = dragSourceElement === view.dom.parentElement;\n dropEvent = event;\n return false;\n },\n paste: (_view, event) => {\n var _a;\n const html = (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text/html');\n pasteEvent = event;\n isPastedFromProseMirror = !!(html === null || html === void 0 ? void 0 : html.includes('data-pm-slice'));\n return false;\n },\n },\n },\n appendTransaction: (transactions, oldState, state) => {\n const transaction = transactions[0];\n const isPaste = transaction.getMeta('uiEvent') === 'paste' && !isPastedFromProseMirror;\n const isDrop = transaction.getMeta('uiEvent') === 'drop' && !isDroppedFromProseMirror;\n // if PasteRule is triggered by insertContent()\n const simulatedPasteMeta = transaction.getMeta('applyPasteRules');\n const isSimulatedPaste = !!simulatedPasteMeta;\n if (!isPaste && !isDrop && !isSimulatedPaste) {\n return;\n }\n // Handle simulated paste\n if (isSimulatedPaste) {\n const { from, text } = simulatedPasteMeta;\n const to = from + text.length;\n const pasteEvt = createClipboardPasteEvent(text);\n return processEvent({\n rule,\n state,\n from,\n to: { b: to },\n pasteEvt,\n });\n }\n // handle actual paste/drop\n const from = oldState.doc.content.findDiffStart(state.doc.content);\n const to = oldState.doc.content.findDiffEnd(state.doc.content);\n // stop if there is no changed range\n if (!isNumber(from) || !to || from === to.b) {\n return;\n }\n return processEvent({\n rule,\n state,\n from,\n to,\n pasteEvt: pasteEvent,\n });\n },\n });\n });\n return plugins;\n}\n\nfunction findDuplicates(items) {\n const filtered = items.filter((el, index) => items.indexOf(el) !== index);\n return Array.from(new Set(filtered));\n}\n\nclass ExtensionManager {\n constructor(extensions, editor) {\n this.splittableMarks = [];\n this.editor = editor;\n this.extensions = ExtensionManager.resolve(extensions);\n this.schema = getSchemaByResolvedExtensions(this.extensions, editor);\n this.setupExtensions();\n }\n /**\n * Returns a flattened and sorted extension list while\n * also checking for duplicated extensions and warns the user.\n * @param extensions An array of Tiptap extensions\n * @returns An flattened and sorted array of Tiptap extensions\n */\n static resolve(extensions) {\n const resolvedExtensions = ExtensionManager.sort(ExtensionManager.flatten(extensions));\n const duplicatedNames = findDuplicates(resolvedExtensions.map(extension => extension.name));\n if (duplicatedNames.length) {\n console.warn(`[tiptap warn]: Duplicate extension names found: [${duplicatedNames\n .map(item => `'${item}'`)\n .join(', ')}]. This can lead to issues.`);\n }\n return resolvedExtensions;\n }\n /**\n * Create a flattened array of extensions by traversing the `addExtensions` field.\n * @param extensions An array of Tiptap extensions\n * @returns A flattened array of Tiptap extensions\n */\n static flatten(extensions) {\n return (extensions\n .map(extension => {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n };\n const addExtensions = getExtensionField(extension, 'addExtensions', context);\n if (addExtensions) {\n return [extension, ...this.flatten(addExtensions())];\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 * Sort extensions by priority.\n * @param extensions An array of Tiptap extensions\n * @returns A sorted array of Tiptap extensions by priority\n */\n static sort(extensions) {\n const defaultPriority = 100;\n return extensions.sort((a, b) => {\n const priorityA = getExtensionField(a, 'priority') || defaultPriority;\n const priorityB = getExtensionField(b, 'priority') || defaultPriority;\n if (priorityA > priorityB) {\n return -1;\n }\n if (priorityA < priorityB) {\n return 1;\n }\n return 0;\n });\n }\n /**\n * Get all commands from the extensions.\n * @returns An object with all commands where the key is the command name and the value is the command function\n */\n get commands() {\n return this.extensions.reduce((commands, extension) => {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n editor: this.editor,\n type: getSchemaTypeByName(extension.name, this.schema),\n };\n const addCommands = getExtensionField(extension, 'addCommands', context);\n if (!addCommands) {\n return commands;\n }\n return {\n ...commands,\n ...addCommands(),\n };\n }, {});\n }\n /**\n * Get all registered Prosemirror plugins from the extensions.\n * @returns An array of Prosemirror plugins\n */\n get plugins() {\n const { editor } = this;\n // With ProseMirror, first plugins within an array are executed first.\n // In Tiptap, we provide the ability to override plugins,\n // so it feels more natural to run plugins at the end of an array first.\n // That’s why we have to reverse the `extensions` array and sort again\n // based on the `priority` option.\n const extensions = ExtensionManager.sort([...this.extensions].reverse());\n const inputRules = [];\n const pasteRules = [];\n const allPlugins = extensions\n .map(extension => {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n editor,\n type: getSchemaTypeByName(extension.name, this.schema),\n };\n const plugins = [];\n const addKeyboardShortcuts = getExtensionField(extension, 'addKeyboardShortcuts', context);\n let defaultBindings = {};\n // bind exit handling\n if (extension.type === 'mark' && getExtensionField(extension, 'exitable', context)) {\n defaultBindings.ArrowRight = () => Mark.handleExit({ editor, mark: extension });\n }\n if (addKeyboardShortcuts) {\n const bindings = Object.fromEntries(Object.entries(addKeyboardShortcuts()).map(([shortcut, method]) => {\n return [shortcut, () => method({ editor })];\n }));\n defaultBindings = { ...defaultBindings, ...bindings };\n }\n const keyMapPlugin = keymap(defaultBindings);\n plugins.push(keyMapPlugin);\n const addInputRules = getExtensionField(extension, 'addInputRules', context);\n if (isExtensionRulesEnabled(extension, editor.options.enableInputRules) && addInputRules) {\n inputRules.push(...addInputRules());\n }\n const addPasteRules = getExtensionField(extension, 'addPasteRules', context);\n if (isExtensionRulesEnabled(extension, editor.options.enablePasteRules) && addPasteRules) {\n pasteRules.push(...addPasteRules());\n }\n const addProseMirrorPlugins = getExtensionField(extension, 'addProseMirrorPlugins', context);\n if (addProseMirrorPlugins) {\n const proseMirrorPlugins = addProseMirrorPlugins();\n plugins.push(...proseMirrorPlugins);\n }\n return plugins;\n })\n .flat();\n return [\n inputRulesPlugin({\n editor,\n rules: inputRules,\n }),\n ...pasteRulesPlugin({\n editor,\n rules: pasteRules,\n }),\n ...allPlugins,\n ];\n }\n /**\n * Get all attributes from the extensions.\n * @returns An array of attributes\n */\n get attributes() {\n return getAttributesFromExtensions(this.extensions);\n }\n /**\n * Get all node views from the extensions.\n * @returns An object with all node views where the key is the node name and the value is the node view function\n */\n get nodeViews() {\n const { editor } = this;\n const { nodeExtensions } = splitExtensions(this.extensions);\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 storage: extension.storage,\n editor,\n type: getNodeType(extension.name, this.schema),\n };\n const addNodeView = getExtensionField(extension, 'addNodeView', context);\n if (!addNodeView) {\n return [];\n }\n const nodeview = (node, view, getPos, decorations, innerDecorations) => {\n const HTMLAttributes = getRenderedAttributes(node, extensionAttributes);\n return addNodeView()({\n // pass-through\n node,\n view,\n getPos: getPos,\n decorations,\n innerDecorations,\n // tiptap-specific\n editor,\n extension,\n HTMLAttributes,\n });\n };\n return [extension.name, nodeview];\n }));\n }\n /**\n * Go through all extensions, create extension storages & setup marks\n * & bind editor event listener.\n */\n setupExtensions() {\n this.extensions.forEach(extension => {\n var _a;\n // store extension storage in editor\n this.editor.extensionStorage[extension.name] = extension.storage;\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n editor: this.editor,\n type: getSchemaTypeByName(extension.name, this.schema),\n };\n if (extension.type === 'mark') {\n const keepOnSplit = (_a = callOrReturn(getExtensionField(extension, 'keepOnSplit', context))) !== null && _a !== void 0 ? _a : true;\n if (keepOnSplit) {\n this.splittableMarks.push(extension.name);\n }\n }\n const onBeforeCreate = getExtensionField(extension, 'onBeforeCreate', context);\n const onCreate = getExtensionField(extension, 'onCreate', context);\n const onUpdate = getExtensionField(extension, 'onUpdate', context);\n const onSelectionUpdate = getExtensionField(extension, 'onSelectionUpdate', context);\n const onTransaction = getExtensionField(extension, 'onTransaction', context);\n const onFocus = getExtensionField(extension, 'onFocus', context);\n const onBlur = getExtensionField(extension, 'onBlur', context);\n const onDestroy = getExtensionField(extension, 'onDestroy', context);\n if (onBeforeCreate) {\n this.editor.on('beforeCreate', onBeforeCreate);\n }\n if (onCreate) {\n this.editor.on('create', onCreate);\n }\n if (onUpdate) {\n this.editor.on('update', onUpdate);\n }\n if (onSelectionUpdate) {\n this.editor.on('selectionUpdate', onSelectionUpdate);\n }\n if (onTransaction) {\n this.editor.on('transaction', onTransaction);\n }\n if (onFocus) {\n this.editor.on('focus', onFocus);\n }\n if (onBlur) {\n this.editor.on('blur', onBlur);\n }\n if (onDestroy) {\n this.editor.on('destroy', onDestroy);\n }\n });\n }\n}\n\n/**\n * The Extension class is the base class for all extensions.\n * @see https://tiptap.dev/api/extensions#create-a-new-extension\n */\nclass Extension {\n constructor(config = {}) {\n this.type = 'extension';\n this.name = 'extension';\n this.parent = null;\n this.child = null;\n this.config = {\n name: this.name,\n defaultOptions: {},\n };\n this.config = {\n ...this.config,\n ...config,\n };\n this.name = this.config.name;\n if (config.defaultOptions && Object.keys(config.defaultOptions).length > 0) {\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${this.name}\".`);\n }\n // TODO: remove `addOptions` fallback\n this.options = this.config.defaultOptions;\n if (this.config.addOptions) {\n this.options = callOrReturn(getExtensionField(this, 'addOptions', {\n name: this.name,\n }));\n }\n this.storage = callOrReturn(getExtensionField(this, 'addStorage', {\n name: this.name,\n options: this.options,\n })) || {};\n }\n static create(config = {}) {\n return new Extension(config);\n }\n configure(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 ...this.config,\n addOptions: () => {\n return mergeDeep(this.options, options);\n },\n });\n // Always preserve the current name\n extension.name = this.name;\n // Set the parent to be our parent\n extension.parent = this.parent;\n return extension;\n }\n extend(extendedConfig = {}) {\n const extension = new Extension({ ...this.config, ...extendedConfig });\n extension.parent = this;\n this.child = extension;\n extension.name = extendedConfig.name ? extendedConfig.name : extension.parent.name;\n if (extendedConfig.defaultOptions && Object.keys(extendedConfig.defaultOptions).length > 0) {\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${extension.name}\".`);\n }\n extension.options = callOrReturn(getExtensionField(extension, 'addOptions', {\n name: extension.name,\n }));\n extension.storage = callOrReturn(getExtensionField(extension, 'addStorage', {\n name: extension.name,\n options: extension.options,\n }));\n return extension;\n }\n}\n\n/**\n * Gets the text between two positions in a Prosemirror node\n * and serializes it using the given text serializers and block separator (see getText)\n * @param startNode The Prosemirror node to start from\n * @param range The range of the text to get\n * @param options Options for the text serializer & block separator\n * @returns The text between the two positions\n */\nfunction getTextBetween(startNode, range, options) {\n const { from, to } = range;\n const { blockSeparator = '\\n\\n', textSerializers = {} } = options || {};\n let text = '';\n startNode.nodesBetween(from, to, (node, pos, parent, index) => {\n var _a;\n if (node.isBlock && pos > from) {\n text += blockSeparator;\n }\n const textSerializer = textSerializers === null || textSerializers === void 0 ? void 0 : textSerializers[node.type.name];\n if (textSerializer) {\n if (parent) {\n text += textSerializer({\n node,\n pos,\n parent,\n index,\n range,\n });\n }\n // do not descend into child nodes when there exists a serializer\n return false;\n }\n if (node.isText) {\n text += (_a = node === null || node === void 0 ? void 0 : node.text) === null || _a === void 0 ? void 0 : _a.slice(Math.max(from, pos) - pos, to - pos); // eslint-disable-line\n }\n });\n return text;\n}\n\n/**\n * Find text serializers `toText` in a Prosemirror schema\n * @param schema The Prosemirror schema to search in\n * @returns A record of text serializers by node name\n */\nfunction getTextSerializersFromSchema(schema) {\n return Object.fromEntries(Object.entries(schema.nodes)\n .filter(([, node]) => node.spec.toText)\n .map(([name, node]) => [name, node.spec.toText]));\n}\n\nconst ClipboardTextSerializer = Extension.create({\n name: 'clipboardTextSerializer',\n addOptions() {\n return {\n blockSeparator: undefined,\n };\n },\n addProseMirrorPlugins() {\n return [\n new Plugin({\n key: new PluginKey('clipboardTextSerializer'),\n props: {\n clipboardTextSerializer: () => {\n const { editor } = this;\n const { state, schema } = editor;\n const { doc, selection } = state;\n const { ranges } = selection;\n const from = Math.min(...ranges.map(range => range.$from.pos));\n const to = Math.max(...ranges.map(range => range.$to.pos));\n const textSerializers = getTextSerializersFromSchema(schema);\n const range = { from, to };\n return getTextBetween(doc, range, {\n ...(this.options.blockSeparator !== undefined\n ? { blockSeparator: this.options.blockSeparator }\n : {}),\n textSerializers,\n });\n },\n },\n }),\n ];\n },\n});\n\nconst blur = () => ({ editor, view }) => {\n requestAnimationFrame(() => {\n var _a;\n if (!editor.isDestroyed) {\n view.dom.blur();\n // Browsers should remove the caret on blur but safari does not.\n // See: https://github.com/ueberdosis/tiptap/issues/2405\n (_a = window === null || window === void 0 ? void 0 : window.getSelection()) === null || _a === void 0 ? void 0 : _a.removeAllRanges();\n }\n });\n return true;\n};\n\nconst clearContent = (emitUpdate = false) => ({ commands }) => {\n return commands.setContent('', emitUpdate);\n};\n\nconst clearNodes = () => ({ state, tr, dispatch }) => {\n const { selection } = tr;\n const { ranges } = selection;\n if (!dispatch) {\n return true;\n }\n ranges.forEach(({ $from, $to }) => {\n state.doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\n if (node.type.isText) {\n return;\n }\n const { doc, mapping } = tr;\n const $mappedFrom = doc.resolve(mapping.map(pos));\n const $mappedTo = doc.resolve(mapping.map(pos + node.nodeSize));\n const nodeRange = $mappedFrom.blockRange($mappedTo);\n if (!nodeRange) {\n return;\n }\n const targetLiftDepth = liftTarget(nodeRange);\n if (node.type.isTextblock) {\n const { defaultType } = $mappedFrom.parent.contentMatchAt($mappedFrom.index());\n tr.setNodeMarkup(nodeRange.start, defaultType);\n }\n if (targetLiftDepth || targetLiftDepth === 0) {\n tr.lift(nodeRange, targetLiftDepth);\n }\n });\n });\n return true;\n};\n\nconst command = fn => props => {\n return fn(props);\n};\n\nconst createParagraphNear = () => ({ state, dispatch }) => {\n return createParagraphNear$1(state, dispatch);\n};\n\nconst cut = (originRange, targetPos) => ({ editor, tr }) => {\n const { state } = editor;\n const contentSlice = state.doc.slice(originRange.from, originRange.to);\n tr.deleteRange(originRange.from, originRange.to);\n const newPos = tr.mapping.map(targetPos);\n tr.insert(newPos, contentSlice.content);\n tr.setSelection(new TextSelection(tr.doc.resolve(newPos - 1)));\n return true;\n};\n\nconst deleteCurrentNode = () => ({ tr, dispatch }) => {\n const { selection } = tr;\n const currentNode = selection.$anchor.node();\n // if there is content inside the current node, break out of this command\n if (currentNode.content.size > 0) {\n return false;\n }\n const $pos = tr.selection.$anchor;\n for (let depth = $pos.depth; depth > 0; depth -= 1) {\n const node = $pos.node(depth);\n if (node.type === currentNode.type) {\n if (dispatch) {\n const from = $pos.before(depth);\n const to = $pos.after(depth);\n tr.delete(from, to).scrollIntoView();\n }\n return true;\n }\n }\n return false;\n};\n\nconst deleteNode = typeOrName => ({ tr, state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema);\n const $pos = tr.selection.$anchor;\n for (let depth = $pos.depth; depth > 0; depth -= 1) {\n const node = $pos.node(depth);\n if (node.type === type) {\n if (dispatch) {\n const from = $pos.before(depth);\n const to = $pos.after(depth);\n tr.delete(from, to).scrollIntoView();\n }\n return true;\n }\n }\n return false;\n};\n\nconst deleteRange = range => ({ tr, dispatch }) => {\n const { from, to } = range;\n if (dispatch) {\n tr.delete(from, to);\n }\n return true;\n};\n\nconst deleteSelection = () => ({ state, dispatch }) => {\n return deleteSelection$1(state, dispatch);\n};\n\nconst enter = () => ({ commands }) => {\n return commands.keyboardShortcut('Enter');\n};\n\nconst exitCode = () => ({ state, dispatch }) => {\n return exitCode$1(state, dispatch);\n};\n\n/**\n * Check if object1 includes object2\n * @param object1 Object\n * @param object2 Object\n */\nfunction objectIncludes(object1, object2, options = { strict: true }) {\n const keys = Object.keys(object2);\n if (!keys.length) {\n return true;\n }\n return keys.every(key => {\n if (options.strict) {\n return object2[key] === object1[key];\n }\n if (isRegExp(object2[key])) {\n return object2[key].test(object1[key]);\n }\n return object2[key] === object1[key];\n });\n}\n\nfunction findMarkInSet(marks, type, attributes = {}) {\n return marks.find(item => {\n return item.type === type && objectIncludes(item.attrs, attributes);\n });\n}\nfunction isMarkInSet(marks, type, attributes = {}) {\n return !!findMarkInSet(marks, type, attributes);\n}\nfunction getMarkRange($pos, type, attributes = {}) {\n if (!$pos || !type) {\n return;\n }\n let start = $pos.parent.childAfter($pos.parentOffset);\n // If the cursor is at the start of a text node that does not have the mark, look backward\n if (!start.node || !start.node.marks.some(mark => mark.type === type)) {\n start = $pos.parent.childBefore($pos.parentOffset);\n }\n // If there is no text node with the mark even backward, return undefined\n if (!start.node || !start.node.marks.some(mark => mark.type === type)) {\n return;\n }\n // We now know that the cursor is either at the start, middle or end of a text node with the specified mark\n // so we can look it up on the targeted mark\n const mark = findMarkInSet([...start.node.marks], type, attributes);\n if (!mark) {\n return;\n }\n let startIndex = start.index;\n let startPos = $pos.start() + start.offset;\n let endIndex = startIndex + 1;\n let endPos = startPos + start.node.nodeSize;\n findMarkInSet([...start.node.marks], type, attributes);\n while (startIndex > 0 && mark.isInSet($pos.parent.child(startIndex - 1).marks)) {\n startIndex -= 1;\n startPos -= $pos.parent.child(startIndex).nodeSize;\n }\n while (endIndex < $pos.parent.childCount\n && isMarkInSet([...$pos.parent.child(endIndex).marks], type, attributes)) {\n endPos += $pos.parent.child(endIndex).nodeSize;\n endIndex += 1;\n }\n return {\n from: startPos,\n to: endPos,\n };\n}\n\nfunction getMarkType(nameOrType, schema) {\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 return schema.marks[nameOrType];\n }\n return nameOrType;\n}\n\nconst 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 if (dispatch) {\n const range = getMarkRange($from, type, attributes);\n if (range && range.from <= from && range.to >= to) {\n const newSelection = TextSelection.create(doc, range.from, range.to);\n tr.setSelection(newSelection);\n }\n }\n return true;\n};\n\nconst first = commands => props => {\n const items = typeof commands === 'function'\n ? commands(props)\n : commands;\n for (let i = 0; i < items.length; i += 1) {\n if (items[i](props)) {\n return true;\n }\n }\n return false;\n};\n\nfunction isTextSelection(value) {\n return value instanceof TextSelection;\n}\n\nfunction minMax(value = 0, min = 0, max = 0) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction resolveFocusPosition(doc, position = null) {\n if (!position) {\n return null;\n }\n const selectionAtStart = Selection.atStart(doc);\n const selectionAtEnd = Selection.atEnd(doc);\n if (position === 'start' || position === true) {\n return selectionAtStart;\n }\n if (position === 'end') {\n return selectionAtEnd;\n }\n const minPos = selectionAtStart.from;\n const maxPos = selectionAtEnd.to;\n if (position === 'all') {\n return TextSelection.create(doc, minMax(0, minPos, maxPos), minMax(doc.content.size, minPos, maxPos));\n }\n return TextSelection.create(doc, minMax(position, minPos, maxPos), minMax(position, minPos, maxPos));\n}\n\nfunction isiOS() {\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\nconst focus = (position = null, options = {}) => ({ editor, view, tr, dispatch, }) => {\n options = {\n scrollIntoView: true,\n ...options,\n };\n const delayedFocus = () => {\n // focus within `requestAnimationFrame` breaks focus on iOS\n // so we have to call this\n if (isiOS()) {\n view.dom.focus();\n }\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 if (options === null || options === void 0 ? void 0 : options.scrollIntoView) {\n editor.commands.scrollIntoView();\n }\n }\n });\n };\n if ((view.hasFocus() && position === null) || position === false) {\n return true;\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 // pass through tr.doc instead of editor.state.doc\n // since transactions could change the editors state before this command has been run\n const selection = resolveFocusPosition(tr.doc, position) || editor.state.selection;\n const isSameSelection = editor.state.selection.eq(selection);\n if (dispatch) {\n if (!isSameSelection) {\n tr.setSelection(selection);\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 && tr.storedMarks) {\n tr.setStoredMarks(tr.storedMarks);\n }\n delayedFocus();\n }\n return true;\n};\n\nconst forEach = (items, fn) => props => {\n return items.every((item, index) => fn(item, { ...props, index }));\n};\n\nconst insertContent = (value, options) => ({ tr, commands }) => {\n return commands.insertContentAt({ from: tr.selection.from, to: tr.selection.to }, value, options);\n};\n\nconst removeWhitespaces = (node) => {\n const children = node.childNodes;\n for (let i = children.length - 1; i >= 0; i -= 1) {\n const child = children[i];\n if (child.nodeType === 3 && child.nodeValue && /^(\\n\\s\\s|\\n)$/.test(child.nodeValue)) {\n node.removeChild(child);\n }\n else if (child.nodeType === 1) {\n removeWhitespaces(child);\n }\n }\n return node;\n};\nfunction elementFromString(value) {\n // add a wrapper to preserve leading and trailing whitespace\n const wrappedValue = `${value}`;\n const html = new window.DOMParser().parseFromString(wrappedValue, 'text/html').body;\n return removeWhitespaces(html);\n}\n\n/**\n * Takes a JSON or HTML content and creates a Prosemirror node or fragment from it.\n * @param content The JSON or HTML content to create the node from\n * @param schema The Prosemirror schema to use for the node\n * @param options Options for the parser\n * @returns The created Prosemirror node or fragment\n */\nfunction createNodeFromContent(content, schema, options) {\n options = {\n slice: true,\n parseOptions: {},\n ...options,\n };\n const isJSONContent = typeof content === 'object' && content !== null;\n const isTextContent = typeof content === 'string';\n if (isJSONContent) {\n try {\n const isArrayContent = Array.isArray(content) && content.length > 0;\n // if the JSON Content is an array of nodes, create a fragment for each node\n if (isArrayContent) {\n return Fragment.fromArray(content.map(item => schema.nodeFromJSON(item)));\n }\n const node = schema.nodeFromJSON(content);\n if (options.errorOnInvalidContent) {\n node.check();\n }\n return node;\n }\n catch (error) {\n if (options.errorOnInvalidContent) {\n throw new Error('[tiptap error]: Invalid JSON content', { cause: error });\n }\n console.warn('[tiptap warn]: Invalid content.', 'Passed value:', content, 'Error:', error);\n return createNodeFromContent('', schema, options);\n }\n }\n if (isTextContent) {\n // Check for invalid content\n if (options.errorOnInvalidContent) {\n let hasInvalidContent = false;\n let invalidContent = '';\n // A copy of the current schema with a catch-all node at the end\n const contentCheckSchema = new Schema({\n topNode: schema.spec.topNode,\n marks: schema.spec.marks,\n // Prosemirror's schemas are executed such that: the last to execute, matches last\n // This means that we can add a catch-all node at the end of the schema to catch any content that we don't know how to handle\n nodes: schema.spec.nodes.append({\n __tiptap__private__unknown__catch__all__node: {\n content: 'inline*',\n group: 'block',\n parseDOM: [\n {\n tag: '*',\n getAttrs: e => {\n // If this is ever called, we know that the content has something that we don't know how to handle in the schema\n hasInvalidContent = true;\n // Try to stringify the element for a more helpful error message\n invalidContent = typeof e === 'string' ? e : e.outerHTML;\n return null;\n },\n },\n ],\n },\n }),\n });\n if (options.slice) {\n DOMParser.fromSchema(contentCheckSchema).parseSlice(elementFromString(content), options.parseOptions);\n }\n else {\n DOMParser.fromSchema(contentCheckSchema).parse(elementFromString(content), options.parseOptions);\n }\n if (options.errorOnInvalidContent && hasInvalidContent) {\n throw new Error('[tiptap error]: Invalid HTML content', { cause: new Error(`Invalid element found: ${invalidContent}`) });\n }\n }\n const parser = DOMParser.fromSchema(schema);\n if (options.slice) {\n return parser.parseSlice(elementFromString(content), options.parseOptions).content;\n }\n return parser.parse(elementFromString(content), options.parseOptions);\n }\n return createNodeFromContent('', schema, options);\n}\n\n// source: https://github.com/ProseMirror/prosemirror-state/blob/master/src/selection.js#L466\nfunction selectionToInsertionEnd(tr, startLen, bias) {\n const last = tr.steps.length - 1;\n if (last < startLen) {\n return;\n }\n const step = tr.steps[last];\n if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep)) {\n return;\n }\n const map = tr.mapping.maps[last];\n let end = 0;\n map.forEach((_from, _to, _newFrom, newTo) => {\n if (end === 0) {\n end = newTo;\n }\n });\n tr.setSelection(Selection.near(tr.doc.resolve(end), bias));\n}\n\nconst isFragment = (nodeOrFragment) => {\n return !('type' in nodeOrFragment);\n};\nconst insertContentAt = (position, value, options) => ({ tr, dispatch, editor }) => {\n var _a;\n if (dispatch) {\n options = {\n parseOptions: editor.options.parseOptions,\n updateSelection: true,\n applyInputRules: false,\n applyPasteRules: false,\n ...options,\n };\n let content;\n try {\n content = createNodeFromContent(value, editor.schema, {\n parseOptions: {\n preserveWhitespace: 'full',\n ...options.parseOptions,\n },\n errorOnInvalidContent: (_a = options.errorOnInvalidContent) !== null && _a !== void 0 ? _a : editor.options.enableContentCheck,\n });\n }\n catch (e) {\n editor.emit('contentError', {\n editor,\n error: e,\n disableCollaboration: () => {\n if (editor.storage.collaboration) {\n editor.storage.collaboration.isDisabled = true;\n }\n },\n });\n return false;\n }\n let { from, to } = typeof position === 'number' ? { from: position, to: position } : { from: position.from, to: position.to };\n let isOnlyTextContent = true;\n let isOnlyBlockContent = true;\n const nodes = isFragment(content) ? content : [content];\n nodes.forEach(node => {\n // check if added node is valid\n node.check();\n isOnlyTextContent = isOnlyTextContent ? node.isText && node.marks.length === 0 : false;\n isOnlyBlockContent = isOnlyBlockContent ? node.isBlock : false;\n });\n // check if we can replace the wrapping node by\n // the newly inserted content\n // example:\n // replace an empty paragraph by an inserted image\n // instead of inserting the image below the paragraph\n if (from === to && isOnlyBlockContent) {\n const { parent } = tr.doc.resolve(from);\n const isEmptyTextBlock = parent.isTextblock && !parent.type.spec.code && !parent.childCount;\n if (isEmptyTextBlock) {\n from -= 1;\n to += 1;\n }\n }\n let newContent;\n // if there is only plain text we have to use `insertText`\n // because this will keep the current marks\n if (isOnlyTextContent) {\n // if value is string, we can use it directly\n // otherwise if it is an array, we have to join it\n if (Array.isArray(value)) {\n newContent = value.map(v => v.text || '').join('');\n }\n else if (typeof value === 'object' && !!value && !!value.text) {\n newContent = value.text;\n }\n else {\n newContent = value;\n }\n tr.insertText(newContent, from, to);\n }\n else {\n newContent = content;\n tr.replaceWith(from, to, newContent);\n }\n // set cursor at end of inserted content\n if (options.updateSelection) {\n selectionToInsertionEnd(tr, tr.steps.length - 1, -1);\n }\n if (options.applyInputRules) {\n tr.setMeta('applyInputRules', { from, text: newContent });\n }\n if (options.applyPasteRules) {\n tr.setMeta('applyPasteRules', { from, text: newContent });\n }\n }\n return true;\n};\n\nconst joinUp = () => ({ state, dispatch }) => {\n return joinUp$1(state, dispatch);\n};\nconst joinDown = () => ({ state, dispatch }) => {\n return joinDown$1(state, dispatch);\n};\nconst joinBackward = () => ({ state, dispatch }) => {\n return joinBackward$1(state, dispatch);\n};\nconst joinForward = () => ({ state, dispatch }) => {\n return joinForward$1(state, dispatch);\n};\n\nconst joinItemBackward = () => ({ state, dispatch, tr, }) => {\n try {\n const point = joinPoint(state.doc, state.selection.$from.pos, -1);\n if (point === null || point === undefined) {\n return false;\n }\n tr.join(point, 2);\n if (dispatch) {\n dispatch(tr);\n }\n return true;\n }\n catch (e) {\n return false;\n }\n};\n\nconst joinItemForward = () => ({ state, dispatch, tr, }) => {\n try {\n const point = joinPoint(state.doc, state.selection.$from.pos, +1);\n if (point === null || point === undefined) {\n return false;\n }\n tr.join(point, 2);\n if (dispatch) {\n dispatch(tr);\n }\n return true;\n }\n catch (e) {\n return false;\n }\n};\n\nconst joinTextblockBackward = () => ({ state, dispatch }) => {\n return joinTextblockBackward$1(state, dispatch);\n};\n\nconst joinTextblockForward = () => ({ state, dispatch }) => {\n return joinTextblockForward$1(state, dispatch);\n};\n\nfunction isMacOS() {\n return typeof navigator !== 'undefined'\n ? /Mac/.test(navigator.platform)\n : false;\n}\n\nfunction normalizeKeyName(name) {\n const parts = name.split(/-(?!$)/);\n let result = parts[parts.length - 1];\n if (result === 'Space') {\n result = ' ';\n }\n let alt;\n let ctrl;\n let shift;\n let meta;\n for (let i = 0; i < parts.length - 1; i += 1) {\n const mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) {\n meta = true;\n }\n else if (/^a(lt)?$/i.test(mod)) {\n alt = true;\n }\n else if (/^(c|ctrl|control)$/i.test(mod)) {\n ctrl = true;\n }\n else if (/^s(hift)?$/i.test(mod)) {\n shift = true;\n }\n else if (/^mod$/i.test(mod)) {\n if (isiOS() || isMacOS()) {\n meta = true;\n }\n else {\n ctrl = true;\n }\n }\n else {\n throw new Error(`Unrecognized modifier name: ${mod}`);\n }\n }\n if (alt) {\n result = `Alt-${result}`;\n }\n if (ctrl) {\n result = `Ctrl-${result}`;\n }\n if (meta) {\n result = `Meta-${result}`;\n }\n if (shift) {\n result = `Shift-${result}`;\n }\n return result;\n}\nconst keyboardShortcut = name => ({ editor, view, tr, dispatch, }) => {\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 const capturedTransaction = editor.captureTransaction(() => {\n view.someProp('handleKeyDown', f => f(view, event));\n });\n capturedTransaction === null || capturedTransaction === void 0 ? void 0 : capturedTransaction.steps.forEach(step => {\n const newStep = step.map(tr.mapping);\n if (newStep && dispatch) {\n tr.maybeStep(newStep);\n }\n });\n return true;\n};\n\nfunction isNodeActive(state, typeOrName, attributes = {}) {\n const { from, to, empty } = state.selection;\n const type = typeOrName ? getNodeType(typeOrName, state.schema) : null;\n const nodeRanges = [];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isText) {\n return;\n }\n const relativeFrom = Math.max(from, pos);\n const relativeTo = Math.min(to, pos + node.nodeSize);\n nodeRanges.push({\n node,\n from: relativeFrom,\n to: relativeTo,\n });\n });\n const selectionRange = to - from;\n const matchedNodeRanges = nodeRanges\n .filter(nodeRange => {\n if (!type) {\n return true;\n }\n return type.name === nodeRange.node.type.name;\n })\n .filter(nodeRange => objectIncludes(nodeRange.node.attrs, attributes, { strict: false }));\n if (empty) {\n return !!matchedNodeRanges.length;\n }\n const range = matchedNodeRanges.reduce((sum, nodeRange) => sum + nodeRange.to - nodeRange.from, 0);\n return range >= selectionRange;\n}\n\nconst lift = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema);\n const isActive = isNodeActive(state, type, attributes);\n if (!isActive) {\n return false;\n }\n return lift$1(state, dispatch);\n};\n\nconst liftEmptyBlock = () => ({ state, dispatch }) => {\n return liftEmptyBlock$1(state, dispatch);\n};\n\nconst liftListItem = typeOrName => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema);\n return liftListItem$1(type)(state, dispatch);\n};\n\nconst newlineInCode = () => ({ state, dispatch }) => {\n return newlineInCode$1(state, dispatch);\n};\n\n/**\n * Get the type of a schema item by its name.\n * @param name The name of the schema item\n * @param schema The Prosemiror schema to search in\n * @returns The type of the schema item (`node` or `mark`), or null if it doesn't exist\n */\nfunction getSchemaTypeNameByName(name, schema) {\n if (schema.nodes[name]) {\n return 'node';\n }\n if (schema.marks[name]) {\n return 'mark';\n }\n return null;\n}\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 */\nfunction deleteProps(obj, propOrProps) {\n const props = typeof propOrProps === 'string'\n ? [propOrProps]\n : propOrProps;\n return Object\n .keys(obj)\n .reduce((newObj, prop) => {\n if (!props.includes(prop)) {\n newObj[prop] = obj[prop];\n }\n return newObj;\n }, {});\n}\n\nconst resetAttributes = (typeOrName, attributes) => ({ tr, state, dispatch }) => {\n let nodeType = null;\n let markType = null;\n const schemaType = getSchemaTypeNameByName(typeof typeOrName === 'string' ? typeOrName : typeOrName.name, state.schema);\n if (!schemaType) {\n return false;\n }\n if (schemaType === 'node') {\n nodeType = getNodeType(typeOrName, state.schema);\n }\n if (schemaType === 'mark') {\n markType = getMarkType(typeOrName, state.schema);\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 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 return true;\n};\n\nconst scrollIntoView = () => ({ tr, dispatch }) => {\n if (dispatch) {\n tr.scrollIntoView();\n }\n return true;\n};\n\nconst selectAll = () => ({ tr, commands }) => {\n return commands.setTextSelection({\n from: 0,\n to: tr.doc.content.size,\n });\n};\n\nconst selectNodeBackward = () => ({ state, dispatch }) => {\n return selectNodeBackward$1(state, dispatch);\n};\n\nconst selectNodeForward = () => ({ state, dispatch }) => {\n return selectNodeForward$1(state, dispatch);\n};\n\nconst selectParentNode = () => ({ state, dispatch }) => {\n return selectParentNode$1(state, dispatch);\n};\n\n// @ts-ignore\n// TODO: add types to @types/prosemirror-commands\nconst selectTextblockEnd = () => ({ state, dispatch }) => {\n return selectTextblockEnd$1(state, dispatch);\n};\n\n// @ts-ignore\n// TODO: add types to @types/prosemirror-commands\nconst selectTextblockStart = () => ({ state, dispatch }) => {\n return selectTextblockStart$1(state, dispatch);\n};\n\n/**\n * Create a new Prosemirror document node from content.\n * @param content The JSON or HTML content to create the document from\n * @param schema The Prosemirror schema to use for the document\n * @param parseOptions Options for the parser\n * @returns The created Prosemirror document node\n */\nfunction createDocument(content, schema, parseOptions = {}, options = {}) {\n return createNodeFromContent(content, schema, {\n slice: false,\n parseOptions,\n errorOnInvalidContent: options.errorOnInvalidContent,\n });\n}\n\nconst setContent = (content, emitUpdate = false, parseOptions = {}, options = {}) => ({ editor, tr, dispatch, commands, }) => {\n var _a, _b;\n const { doc } = tr;\n // This is to keep backward compatibility with the previous behavior\n // TODO remove this in the next major version\n if (parseOptions.preserveWhitespace !== 'full') {\n const document = createDocument(content, editor.schema, parseOptions, {\n errorOnInvalidContent: (_a = options.errorOnInvalidContent) !== null && _a !== void 0 ? _a : editor.options.enableContentCheck,\n });\n if (dispatch) {\n tr.replaceWith(0, doc.content.size, document).setMeta('preventUpdate', !emitUpdate);\n }\n return true;\n }\n if (dispatch) {\n tr.setMeta('preventUpdate', !emitUpdate);\n }\n return commands.insertContentAt({ from: 0, to: doc.content.size }, content, {\n parseOptions,\n errorOnInvalidContent: (_b = options.errorOnInvalidContent) !== null && _b !== void 0 ? _b : editor.options.enableContentCheck,\n });\n};\n\nfunction getMarkAttributes(state, typeOrName) {\n const type = getMarkType(typeOrName, state.schema);\n const { from, to, empty } = state.selection;\n const marks = [];\n if (empty) {\n if (state.storedMarks) {\n marks.push(...state.storedMarks);\n }\n marks.push(...state.selection.$head.marks());\n }\n else {\n state.doc.nodesBetween(from, to, node => {\n marks.push(...node.marks);\n });\n }\n const mark = marks.find(markItem => markItem.type.name === type.name);\n if (!mark) {\n return {};\n }\n return { ...mark.attrs };\n}\n\n/**\n * Returns a new `Transform` based on all steps of the passed transactions.\n * @param oldDoc The Prosemirror node to start from\n * @param transactions The transactions to combine\n * @returns A new `Transform` with all steps of the passed transactions\n */\nfunction combineTransactionSteps(oldDoc, transactions) {\n const transform = new Transform(oldDoc);\n transactions.forEach(transaction => {\n transaction.steps.forEach(step => {\n transform.step(step);\n });\n });\n return transform;\n}\n\n/**\n * Gets the default block type at a given match\n * @param match The content match to get the default block type from\n * @returns The default block type or null\n */\nfunction defaultBlockAt(match) {\n for (let i = 0; i < match.edgeCount; i += 1) {\n const { type } = match.edge(i);\n if (type.isTextblock && !type.hasRequiredAttrs()) {\n return type;\n }\n }\n return null;\n}\n\n/**\n * Find children inside a Prosemirror node that match a predicate.\n * @param node The Prosemirror node to search in\n * @param predicate The predicate to match\n * @returns An array of nodes with their positions\n */\nfunction findChildren(node, predicate) {\n const nodesWithPos = [];\n node.descendants((child, pos) => {\n if (predicate(child)) {\n nodesWithPos.push({\n node: child,\n pos,\n });\n }\n });\n return nodesWithPos;\n}\n\n/**\n * Same as `findChildren` but searches only within a `range`.\n * @param node The Prosemirror node to search in\n * @param range The range to search in\n * @param predicate The predicate to match\n * @returns An array of nodes with their positions\n */\nfunction findChildrenInRange(node, range, predicate) {\n const nodesWithPos = [];\n // if (range.from === range.to) {\n // const nodeAt = node.nodeAt(range.from)\n // if (nodeAt) {\n // nodesWithPos.push({\n // node: nodeAt,\n // pos: range.from,\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 return nodesWithPos;\n}\n\n/**\n * Finds the closest parent node to a resolved position that matches a predicate.\n * @param $pos The resolved position to search from\n * @param predicate The predicate to match\n * @returns The closest parent node to the resolved position that matches the predicate\n * @example ```js\n * findParentNodeClosestToPos($from, node => node.type.name === 'paragraph')\n * ```\n */\nfunction findParentNodeClosestToPos($pos, predicate) {\n for (let i = $pos.depth; i > 0; i -= 1) {\n const node = $pos.node(i);\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\n/**\n * Finds the closest parent node to the current selection that matches a predicate.\n * @param predicate The predicate to match\n * @returns A command that finds the closest parent node to the current selection that matches the predicate\n * @example ```js\n * findParentNode(node => node.type.name === 'paragraph')\n * ```\n */\nfunction findParentNode(predicate) {\n return (selection) => findParentNodeClosestToPos(selection.$from, predicate);\n}\n\nfunction getHTMLFromFragment(fragment, schema) {\n const documentFragment = DOMSerializer.fromSchema(schema).serializeFragment(fragment);\n const temporaryDocument = document.implementation.createHTMLDocument();\n const container = temporaryDocument.createElement('div');\n container.appendChild(documentFragment);\n return container.innerHTML;\n}\n\nfunction getSchema(extensions, editor) {\n const resolvedExtensions = ExtensionManager.resolve(extensions);\n return getSchemaByResolvedExtensions(resolvedExtensions, editor);\n}\n\n/**\n * Generate HTML from a JSONContent\n * @param doc The JSONContent to generate HTML from\n * @param extensions The extensions to use for the schema\n * @returns The generated HTML\n */\nfunction generateHTML(doc, extensions) {\n const schema = getSchema(extensions);\n const contentNode = Node$1.fromJSON(schema, doc);\n return getHTMLFromFragment(contentNode.content, schema);\n}\n\n/**\n * Generate JSONContent from HTML\n * @param html The HTML to generate JSONContent from\n * @param extensions The extensions to use for the schema\n * @returns The generated JSONContent\n */\nfunction generateJSON(html, extensions) {\n const schema = getSchema(extensions);\n const dom = elementFromString(html);\n return DOMParser.fromSchema(schema).parse(dom).toJSON();\n}\n\n/**\n * Gets the text of a Prosemirror node\n * @param node The Prosemirror node\n * @param options Options for the text serializer & block separator\n * @returns The text of the node\n * @example ```js\n * const text = getText(node, { blockSeparator: '\\n' })\n * ```\n */\nfunction getText(node, options) {\n const range = {\n from: 0,\n to: node.content.size,\n };\n return getTextBetween(node, range, options);\n}\n\n/**\n * Generate raw text from a JSONContent\n * @param doc The JSONContent to generate text from\n * @param extensions The extensions to use for the schema\n * @param options Options for the text generation f.e. blockSeparator or textSerializers\n * @returns The generated text\n */\nfunction generateText(doc, extensions, options) {\n const { blockSeparator = '\\n\\n', textSerializers = {} } = options || {};\n const schema = getSchema(extensions);\n const contentNode = Node$1.fromJSON(schema, doc);\n return getText(contentNode, {\n blockSeparator,\n textSerializers: {\n ...getTextSerializersFromSchema(schema),\n ...textSerializers,\n },\n });\n}\n\nfunction getNodeAttributes(state, typeOrName) {\n const type = getNodeType(typeOrName, state.schema);\n const { from, to } = state.selection;\n const nodes = [];\n state.doc.nodesBetween(from, to, node => {\n nodes.push(node);\n });\n const node = nodes.reverse().find(nodeItem => nodeItem.type.name === type.name);\n if (!node) {\n return {};\n }\n return { ...node.attrs };\n}\n\n/**\n * Get node or mark attributes by type or name on the current editor state\n * @param state The current editor state\n * @param typeOrName The node or mark type or name\n * @returns The attributes of the node or mark or an empty object\n */\nfunction getAttributes(state, typeOrName) {\n const schemaType = getSchemaTypeNameByName(typeof typeOrName === 'string' ? typeOrName : typeOrName.name, state.schema);\n if (schemaType === 'node') {\n return getNodeAttributes(state, typeOrName);\n }\n if (schemaType === 'mark') {\n return getMarkAttributes(state, typeOrName);\n }\n return {};\n}\n\n/**\n * Removes duplicated values within an array.\n * Supports numbers, strings and objects.\n */\nfunction removeDuplicates(array, by = JSON.stringify) {\n const seen = {};\n return array.filter(item => {\n const key = by(item);\n return Object.prototype.hasOwnProperty.call(seen, key)\n ? false\n : (seen[key] = true);\n });\n}\n\n/**\n * Removes duplicated ranges and ranges that are\n * fully captured by other ranges.\n */\nfunction simplifyChangedRanges(changes) {\n const uniqueChanges = removeDuplicates(changes);\n return uniqueChanges.length === 1\n ? uniqueChanges\n : uniqueChanges.filter((change, index) => {\n const rest = uniqueChanges.filter((_, i) => i !== index);\n return !rest.some(otherChange => {\n return change.oldRange.from >= otherChange.oldRange.from\n && change.oldRange.to <= otherChange.oldRange.to\n && change.newRange.from >= otherChange.newRange.from\n && change.newRange.to <= otherChange.newRange.to;\n });\n });\n}\n/**\n * Returns a list of changed ranges\n * based on the first and last state of all steps.\n */\nfunction getChangedRanges(transform) {\n const { mapping, steps } = transform;\n const changes = [];\n mapping.maps.forEach((stepMap, index) => {\n const ranges = [];\n // This accounts for step changes where no range was actually altered\n // e.g. when setting a mark, node attribute, etc.\n // @ts-ignore\n if (!stepMap.ranges.length) {\n const { from, to } = steps[index];\n if (from === undefined || to === undefined) {\n return;\n }\n ranges.push({ from, to });\n }\n else {\n stepMap.forEach((from, to) => {\n ranges.push({ from, to });\n });\n }\n ranges.forEach(({ from, to }) => {\n const newStart = mapping.slice(index).map(from, -1);\n const newEnd = mapping.slice(index).map(to);\n const oldStart = mapping.invert().map(newStart, -1);\n const oldEnd = mapping.invert().map(newEnd);\n changes.push({\n oldRange: {\n from: oldStart,\n to: oldEnd,\n },\n newRange: {\n from: newStart,\n to: newEnd,\n },\n });\n });\n });\n return simplifyChangedRanges(changes);\n}\n\nfunction getDebugJSON(node, startOffset = 0) {\n const isTopNode = node.type === node.type.schema.topNodeType;\n const increment = isTopNode ? 0 : 1;\n const from = startOffset;\n const to = from + node.nodeSize;\n const marks = node.marks.map(mark => {\n const output = {\n type: mark.type.name,\n };\n if (Object.keys(mark.attrs).length) {\n output.attrs = { ...mark.attrs };\n }\n return output;\n });\n const attrs = { ...node.attrs };\n const output = {\n type: node.type.name,\n from,\n to,\n };\n if (Object.keys(attrs).length) {\n output.attrs = attrs;\n }\n if (marks.length) {\n output.marks = marks;\n }\n if (node.content.childCount) {\n output.content = [];\n node.forEach((child, offset) => {\n var _a;\n (_a = output.content) === null || _a === void 0 ? void 0 : _a.push(getDebugJSON(child, startOffset + offset + increment));\n });\n }\n if (node.text) {\n output.text = node.text;\n }\n return output;\n}\n\nfunction getMarksBetween(from, to, doc) {\n const marks = [];\n // get all inclusive marks on empty selection\n if (from === to) {\n doc\n .resolve(from)\n .marks()\n .forEach(mark => {\n const $pos = doc.resolve(from);\n const range = getMarkRange($pos, mark.type);\n if (!range) {\n return;\n }\n marks.push({\n mark,\n ...range,\n });\n });\n }\n else {\n doc.nodesBetween(from, to, (node, pos) => {\n if (!node || (node === null || node === void 0 ? void 0 : node.nodeSize) === undefined) {\n return;\n }\n marks.push(...node.marks.map(mark => ({\n from: pos,\n to: pos + node.nodeSize,\n mark,\n })));\n });\n }\n return marks;\n}\n\n/**\n * Finds the first node of a given type or name in the current selection.\n * @param state The editor state.\n * @param typeOrName The node type or name.\n * @param pos The position to start searching from.\n * @param maxDepth The maximum depth to search.\n * @returns The node and the depth as an array.\n */\nconst getNodeAtPosition = (state, typeOrName, pos, maxDepth = 20) => {\n const $pos = state.doc.resolve(pos);\n let currentDepth = maxDepth;\n let node = null;\n while (currentDepth > 0 && node === null) {\n const currentNode = $pos.node(currentDepth);\n if ((currentNode === null || currentNode === void 0 ? void 0 : currentNode.type.name) === typeOrName) {\n node = currentNode;\n }\n else {\n currentDepth -= 1;\n }\n }\n return [node, currentDepth];\n};\n\n/**\n * Return attributes of an extension that should be splitted by keepOnSplit flag\n * @param extensionAttributes Array of extension attributes\n * @param typeName The type of the extension\n * @param attributes The attributes of the extension\n * @returns The splitted attributes\n */\nfunction getSplittedAttributes(extensionAttributes, typeName, attributes) {\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 if (!extensionAttribute) {\n return false;\n }\n return extensionAttribute.attribute.keepOnSplit;\n }));\n}\n\nfunction isMarkActive(state, typeOrName, attributes = {}) {\n const { empty, ranges } = state.selection;\n const type = typeOrName ? getMarkType(typeOrName, state.schema) : null;\n if (empty) {\n return !!(state.storedMarks || state.selection.$from.marks())\n .filter(mark => {\n if (!type) {\n return true;\n }\n return type.name === mark.type.name;\n })\n .find(mark => objectIncludes(mark.attrs, attributes, { strict: false }));\n }\n let selectionRange = 0;\n const markRanges = [];\n ranges.forEach(({ $from, $to }) => {\n const from = $from.pos;\n const to = $to.pos;\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isText && !node.marks.length) {\n return;\n }\n const relativeFrom = Math.max(from, pos);\n const relativeTo = Math.min(to, pos + node.nodeSize);\n const range = relativeTo - relativeFrom;\n selectionRange += range;\n markRanges.push(...node.marks.map(mark => ({\n mark,\n from: relativeFrom,\n to: relativeTo,\n })));\n });\n });\n if (selectionRange === 0) {\n return false;\n }\n // calculate range of matched mark\n const matchedRange = markRanges\n .filter(markRange => {\n if (!type) {\n return true;\n }\n return type.name === markRange.mark.type.name;\n })\n .filter(markRange => objectIncludes(markRange.mark.attrs, attributes, { strict: false }))\n .reduce((sum, markRange) => sum + markRange.to - markRange.from, 0);\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 return markRange.mark.type !== type && markRange.mark.type.excludes(type);\n })\n .reduce((sum, markRange) => sum + markRange.to - markRange.from, 0);\n // we only include the result of `excludedRange`\n // if there is a match at all\n const range = matchedRange > 0 ? matchedRange + excludedRange : matchedRange;\n return range >= selectionRange;\n}\n\nfunction isActive(state, name, attributes = {}) {\n if (!name) {\n return isNodeActive(state, null, attributes) || isMarkActive(state, null, attributes);\n }\n const schemaType = getSchemaTypeNameByName(name, state.schema);\n if (schemaType === 'node') {\n return isNodeActive(state, name, attributes);\n }\n if (schemaType === 'mark') {\n return isMarkActive(state, name, attributes);\n }\n return false;\n}\n\nconst isAtEndOfNode = (state, nodeType) => {\n const { $from, $to, $anchor } = state.selection;\n if (nodeType) {\n const parentNode = findParentNode(node => node.type.name === nodeType)(state.selection);\n if (!parentNode) {\n return false;\n }\n const $parentPos = state.doc.resolve(parentNode.pos + 1);\n if ($anchor.pos + 1 === $parentPos.end()) {\n return true;\n }\n return false;\n }\n if ($to.parentOffset < $to.parent.nodeSize - 2 || $from.pos !== $to.pos) {\n return false;\n }\n return true;\n};\n\nconst isAtStartOfNode = (state) => {\n const { $from, $to } = state.selection;\n if ($from.parentOffset > 0 || $from.pos !== $to.pos) {\n return false;\n }\n return true;\n};\n\nfunction isList(name, extensions) {\n const { nodeExtensions } = splitExtensions(extensions);\n const extension = nodeExtensions.find(item => item.name === name);\n if (!extension) {\n return false;\n }\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n };\n const group = callOrReturn(getExtensionField(extension, 'group', context));\n if (typeof group !== 'string') {\n return false;\n }\n return group.split(' ').includes('list');\n}\n\n/**\n * Returns true if the given prosemirror node is empty.\n */\nfunction isNodeEmpty(node, { checkChildren = true, ignoreWhitespace = false, } = {}) {\n var _a;\n if (ignoreWhitespace) {\n if (node.type.name === 'hardBreak') {\n // Hard breaks are considered empty\n return true;\n }\n if (node.isText) {\n return /^\\s*$/m.test((_a = node.text) !== null && _a !== void 0 ? _a : '');\n }\n }\n if (node.isText) {\n return !node.text;\n }\n if (node.isAtom || node.isLeaf) {\n return false;\n }\n if (node.content.childCount === 0) {\n return true;\n }\n if (checkChildren) {\n let isContentEmpty = true;\n node.content.forEach(childNode => {\n if (isContentEmpty === false) {\n // Exit early for perf\n return;\n }\n if (!isNodeEmpty(childNode, { ignoreWhitespace, checkChildren })) {\n isContentEmpty = false;\n }\n });\n return isContentEmpty;\n }\n return false;\n}\n\nfunction isNodeSelection(value) {\n return value instanceof NodeSelection;\n}\n\nfunction posToDOMRect(view, from, to) {\n const minPos = 0;\n const maxPos = view.state.doc.content.size;\n const resolvedFrom = minMax(from, minPos, maxPos);\n const resolvedEnd = minMax(to, minPos, maxPos);\n const start = view.coordsAtPos(resolvedFrom);\n const end = view.coordsAtPos(resolvedEnd, -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 return {\n ...data,\n toJSON: () => data,\n };\n}\n\nfunction canSetMark(state, tr, newMarkType) {\n var _a;\n const { selection } = tr;\n let cursor = null;\n if (isTextSelection(selection)) {\n cursor = selection.$cursor;\n }\n if (cursor) {\n const currentMarks = (_a = state.storedMarks) !== null && _a !== void 0 ? _a : cursor.marks();\n // There can be no current marks that exclude the new mark\n return (!!newMarkType.isInSet(currentMarks)\n || !currentMarks.some(mark => mark.type.excludes(newMarkType)));\n }\n const { ranges } = selection;\n return ranges.some(({ $from, $to }) => {\n let someNodeSupportsMark = $from.depth === 0\n ? state.doc.inlineContent && state.doc.type.allowsMarkType(newMarkType)\n : false;\n state.doc.nodesBetween($from.pos, $to.pos, (node, _pos, parent) => {\n // If we already found a mark that we can enable, return false to bypass the remaining search\n if (someNodeSupportsMark) {\n return false;\n }\n if (node.isInline) {\n const parentAllowsMarkType = !parent || parent.type.allowsMarkType(newMarkType);\n const currentMarksAllowMarkType = !!newMarkType.isInSet(node.marks)\n || !node.marks.some(otherMark => otherMark.type.excludes(newMarkType));\n someNodeSupportsMark = parentAllowsMarkType && currentMarksAllowMarkType;\n }\n return !someNodeSupportsMark;\n });\n return someNodeSupportsMark;\n });\n}\nconst setMark = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\n const { selection } = tr;\n const { empty, ranges } = selection;\n const type = getMarkType(typeOrName, state.schema);\n if (dispatch) {\n if (empty) {\n const oldAttributes = getMarkAttributes(state, type);\n tr.addStoredMark(type.create({\n ...oldAttributes,\n ...attributes,\n }));\n }\n else {\n ranges.forEach(range => {\n const from = range.$from.pos;\n const to = range.$to.pos;\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 // 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 }\n else {\n tr.addMark(trimmedFrom, trimmedTo, type.create(attributes));\n }\n });\n });\n }\n }\n return canSetMark(state, tr, type);\n};\n\nconst setMeta = (key, value) => ({ tr }) => {\n tr.setMeta(key, value);\n return true;\n};\n\nconst setNode = (typeOrName, attributes = {}) => ({ state, dispatch, chain }) => {\n const type = getNodeType(typeOrName, state.schema);\n // TODO: use a fallback like insertContent?\n if (!type.isTextblock) {\n console.warn('[tiptap warn]: Currently \"setNode()\" only supports text block nodes.');\n return false;\n }\n return (chain()\n // try to convert node to default node if needed\n .command(({ commands }) => {\n const canSetBlock = setBlockType(type, attributes)(state);\n if (canSetBlock) {\n return true;\n }\n return commands.clearNodes();\n })\n .command(({ state: updatedState }) => {\n return setBlockType(type, attributes)(updatedState, dispatch);\n })\n .run());\n};\n\nconst setNodeSelection = position => ({ tr, dispatch }) => {\n if (dispatch) {\n const { doc } = tr;\n const from = minMax(position, 0, doc.content.size);\n const selection = NodeSelection.create(doc, from);\n tr.setSelection(selection);\n }\n return true;\n};\n\nconst setTextSelection = position => ({ tr, dispatch }) => {\n if (dispatch) {\n const { doc } = tr;\n const { from, to } = typeof position === 'number' ? { from: position, to: position } : position;\n const minPos = TextSelection.atStart(doc).from;\n const maxPos = TextSelection.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 tr.setSelection(selection);\n }\n return true;\n};\n\nconst sinkListItem = typeOrName => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema);\n return sinkListItem$1(type)(state, dispatch);\n};\n\nfunction ensureMarks(state, splittableMarks) {\n const marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks) {\n const filteredMarks = marks.filter(mark => splittableMarks === null || splittableMarks === void 0 ? void 0 : splittableMarks.includes(mark.type.name));\n state.tr.ensureMarks(filteredMarks);\n }\n}\nconst splitBlock = ({ keepMarks = true } = {}) => ({ tr, state, dispatch, editor, }) => {\n const { selection, doc } = tr;\n const { $from, $to } = selection;\n const extensionAttributes = editor.extensionManager.attributes;\n const newAttributes = getSplittedAttributes(extensionAttributes, $from.node().type.name, $from.node().attrs);\n if (selection instanceof NodeSelection && selection.node.isBlock) {\n if (!$from.parentOffset || !canSplit(doc, $from.pos)) {\n return false;\n }\n if (dispatch) {\n if (keepMarks) {\n ensureMarks(state, editor.extensionManager.splittableMarks);\n }\n tr.split($from.pos).scrollIntoView();\n }\n return true;\n }\n if (!$from.parent.isBlock) {\n return false;\n }\n const atEnd = $to.parentOffset === $to.parent.content.size;\n const deflt = $from.depth === 0\n ? undefined\n : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)));\n let types = atEnd && deflt\n ? [\n {\n type: deflt,\n attrs: newAttributes,\n },\n ]\n : undefined;\n let can = canSplit(tr.doc, tr.mapping.map($from.pos), 1, types);\n if (!types\n && !can\n && canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt ? [{ type: deflt }] : undefined)) {\n can = true;\n types = deflt\n ? [\n {\n type: deflt,\n attrs: newAttributes,\n },\n ]\n : undefined;\n }\n if (dispatch) {\n if (can) {\n if (selection instanceof TextSelection) {\n tr.deleteSelection();\n }\n tr.split(tr.mapping.map($from.pos), 1, types);\n if (deflt && !atEnd && !$from.parentOffset && $from.parent.type !== deflt) {\n const first = tr.mapping.map($from.before());\n const $first = tr.doc.resolve(first);\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 if (keepMarks) {\n ensureMarks(state, editor.extensionManager.splittableMarks);\n }\n tr.scrollIntoView();\n }\n return can;\n};\n\nconst splitListItem = (typeOrName, overrideAttrs = {}) => ({ tr, state, dispatch, editor, }) => {\n var _a;\n const type = getNodeType(typeOrName, state.schema);\n const { $from, $to } = state.selection;\n // @ts-ignore\n // eslint-disable-next-line\n const node = state.selection.node;\n if ((node && node.isBlock) || $from.depth < 2 || !$from.sameParent($to)) {\n return false;\n }\n const grandParent = $from.node(-1);\n if (grandParent.type !== type) {\n return false;\n }\n const extensionAttributes = editor.extensionManager.attributes;\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 ($from.depth === 2\n || $from.node(-3).type !== type\n || $from.index(-2) !== $from.node(-2).childCount - 1) {\n return false;\n }\n if (dispatch) {\n let wrap = Fragment.empty;\n // eslint-disable-next-line\n const depthBefore = $from.index(-1) ? 1 : $from.index(-2) ? 2 : 3;\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 // eslint-disable-next-line\n const depthAfter = $from.indexAfter(-1) < $from.node(-2).childCount ? 1 : $from.indexAfter(-2) < $from.node(-3).childCount ? 2 : 3;\n // Add a second list item with an empty default start node\n const newNextTypeAttributes = {\n ...getSplittedAttributes(extensionAttributes, $from.node().type.name, $from.node().attrs),\n ...overrideAttrs,\n };\n const nextType = ((_a = type.contentMatch.defaultType) === null || _a === void 0 ? void 0 : _a.createAndFill(newNextTypeAttributes)) || undefined;\n wrap = wrap.append(Fragment.from(type.createAndFill(null, nextType) || undefined));\n const start = $from.before($from.depth - (depthBefore - 1));\n tr.replace(start, $from.after(-depthAfter), new Slice(wrap, 4 - depthBefore, 0));\n let sel = -1;\n tr.doc.nodesBetween(start, tr.doc.content.size, (n, pos) => {\n if (sel > -1) {\n return false;\n }\n if (n.isTextblock && n.content.size === 0) {\n sel = pos + 1;\n }\n });\n if (sel > -1) {\n tr.setSelection(TextSelection.near(tr.doc.resolve(sel)));\n }\n tr.scrollIntoView();\n }\n return true;\n }\n const nextType = $to.pos === $from.end() ? grandParent.contentMatchAt(0).defaultType : null;\n const newTypeAttributes = {\n ...getSplittedAttributes(extensionAttributes, grandParent.type.name, grandParent.attrs),\n ...overrideAttrs,\n };\n const newNextTypeAttributes = {\n ...getSplittedAttributes(extensionAttributes, $from.node().type.name, $from.node().attrs),\n ...overrideAttrs,\n };\n tr.delete($from.pos, $to.pos);\n const types = nextType\n ? [\n { type, attrs: newTypeAttributes },\n { type: nextType, attrs: newNextTypeAttributes },\n ]\n : [{ type, attrs: newTypeAttributes }];\n if (!canSplit(tr.doc, $from.pos, 2)) {\n return false;\n }\n if (dispatch) {\n const { selection, storedMarks } = state;\n const { splittableMarks } = editor.extensionManager;\n const marks = storedMarks || (selection.$to.parentOffset && selection.$from.marks());\n tr.split($from.pos, 2, types).scrollIntoView();\n if (!marks || !dispatch) {\n return true;\n }\n const filteredMarks = marks.filter(mark => splittableMarks.includes(mark.type.name));\n tr.ensureMarks(filteredMarks);\n }\n return true;\n};\n\nconst joinListBackwards = (tr, listType) => {\n const list = findParentNode(node => node.type === listType)(tr.selection);\n if (!list) {\n return true;\n }\n const before = tr.doc.resolve(Math.max(0, list.pos - 1)).before(list.depth);\n if (before === undefined) {\n return true;\n }\n const nodeBefore = tr.doc.nodeAt(before);\n const canJoinBackwards = list.node.type === (nodeBefore === null || nodeBefore === void 0 ? void 0 : nodeBefore.type) && canJoin(tr.doc, list.pos);\n if (!canJoinBackwards) {\n return true;\n }\n tr.join(list.pos);\n return true;\n};\nconst joinListForwards = (tr, listType) => {\n const list = findParentNode(node => node.type === listType)(tr.selection);\n if (!list) {\n return true;\n }\n const after = tr.doc.resolve(list.start).after(list.depth);\n if (after === undefined) {\n return true;\n }\n const nodeAfter = tr.doc.nodeAt(after);\n const canJoinForwards = list.node.type === (nodeAfter === null || nodeAfter === void 0 ? void 0 : nodeAfter.type) && canJoin(tr.doc, after);\n if (!canJoinForwards) {\n return true;\n }\n tr.join(after);\n return true;\n};\nconst toggleList = (listTypeOrName, itemTypeOrName, keepMarks, attributes = {}) => ({ editor, tr, state, dispatch, chain, commands, can, }) => {\n const { extensions, splittableMarks } = editor.extensionManager;\n const listType = getNodeType(listTypeOrName, state.schema);\n const itemType = getNodeType(itemTypeOrName, state.schema);\n const { selection, storedMarks } = state;\n const { $from, $to } = selection;\n const range = $from.blockRange($to);\n const marks = storedMarks || (selection.$to.parentOffset && selection.$from.marks());\n if (!range) {\n return false;\n }\n const parentList = findParentNode(node => isList(node.type.name, extensions))(selection);\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 // change list type\n if (isList(parentList.node.type.name, extensions)\n && listType.validContent(parentList.node.content)\n && dispatch) {\n return chain()\n .command(() => {\n tr.setNodeMarkup(parentList.pos, listType);\n return true;\n })\n .command(() => joinListBackwards(tr, listType))\n .command(() => joinListForwards(tr, listType))\n .run();\n }\n }\n if (!keepMarks || !marks || !dispatch) {\n return chain()\n // try to convert node to default node if needed\n .command(() => {\n const canWrapInList = can().wrapInList(listType, attributes);\n if (canWrapInList) {\n return true;\n }\n return commands.clearNodes();\n })\n .wrapInList(listType, attributes)\n .command(() => joinListBackwards(tr, listType))\n .command(() => joinListForwards(tr, listType))\n .run();\n }\n return (chain()\n // try to convert node to default node if needed\n .command(() => {\n const canWrapInList = can().wrapInList(listType, attributes);\n const filteredMarks = marks.filter(mark => splittableMarks.includes(mark.type.name));\n tr.ensureMarks(filteredMarks);\n if (canWrapInList) {\n return true;\n }\n return commands.clearNodes();\n })\n .wrapInList(listType, attributes)\n .command(() => joinListBackwards(tr, listType))\n .command(() => joinListForwards(tr, listType))\n .run());\n};\n\nconst toggleMark = (typeOrName, attributes = {}, options = {}) => ({ state, commands }) => {\n const { extendEmptyMarkRange = false } = options;\n const type = getMarkType(typeOrName, state.schema);\n const isActive = isMarkActive(state, type, attributes);\n if (isActive) {\n return commands.unsetMark(type, { extendEmptyMarkRange });\n }\n return commands.setMark(type, attributes);\n};\n\nconst 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 let attributesToCopy;\n if (state.selection.$anchor.sameParent(state.selection.$head)) {\n // only copy attributes if the selection is pointing to a node of the same type\n attributesToCopy = state.selection.$anchor.parent.attrs;\n }\n if (isActive) {\n return commands.setNode(toggleType, attributesToCopy);\n }\n // If the node is not active, we want to set the new node type with the given attributes\n // Copying over the attributes from the current node if the selection is pointing to a node of the same type\n return commands.setNode(type, { ...attributesToCopy, ...attributes });\n};\n\nconst toggleWrap = (typeOrName, attributes = {}) => ({ state, commands }) => {\n const type = getNodeType(typeOrName, state.schema);\n const isActive = isNodeActive(state, type, attributes);\n if (isActive) {\n return commands.lift(type);\n }\n return commands.wrapIn(type, attributes);\n};\n\nconst undoInputRule = () => ({ state, dispatch }) => {\n const plugins = state.plugins;\n for (let i = 0; i < plugins.length; i += 1) {\n const plugin = plugins[i];\n let undoable;\n // @ts-ignore\n // eslint-disable-next-line\n if (plugin.spec.isInputRules && (undoable = plugin.getState(state))) {\n if (dispatch) {\n const tr = state.tr;\n const toUndo = undoable.transform;\n for (let j = toUndo.steps.length - 1; j >= 0; j -= 1) {\n tr.step(toUndo.steps[j].invert(toUndo.docs[j]));\n }\n if (undoable.text) {\n const marks = tr.doc.resolve(undoable.from).marks();\n tr.replaceWith(undoable.from, undoable.to, state.schema.text(undoable.text, marks));\n }\n else {\n tr.delete(undoable.from, undoable.to);\n }\n }\n return true;\n }\n }\n return false;\n};\n\nconst unsetAllMarks = () => ({ tr, dispatch }) => {\n const { selection } = tr;\n const { empty, ranges } = selection;\n if (empty) {\n return true;\n }\n if (dispatch) {\n ranges.forEach(range => {\n tr.removeMark(range.$from.pos, range.$to.pos);\n });\n }\n return true;\n};\n\nconst unsetMark = (typeOrName, options = {}) => ({ tr, state, dispatch }) => {\n var _a;\n const { extendEmptyMarkRange = false } = options;\n const { selection } = tr;\n const type = getMarkType(typeOrName, state.schema);\n const { $from, empty, ranges } = selection;\n if (!dispatch) {\n return true;\n }\n if (empty && extendEmptyMarkRange) {\n let { from, to } = selection;\n const attrs = (_a = $from.marks().find(mark => mark.type === type)) === null || _a === void 0 ? void 0 : _a.attrs;\n const range = getMarkRange($from, type, attrs);\n if (range) {\n from = range.from;\n to = range.to;\n }\n tr.removeMark(from, to, type);\n }\n else {\n ranges.forEach(range => {\n tr.removeMark(range.$from.pos, range.$to.pos, type);\n });\n }\n tr.removeStoredMark(type);\n return true;\n};\n\nconst updateAttributes = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\n let nodeType = null;\n let markType = null;\n const schemaType = getSchemaTypeNameByName(typeof typeOrName === 'string' ? typeOrName : typeOrName.name, state.schema);\n if (!schemaType) {\n return false;\n }\n if (schemaType === 'node') {\n nodeType = getNodeType(typeOrName, state.schema);\n }\n if (schemaType === 'mark') {\n markType = getMarkType(typeOrName, state.schema);\n }\n if (dispatch) {\n tr.selection.ranges.forEach(range => {\n const from = range.$from.pos;\n const to = range.$to.pos;\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 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 tr.addMark(trimmedFrom, trimmedTo, markType.create({\n ...mark.attrs,\n ...attributes,\n }));\n }\n });\n }\n });\n });\n }\n return true;\n};\n\nconst wrapIn = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema);\n return wrapIn$1(type, attributes)(state, dispatch);\n};\n\nconst wrapInList = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\n const type = getNodeType(typeOrName, state.schema);\n return wrapInList$1(type, attributes)(state, dispatch);\n};\n\nvar commands = /*#__PURE__*/Object.freeze({\n __proto__: null,\n blur: blur,\n clearContent: clearContent,\n clearNodes: clearNodes,\n command: command,\n createParagraphNear: createParagraphNear,\n cut: cut,\n deleteCurrentNode: deleteCurrentNode,\n deleteNode: deleteNode,\n deleteRange: deleteRange,\n deleteSelection: deleteSelection,\n enter: enter,\n exitCode: exitCode,\n extendMarkRange: extendMarkRange,\n first: first,\n focus: focus,\n forEach: forEach,\n insertContent: insertContent,\n insertContentAt: insertContentAt,\n joinBackward: joinBackward,\n joinDown: joinDown,\n joinForward: joinForward,\n joinItemBackward: joinItemBackward,\n joinItemForward: joinItemForward,\n joinTextblockBackward: joinTextblockBackward,\n joinTextblockForward: joinTextblockForward,\n joinUp: joinUp,\n keyboardShortcut: keyboardShortcut,\n lift: lift,\n liftEmptyBlock: liftEmptyBlock,\n liftListItem: liftListItem,\n newlineInCode: newlineInCode,\n resetAttributes: resetAttributes,\n scrollIntoView: scrollIntoView,\n selectAll: selectAll,\n selectNodeBackward: selectNodeBackward,\n selectNodeForward: selectNodeForward,\n selectParentNode: selectParentNode,\n selectTextblockEnd: selectTextblockEnd,\n selectTextblockStart: selectTextblockStart,\n setContent: setContent,\n setMark: setMark,\n setMeta: setMeta,\n setNode: setNode,\n setNodeSelection: setNodeSelection,\n setTextSelection: setTextSelection,\n sinkListItem: sinkListItem,\n splitBlock: splitBlock,\n splitListItem: splitListItem,\n toggleList: toggleList,\n toggleMark: toggleMark,\n toggleNode: toggleNode,\n toggleWrap: toggleWrap,\n undoInputRule: undoInputRule,\n unsetAllMarks: unsetAllMarks,\n unsetMark: unsetMark,\n updateAttributes: updateAttributes,\n wrapIn: wrapIn,\n wrapInList: wrapInList\n});\n\nconst Commands = Extension.create({\n name: 'commands',\n addCommands() {\n return {\n ...commands,\n };\n },\n});\n\nconst Drop = Extension.create({\n name: 'drop',\n addProseMirrorPlugins() {\n return [\n new Plugin({\n key: new PluginKey('tiptapDrop'),\n props: {\n handleDrop: (_, e, slice, moved) => {\n this.editor.emit('drop', {\n editor: this.editor,\n event: e,\n slice,\n moved,\n });\n },\n },\n }),\n ];\n },\n});\n\nconst Editable = Extension.create({\n name: 'editable',\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\nconst FocusEvents = Extension.create({\n name: 'focusEvents',\n addProseMirrorPlugins() {\n const { editor } = this;\n return [\n new Plugin({\n key: new PluginKey('focusEvents'),\n props: {\n handleDOMEvents: {\n focus: (view, event) => {\n editor.isFocused = true;\n const transaction = editor.state.tr\n .setMeta('focus', { event })\n .setMeta('addToHistory', false);\n view.dispatch(transaction);\n return false;\n },\n blur: (view, event) => {\n editor.isFocused = false;\n const transaction = editor.state.tr\n .setMeta('blur', { event })\n .setMeta('addToHistory', false);\n view.dispatch(transaction);\n return false;\n },\n },\n },\n }),\n ];\n },\n});\n\nconst Keymap = Extension.create({\n name: 'keymap',\n addKeyboardShortcuts() {\n const handleBackspace = () => this.editor.commands.first(({ commands }) => [\n () => commands.undoInputRule(),\n // maybe convert first text block node to default node\n () => commands.command(({ tr }) => {\n const { selection, doc } = tr;\n const { empty, $anchor } = selection;\n const { pos, parent } = $anchor;\n const $parentPos = $anchor.parent.isTextblock && pos > 0 ? tr.doc.resolve(pos - 1) : $anchor;\n const parentIsIsolating = $parentPos.parent.type.spec.isolating;\n const parentPos = $anchor.pos - $anchor.parentOffset;\n const isAtStart = (parentIsIsolating && $parentPos.parent.childCount === 1)\n ? parentPos === $anchor.pos\n : Selection.atStart(doc).from === pos;\n if (!empty\n || !parent.type.isTextblock\n || parent.textContent.length\n || !isAtStart\n || (isAtStart && $anchor.parent.type.name === 'paragraph') // prevent clearNodes when no nodes to clear, otherwise history stack is appended\n ) {\n return false;\n }\n return commands.clearNodes();\n }),\n () => commands.deleteSelection(),\n () => commands.joinBackward(),\n () => commands.selectNodeBackward(),\n ]);\n const handleDelete = () => this.editor.commands.first(({ commands }) => [\n () => commands.deleteSelection(),\n () => commands.deleteCurrentNode(),\n () => commands.joinForward(),\n () => commands.selectNodeForward(),\n ]);\n const handleEnter = () => this.editor.commands.first(({ commands }) => [\n () => commands.newlineInCode(),\n () => commands.createParagraphNear(),\n () => commands.liftEmptyBlock(),\n () => commands.splitBlock(),\n ]);\n const baseKeymap = {\n Enter: handleEnter,\n 'Mod-Enter': () => this.editor.commands.exitCode(),\n Backspace: handleBackspace,\n 'Mod-Backspace': handleBackspace,\n 'Shift-Backspace': handleBackspace,\n Delete: handleDelete,\n 'Mod-Delete': handleDelete,\n 'Mod-a': () => this.editor.commands.selectAll(),\n };\n const pcKeymap = {\n ...baseKeymap,\n };\n const macKeymap = {\n ...baseKeymap,\n 'Ctrl-h': handleBackspace,\n 'Alt-Backspace': handleBackspace,\n 'Ctrl-d': handleDelete,\n 'Ctrl-Alt-Backspace': handleDelete,\n 'Alt-Delete': handleDelete,\n 'Alt-d': handleDelete,\n 'Ctrl-a': () => this.editor.commands.selectTextblockStart(),\n 'Ctrl-e': () => this.editor.commands.selectTextblockEnd(),\n };\n if (isiOS() || isMacOS()) {\n return macKeymap;\n }\n return pcKeymap;\n },\n addProseMirrorPlugins() {\n return [\n // With this plugin we check if the whole document was selected and deleted.\n // In this case we will additionally call `clearNodes()` to convert e.g. a heading\n // to a paragraph if necessary.\n // This is an alternative to ProseMirror's `AllSelection`, which doesn’t work well\n // with many other commands.\n new Plugin({\n key: new PluginKey('clearDocument'),\n appendTransaction: (transactions, oldState, newState) => {\n const docChanges = transactions.some(transaction => transaction.docChanged)\n && !oldState.doc.eq(newState.doc);\n const ignoreTr = transactions.some(transaction => transaction.getMeta('preventClearDocument'));\n if (!docChanges || ignoreTr) {\n return;\n }\n const { empty, from, to } = oldState.selection;\n const allFrom = Selection.atStart(oldState.doc).from;\n const allEnd = Selection.atEnd(oldState.doc).to;\n const allWasSelected = from === allFrom && to === allEnd;\n if (empty || !allWasSelected) {\n return;\n }\n const isEmpty = isNodeEmpty(newState.doc);\n if (!isEmpty) {\n return;\n }\n const tr = newState.tr;\n const state = createChainableState({\n state: newState,\n transaction: tr,\n });\n const { commands } = new CommandManager({\n editor: this.editor,\n state,\n });\n commands.clearNodes();\n if (!tr.steps.length) {\n return;\n }\n return tr;\n },\n }),\n ];\n },\n});\n\nconst Paste = Extension.create({\n name: 'paste',\n addProseMirrorPlugins() {\n return [\n new Plugin({\n key: new PluginKey('tiptapPaste'),\n props: {\n handlePaste: (_view, e, slice) => {\n this.editor.emit('paste', {\n editor: this.editor,\n event: e,\n slice,\n });\n },\n },\n }),\n ];\n },\n});\n\nconst Tabindex = Extension.create({\n name: 'tabindex',\n addProseMirrorPlugins() {\n return [\n new Plugin({\n key: new PluginKey('tabindex'),\n props: {\n attributes: () => (this.editor.isEditable ? { tabindex: '0' } : {}),\n },\n }),\n ];\n },\n});\n\nvar index = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ClipboardTextSerializer: ClipboardTextSerializer,\n Commands: Commands,\n Drop: Drop,\n Editable: Editable,\n FocusEvents: FocusEvents,\n Keymap: Keymap,\n Paste: Paste,\n Tabindex: Tabindex\n});\n\nclass NodePos {\n get name() {\n return this.node.type.name;\n }\n constructor(pos, editor, isBlock = false, node = null) {\n this.currentNode = null;\n this.actualDepth = null;\n this.isBlock = isBlock;\n this.resolvedPos = pos;\n this.editor = editor;\n this.currentNode = node;\n }\n get node() {\n return this.currentNode || this.resolvedPos.node();\n }\n get element() {\n return this.editor.view.domAtPos(this.pos).node;\n }\n get depth() {\n var _a;\n return (_a = this.actualDepth) !== null && _a !== void 0 ? _a : this.resolvedPos.depth;\n }\n get pos() {\n return this.resolvedPos.pos;\n }\n get content() {\n return this.node.content;\n }\n set content(content) {\n let from = this.from;\n let to = this.to;\n if (this.isBlock) {\n if (this.content.size === 0) {\n console.error(`You can’t set content on a block node. Tried to set content on ${this.name} at ${this.pos}`);\n return;\n }\n from = this.from + 1;\n to = this.to - 1;\n }\n this.editor.commands.insertContentAt({ from, to }, content);\n }\n get attributes() {\n return this.node.attrs;\n }\n get textContent() {\n return this.node.textContent;\n }\n get size() {\n return this.node.nodeSize;\n }\n get from() {\n if (this.isBlock) {\n return this.pos;\n }\n return this.resolvedPos.start(this.resolvedPos.depth);\n }\n get range() {\n return {\n from: this.from,\n to: this.to,\n };\n }\n get to() {\n if (this.isBlock) {\n return this.pos + this.size;\n }\n return this.resolvedPos.end(this.resolvedPos.depth) + (this.node.isText ? 0 : 1);\n }\n get parent() {\n if (this.depth === 0) {\n return null;\n }\n const parentPos = this.resolvedPos.start(this.resolvedPos.depth - 1);\n const $pos = this.resolvedPos.doc.resolve(parentPos);\n return new NodePos($pos, this.editor);\n }\n get before() {\n let $pos = this.resolvedPos.doc.resolve(this.from - (this.isBlock ? 1 : 2));\n if ($pos.depth !== this.depth) {\n $pos = this.resolvedPos.doc.resolve(this.from - 3);\n }\n return new NodePos($pos, this.editor);\n }\n get after() {\n let $pos = this.resolvedPos.doc.resolve(this.to + (this.isBlock ? 2 : 1));\n if ($pos.depth !== this.depth) {\n $pos = this.resolvedPos.doc.resolve(this.to + 3);\n }\n return new NodePos($pos, this.editor);\n }\n get children() {\n const children = [];\n this.node.content.forEach((node, offset) => {\n const isBlock = node.isBlock && !node.isTextblock;\n const isNonTextAtom = node.isAtom && !node.isText;\n const targetPos = this.pos + offset + (isNonTextAtom ? 0 : 1);\n const $pos = this.resolvedPos.doc.resolve(targetPos);\n if (!isBlock && $pos.depth <= this.depth) {\n return;\n }\n const childNodePos = new NodePos($pos, this.editor, isBlock, isBlock ? node : null);\n if (isBlock) {\n childNodePos.actualDepth = this.depth + 1;\n }\n children.push(new NodePos($pos, this.editor, isBlock, isBlock ? node : null));\n });\n return children;\n }\n get firstChild() {\n return this.children[0] || null;\n }\n get lastChild() {\n const children = this.children;\n return children[children.length - 1] || null;\n }\n closest(selector, attributes = {}) {\n let node = null;\n let currentNode = this.parent;\n while (currentNode && !node) {\n if (currentNode.node.type.name === selector) {\n if (Object.keys(attributes).length > 0) {\n const nodeAttributes = currentNode.node.attrs;\n const attrKeys = Object.keys(attributes);\n for (let index = 0; index < attrKeys.length; index += 1) {\n const key = attrKeys[index];\n if (nodeAttributes[key] !== attributes[key]) {\n break;\n }\n }\n }\n else {\n node = currentNode;\n }\n }\n currentNode = currentNode.parent;\n }\n return node;\n }\n querySelector(selector, attributes = {}) {\n return this.querySelectorAll(selector, attributes, true)[0] || null;\n }\n querySelectorAll(selector, attributes = {}, firstItemOnly = false) {\n let nodes = [];\n if (!this.children || this.children.length === 0) {\n return nodes;\n }\n const attrKeys = Object.keys(attributes);\n /**\n * Finds all children recursively that match the selector and attributes\n * If firstItemOnly is true, it will return the first item found\n */\n this.children.forEach(childPos => {\n // If we already found a node and we only want the first item, we dont need to keep going\n if (firstItemOnly && nodes.length > 0) {\n return;\n }\n if (childPos.node.type.name === selector) {\n const doesAllAttributesMatch = attrKeys.every(key => attributes[key] === childPos.node.attrs[key]);\n if (doesAllAttributesMatch) {\n nodes.push(childPos);\n }\n }\n // If we already found a node and we only want the first item, we can stop here and skip the recursion\n if (firstItemOnly && nodes.length > 0) {\n return;\n }\n nodes = nodes.concat(childPos.querySelectorAll(selector, attributes, firstItemOnly));\n });\n return nodes;\n }\n setAttribute(attributes) {\n const { tr } = this.editor.state;\n tr.setNodeMarkup(this.from, undefined, {\n ...this.node.attrs,\n ...attributes,\n });\n this.editor.view.dispatch(tr);\n }\n}\n\nconst style = `.ProseMirror {\n position: relative;\n}\n\n.ProseMirror {\n word-wrap: break-word;\n white-space: pre-wrap;\n white-space: break-spaces;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none;\n font-feature-settings: \"liga\" 0; /* the above doesn't seem to work in Edge */\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\nimg.ProseMirror-separator {\n display: inline !important;\n border: none !important;\n margin: 0 !important;\n width: 0 !important;\n height: 0 !important;\n}\n\n.ProseMirror-gapcursor {\n display: none;\n pointer-events: none;\n position: absolute;\n margin: 0;\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\nfunction createStyleTag(style, nonce, suffix) {\n const tiptapStyleTag = document.querySelector(`style[data-tiptap-style${suffix ? `-${suffix}` : ''}]`);\n if (tiptapStyleTag !== null) {\n return tiptapStyleTag;\n }\n const styleNode = document.createElement('style');\n if (nonce) {\n styleNode.setAttribute('nonce', nonce);\n }\n styleNode.setAttribute(`data-tiptap-style${suffix ? `-${suffix}` : ''}`, '');\n styleNode.innerHTML = style;\n document.getElementsByTagName('head')[0].appendChild(styleNode);\n return styleNode;\n}\n\nclass Editor extends EventEmitter {\n constructor(options = {}) {\n super();\n this.isFocused = false;\n /**\n * The editor is considered initialized after the `create` event has been emitted.\n */\n this.isInitialized = false;\n this.extensionStorage = {};\n this.options = {\n element: document.createElement('div'),\n content: '',\n injectCSS: true,\n injectNonce: undefined,\n extensions: [],\n autofocus: false,\n editable: true,\n editorProps: {},\n parseOptions: {},\n coreExtensionOptions: {},\n enableInputRules: true,\n enablePasteRules: true,\n enableCoreExtensions: true,\n enableContentCheck: false,\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 onContentError: ({ error }) => { throw error; },\n onPaste: () => null,\n onDrop: () => null,\n };\n this.isCapturingTransaction = false;\n this.capturedTransaction = null;\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.on('contentError', this.options.onContentError);\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 this.on('drop', ({ event, slice, moved }) => this.options.onDrop(event, slice, moved));\n this.on('paste', ({ event, slice }) => this.options.onPaste(event, slice));\n window.setTimeout(() => {\n if (this.isDestroyed) {\n return;\n }\n this.commands.focus(this.options.autofocus);\n this.emit('create', { editor: this });\n this.isInitialized = true;\n }, 0);\n }\n /**\n * Returns the editor storage.\n */\n get storage() {\n return this.extensionStorage;\n }\n /**\n * An object of all registered commands.\n */\n get commands() {\n return this.commandManager.commands;\n }\n /**\n * Create a command chain to call multiple commands at once.\n */\n chain() {\n return this.commandManager.chain();\n }\n /**\n * Check if a command or a command chain can be executed. Without executing it.\n */\n can() {\n return this.commandManager.can();\n }\n /**\n * Inject CSS styles.\n */\n injectCSS() {\n if (this.options.injectCSS && document) {\n this.css = createStyleTag(style, this.options.injectNonce);\n }\n }\n /**\n * Update editor options.\n *\n * @param options A list of options\n */\n setOptions(options = {}) {\n this.options = {\n ...this.options,\n ...options,\n };\n if (!this.view || !this.state || this.isDestroyed) {\n return;\n }\n if (this.options.editorProps) {\n this.view.setProps(this.options.editorProps);\n }\n this.view.updateState(this.state);\n }\n /**\n * Update editable state of the editor.\n */\n setEditable(editable, emitUpdate = true) {\n this.setOptions({ editable });\n if (emitUpdate) {\n this.emit('update', { editor: this, transaction: this.state.tr });\n }\n }\n /**\n * Returns whether the editor is editable.\n */\n get isEditable() {\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 && this.view && this.view.editable;\n }\n /**\n * Returns the editor state.\n */\n get state() {\n return this.view.state;\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 * @returns The new editor state\n */\n registerPlugin(plugin, handlePlugins) {\n const plugins = isFunction(handlePlugins)\n ? handlePlugins(plugin, [...this.state.plugins])\n : [...this.state.plugins, plugin];\n const state = this.state.reconfigure({ plugins });\n this.view.updateState(state);\n return state;\n }\n /**\n * Unregister a ProseMirror plugin.\n *\n * @param nameOrPluginKeyToRemove The plugins name\n * @returns The new editor state or undefined if the editor is destroyed\n */\n unregisterPlugin(nameOrPluginKeyToRemove) {\n if (this.isDestroyed) {\n return undefined;\n }\n const prevPlugins = this.state.plugins;\n let plugins = prevPlugins;\n [].concat(nameOrPluginKeyToRemove).forEach(nameOrPluginKey => {\n // @ts-ignore\n const name = typeof nameOrPluginKey === 'string' ? `${nameOrPluginKey}$` : nameOrPluginKey.key;\n // @ts-ignore\n plugins = prevPlugins.filter(plugin => !plugin.key.startsWith(name));\n });\n if (prevPlugins.length === plugins.length) {\n // No plugin was removed, so we don’t need to update the state\n return undefined;\n }\n const state = this.state.reconfigure({\n plugins,\n });\n this.view.updateState(state);\n return state;\n }\n /**\n * Creates an extension manager.\n */\n createExtensionManager() {\n var _a, _b;\n const coreExtensions = this.options.enableCoreExtensions ? [\n Editable,\n ClipboardTextSerializer.configure({\n blockSeparator: (_b = (_a = this.options.coreExtensionOptions) === null || _a === void 0 ? void 0 : _a.clipboardTextSerializer) === null || _b === void 0 ? void 0 : _b.blockSeparator,\n }),\n Commands,\n FocusEvents,\n Keymap,\n Tabindex,\n Drop,\n Paste,\n ].filter(ext => {\n if (typeof this.options.enableCoreExtensions === 'object') {\n return this.options.enableCoreExtensions[ext.name] !== false;\n }\n return true;\n }) : [];\n const allExtensions = [...coreExtensions, ...this.options.extensions].filter(extension => {\n return ['extension', 'node', 'mark'].includes(extension === null || extension === void 0 ? void 0 : extension.type);\n });\n this.extensionManager = new ExtensionManager(allExtensions, this);\n }\n /**\n * Creates an command manager.\n */\n createCommandManager() {\n this.commandManager = new CommandManager({\n editor: this,\n });\n }\n /**\n * Creates a ProseMirror schema.\n */\n createSchema() {\n this.schema = this.extensionManager.schema;\n }\n /**\n * Creates a ProseMirror view.\n */\n createView() {\n let doc;\n try {\n doc = createDocument(this.options.content, this.schema, this.options.parseOptions, { errorOnInvalidContent: this.options.enableContentCheck });\n }\n catch (e) {\n if (!(e instanceof Error) || !['[tiptap error]: Invalid JSON content', '[tiptap error]: Invalid HTML content'].includes(e.message)) {\n // Not the content error we were expecting\n throw e;\n }\n this.emit('contentError', {\n editor: this,\n error: e,\n disableCollaboration: () => {\n if (this.storage.collaboration) {\n this.storage.collaboration.isDisabled = true;\n }\n // To avoid syncing back invalid content, reinitialize the extensions without the collaboration extension\n this.options.extensions = this.options.extensions.filter(extension => extension.name !== 'collaboration');\n // Restart the initialization process by recreating the extension manager with the new set of extensions\n this.createExtensionManager();\n },\n });\n // Content is invalid, but attempt to create it anyway, stripping out the invalid parts\n doc = createDocument(this.options.content, this.schema, this.options.parseOptions, { errorOnInvalidContent: false });\n }\n const selection = resolveFocusPosition(doc, this.options.autofocus);\n this.view = new EditorView(this.options.element, {\n ...this.options.editorProps,\n dispatchTransaction: this.dispatchTransaction.bind(this),\n state: EditorState.create({\n doc,\n selection: selection || undefined,\n }),\n });\n // add `role=\"textbox\"` to the editor element\n this.view.dom.setAttribute('role', 'textbox');\n // add aria-label to the editor element\n if (!this.view.dom.getAttribute('aria-label')) {\n this.view.dom.setAttribute('aria-label', 'Rich-Text Editor');\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 this.view.updateState(newState);\n this.createNodeViews();\n this.prependClass();\n // Let’s store the editor instance in the DOM element.\n // So we’ll have access to it for tests.\n // @ts-ignore\n const dom = this.view.dom;\n dom.editor = this;\n }\n /**\n * Creates all node views.\n */\n createNodeViews() {\n if (this.view.isDestroyed) {\n return;\n }\n this.view.setProps({\n nodeViews: this.extensionManager.nodeViews,\n });\n }\n /**\n * Prepend class name to element.\n */\n prependClass() {\n this.view.dom.className = `tiptap ${this.view.dom.className}`;\n }\n captureTransaction(fn) {\n this.isCapturingTransaction = true;\n fn();\n this.isCapturingTransaction = false;\n const tr = this.capturedTransaction;\n this.capturedTransaction = null;\n return tr;\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 dispatchTransaction(transaction) {\n // if the editor / the view of the editor was destroyed\n // the transaction should not be dispatched as there is no view anymore.\n if (this.view.isDestroyed) {\n return;\n }\n if (this.isCapturingTransaction) {\n if (!this.capturedTransaction) {\n this.capturedTransaction = transaction;\n return;\n }\n transaction.steps.forEach(step => { var _a; return (_a = this.capturedTransaction) === null || _a === void 0 ? void 0 : _a.step(step); });\n return;\n }\n const state = this.state.apply(transaction);\n const selectionHasChanged = !this.state.selection.eq(state.selection);\n this.emit('beforeTransaction', {\n editor: this,\n transaction,\n nextState: state,\n });\n this.view.updateState(state);\n this.emit('transaction', {\n editor: this,\n transaction,\n });\n if (selectionHasChanged) {\n this.emit('selectionUpdate', {\n editor: this,\n transaction,\n });\n }\n const focus = transaction.getMeta('focus');\n const blur = transaction.getMeta('blur');\n if (focus) {\n this.emit('focus', {\n editor: this,\n event: focus.event,\n transaction,\n });\n }\n if (blur) {\n this.emit('blur', {\n editor: this,\n event: blur.event,\n transaction,\n });\n }\n if (!transaction.docChanged || transaction.getMeta('preventUpdate')) {\n return;\n }\n this.emit('update', {\n editor: this,\n transaction,\n });\n }\n /**\n * Get attributes of the currently selected node or mark.\n */\n getAttributes(nameOrType) {\n return getAttributes(this.state, nameOrType);\n }\n isActive(nameOrAttributes, attributesOrUndefined) {\n const name = typeof nameOrAttributes === 'string' ? nameOrAttributes : null;\n const attributes = typeof nameOrAttributes === 'string' ? attributesOrUndefined : nameOrAttributes;\n return isActive(this.state, name, attributes);\n }\n /**\n * Get the document as JSON.\n */\n getJSON() {\n return this.state.doc.toJSON();\n }\n /**\n * Get the document as HTML.\n */\n getHTML() {\n return getHTMLFromFragment(this.state.doc.content, this.schema);\n }\n /**\n * Get the document as text.\n */\n getText(options) {\n const { blockSeparator = '\\n\\n', textSerializers = {} } = options || {};\n return getText(this.state.doc, {\n blockSeparator,\n textSerializers: {\n ...getTextSerializersFromSchema(this.schema),\n ...textSerializers,\n },\n });\n }\n /**\n * Check if there is no content.\n */\n get isEmpty() {\n return isNodeEmpty(this.state.doc);\n }\n /**\n * Get the number of characters for the current document.\n *\n * @deprecated\n */\n getCharacterCount() {\n console.warn('[tiptap warn]: \"editor.getCharacterCount()\" is deprecated. Please use \"editor.storage.characterCount.characters()\" instead.');\n return this.state.doc.content.size - 2;\n }\n /**\n * Destroy the editor.\n */\n destroy() {\n this.emit('destroy');\n if (this.view) {\n // Cleanup our reference to prevent circular references which caused memory leaks\n // @ts-ignore\n const dom = this.view.dom;\n if (dom && dom.editor) {\n delete dom.editor;\n }\n this.view.destroy();\n }\n this.removeAllListeners();\n }\n /**\n * Check if the editor is already destroyed.\n */\n get isDestroyed() {\n var _a;\n // @ts-ignore\n return !((_a = this.view) === null || _a === void 0 ? void 0 : _a.docView);\n }\n $node(selector, attributes) {\n var _a;\n return ((_a = this.$doc) === null || _a === void 0 ? void 0 : _a.querySelector(selector, attributes)) || null;\n }\n $nodes(selector, attributes) {\n var _a;\n return ((_a = this.$doc) === null || _a === void 0 ? void 0 : _a.querySelectorAll(selector, attributes)) || null;\n }\n $pos(pos) {\n const $pos = this.state.doc.resolve(pos);\n return new NodePos($pos, this);\n }\n get $doc() {\n return this.$pos(0);\n }\n}\n\n/**\n * Build an input rule that adds a mark when the\n * matched text is typed into it.\n * @see https://tiptap.dev/guide/custom-extensions/#input-rules\n */\nfunction markInputRule(config) {\n return new InputRule({\n find: config.find,\n handler: ({ state, range, match }) => {\n const attributes = callOrReturn(config.getAttributes, undefined, match);\n if (attributes === false || attributes === null) {\n return null;\n }\n const { tr } = state;\n const captureGroup = match[match.length - 1];\n const fullMatch = match[0];\n if (captureGroup) {\n const startSpaces = fullMatch.search(/\\S/);\n const textStart = range.from + fullMatch.indexOf(captureGroup);\n const textEnd = textStart + captureGroup.length;\n const excludedMarks = getMarksBetween(range.from, range.to, state.doc)\n .filter(item => {\n // @ts-ignore\n const excluded = item.mark.type.excluded;\n return excluded.find(type => type === config.type && type !== item.mark.type);\n })\n .filter(item => item.to > textStart);\n if (excludedMarks.length) {\n return null;\n }\n if (textEnd < range.to) {\n tr.delete(textEnd, range.to);\n }\n if (textStart > range.from) {\n tr.delete(range.from + startSpaces, textStart);\n }\n const markEnd = range.from + startSpaces + captureGroup.length;\n tr.addMark(range.from + startSpaces, markEnd, config.type.create(attributes || {}));\n tr.removeStoredMark(config.type);\n }\n },\n });\n}\n\n/**\n * Build an input rule that adds a node when the\n * matched text is typed into it.\n * @see https://tiptap.dev/guide/custom-extensions/#input-rules\n */\nfunction nodeInputRule(config) {\n return new InputRule({\n find: config.find,\n handler: ({ state, range, match }) => {\n const attributes = callOrReturn(config.getAttributes, undefined, match) || {};\n const { tr } = state;\n const start = range.from;\n let end = range.to;\n const newNode = config.type.create(attributes);\n if (match[1]) {\n const offset = match[0].lastIndexOf(match[1]);\n let matchStart = start + offset;\n if (matchStart > end) {\n matchStart = end;\n }\n else {\n end = matchStart + match[1].length;\n }\n // insert last typed character\n const lastChar = match[0][match[0].length - 1];\n tr.insertText(lastChar, start + match[0].length - 1);\n // insert node from input rule\n tr.replaceWith(matchStart, end, newNode);\n }\n else if (match[0]) {\n const insertionStart = config.type.isInline ? start : start - 1;\n tr.insert(insertionStart, config.type.create(attributes)).delete(tr.mapping.map(start), tr.mapping.map(end));\n }\n tr.scrollIntoView();\n },\n });\n}\n\n/**\n * Build an input rule that changes the type of a textblock when the\n * matched text is typed into it. When using a regular expresion you’ll\n * probably want the regexp to start with `^`, so that the pattern can\n * only occur at the start of a textblock.\n * @see https://tiptap.dev/guide/custom-extensions/#input-rules\n */\nfunction textblockTypeInputRule(config) {\n return new InputRule({\n find: config.find,\n handler: ({ state, range, match }) => {\n const $start = state.doc.resolve(range.from);\n const attributes = callOrReturn(config.getAttributes, undefined, match) || {};\n if (!$start.node(-1).canReplaceWith($start.index(-1), $start.indexAfter(-1), config.type)) {\n return null;\n }\n state.tr\n .delete(range.from, range.to)\n .setBlockType(range.from, range.from, config.type, attributes);\n },\n });\n}\n\n/**\n * Build an input rule that replaces text when the\n * matched text is typed into it.\n * @see https://tiptap.dev/guide/custom-extensions/#input-rules\n */\nfunction textInputRule(config) {\n return new InputRule({\n find: config.find,\n handler: ({ state, range, match }) => {\n let insert = config.replace;\n let start = range.from;\n const end = range.to;\n if (match[1]) {\n const offset = match[0].lastIndexOf(match[1]);\n insert += match[0].slice(offset + match[1].length);\n start += offset;\n const cutOff = start - end;\n if (cutOff > 0) {\n insert = match[0].slice(offset - cutOff, offset) + insert;\n start = end;\n }\n }\n state.tr.insertText(insert, start, end);\n },\n });\n}\n\n/**\n * Build an input rule for automatically wrapping a textblock when a\n * given string is typed. When using a regular expresion you’ll\n * probably want the regexp to start with `^`, so that the pattern can\n * only occur at the start of a textblock.\n *\n * `type` is the type of node to wrap in.\n *\n * By default, if there’s a node with the same type above the newly\n * wrapped node, the rule will try to join those\n * two nodes. You can pass a join predicate, which takes a regular\n * expression match and the node before the wrapped node, and can\n * return a boolean to indicate whether a join should happen.\n * @see https://tiptap.dev/guide/custom-extensions/#input-rules\n */\nfunction wrappingInputRule(config) {\n return new InputRule({\n find: config.find,\n handler: ({ state, range, match, chain, }) => {\n const attributes = callOrReturn(config.getAttributes, undefined, match) || {};\n const tr = state.tr.delete(range.from, range.to);\n const $start = tr.doc.resolve(range.from);\n const blockRange = $start.blockRange();\n const wrapping = blockRange && findWrapping(blockRange, config.type, attributes);\n if (!wrapping) {\n return null;\n }\n tr.wrap(blockRange, wrapping);\n if (config.keepMarks && config.editor) {\n const { selection, storedMarks } = state;\n const { splittableMarks } = config.editor.extensionManager;\n const marks = storedMarks || (selection.$to.parentOffset && selection.$from.marks());\n if (marks) {\n const filteredMarks = marks.filter(mark => splittableMarks.includes(mark.type.name));\n tr.ensureMarks(filteredMarks);\n }\n }\n if (config.keepAttributes) {\n /** If the nodeType is `bulletList` or `orderedList` set the `nodeType` as `listItem` */\n const nodeType = config.type.name === 'bulletList' || config.type.name === 'orderedList' ? 'listItem' : 'taskList';\n chain().updateAttributes(nodeType, attributes).run();\n }\n const before = tr.doc.resolve(range.from - 1).nodeBefore;\n if (before\n && before.type === config.type\n && canJoin(tr.doc, range.from - 1)\n && (!config.joinPredicate || config.joinPredicate(match, before))) {\n tr.join(range.from - 1);\n }\n },\n });\n}\n\n/**\n * The Node class is used to create custom node extensions.\n * @see https://tiptap.dev/api/extensions#create-a-new-extension\n */\nclass Node {\n constructor(config = {}) {\n this.type = 'node';\n this.name = 'node';\n this.parent = null;\n this.child = null;\n this.config = {\n name: this.name,\n defaultOptions: {},\n };\n this.config = {\n ...this.config,\n ...config,\n };\n this.name = this.config.name;\n if (config.defaultOptions && Object.keys(config.defaultOptions).length > 0) {\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${this.name}\".`);\n }\n // TODO: remove `addOptions` fallback\n this.options = this.config.defaultOptions;\n if (this.config.addOptions) {\n this.options = callOrReturn(getExtensionField(this, 'addOptions', {\n name: this.name,\n }));\n }\n this.storage = callOrReturn(getExtensionField(this, 'addStorage', {\n name: this.name,\n options: this.options,\n })) || {};\n }\n static create(config = {}) {\n return new Node(config);\n }\n configure(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 ...this.config,\n addOptions: () => {\n return mergeDeep(this.options, options);\n },\n });\n // Always preserve the current name\n extension.name = this.name;\n // Set the parent to be our parent\n extension.parent = this.parent;\n return extension;\n }\n extend(extendedConfig = {}) {\n const extension = new Node(extendedConfig);\n extension.parent = this;\n this.child = extension;\n extension.name = extendedConfig.name ? extendedConfig.name : extension.parent.name;\n if (extendedConfig.defaultOptions && Object.keys(extendedConfig.defaultOptions).length > 0) {\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${extension.name}\".`);\n }\n extension.options = callOrReturn(getExtensionField(extension, 'addOptions', {\n name: extension.name,\n }));\n extension.storage = callOrReturn(getExtensionField(extension, 'addStorage', {\n name: extension.name,\n options: extension.options,\n }));\n return extension;\n }\n}\n\nfunction isAndroid() {\n return navigator.platform === 'Android' || /android/i.test(navigator.userAgent);\n}\n\n/**\n * Node views are used to customize the rendered DOM structure of a node.\n * @see https://tiptap.dev/guide/node-views\n */\nclass NodeView {\n constructor(component, props, options) {\n this.isDragging = false;\n this.component = component;\n this.editor = props.editor;\n this.options = {\n stopEvent: null,\n ignoreMutation: null,\n ...options,\n };\n this.extension = props.extension;\n this.node = props.node;\n this.decorations = props.decorations;\n this.innerDecorations = props.innerDecorations;\n this.view = props.view;\n this.HTMLAttributes = props.HTMLAttributes;\n this.getPos = props.getPos;\n this.mount();\n }\n mount() {\n // eslint-disable-next-line\n return;\n }\n get dom() {\n return this.editor.view.dom;\n }\n get contentDOM() {\n return null;\n }\n onDragStart(event) {\n var _a, _b, _c, _d, _e, _f, _g;\n const { view } = this.editor;\n const target = event.target;\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 ? (_a = target.parentElement) === null || _a === void 0 ? void 0 : _a.closest('[data-drag-handle]')\n : target.closest('[data-drag-handle]');\n if (!this.dom || ((_b = this.contentDOM) === null || _b === void 0 ? void 0 : _b.contains(target)) || !dragHandle) {\n return;\n }\n let x = 0;\n let y = 0;\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 // In React, we have to go through nativeEvent to reach offsetX/offsetY.\n const offsetX = (_c = event.offsetX) !== null && _c !== void 0 ? _c : (_d = event.nativeEvent) === null || _d === void 0 ? void 0 : _d.offsetX;\n const offsetY = (_e = event.offsetY) !== null && _e !== void 0 ? _e : (_f = event.nativeEvent) === null || _f === void 0 ? void 0 : _f.offsetY;\n x = handleBox.x - domBox.x + offsetX;\n y = handleBox.y - domBox.y + offsetY;\n }\n (_g = event.dataTransfer) === null || _g === void 0 ? void 0 : _g.setDragImage(this.dom, x, y);\n const pos = this.getPos();\n if (typeof pos !== 'number') {\n return;\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, pos);\n const transaction = view.state.tr.setSelection(selection);\n view.dispatch(transaction);\n }\n stopEvent(event) {\n var _a;\n if (!this.dom) {\n return false;\n }\n if (typeof this.options.stopEvent === 'function') {\n return this.options.stopEvent({ event });\n }\n const target = event.target;\n const isInElement = this.dom.contains(target) && !((_a = this.contentDOM) === null || _a === void 0 ? void 0 : _a.contains(target));\n // any event from child nodes should be handled by ProseMirror\n if (!isInElement) {\n return false;\n }\n const isDragEvent = event.type.startsWith('drag');\n const isDropEvent = event.type === 'drop';\n const isInput = ['INPUT', 'BUTTON', 'SELECT', 'TEXTAREA'].includes(target.tagName) || target.isContentEditable;\n // any input event within node views should be ignored by ProseMirror\n if (isInput && !isDropEvent && !isDragEvent) {\n return true;\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 // 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 if (isDraggable && isDragEvent && !isDragging) {\n event.preventDefault();\n return false;\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 && (this.dom === dragHandle || this.dom.contains(dragHandle));\n if (isValidDragHandle) {\n this.isDragging = true;\n document.addEventListener('dragend', () => {\n this.isDragging = false;\n }, { once: true });\n document.addEventListener('drop', () => {\n this.isDragging = false;\n }, { once: true });\n document.addEventListener('mouseup', () => {\n this.isDragging = false;\n }, { once: true });\n }\n }\n // these events are handled by prosemirror\n if (isDragging\n || isDropEvent\n || isCopyEvent\n || isPasteEvent\n || isCutEvent\n || (isClickEvent && isSelectable)) {\n return false;\n }\n return true;\n }\n /**\n * Called when a DOM [mutation](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver) or a selection change happens within the view.\n * @return `false` if the editor should re-read the selection or re-parse the range around the mutation\n * @return `true` if it can safely be ignored.\n */\n ignoreMutation(mutation) {\n if (!this.dom || !this.contentDOM) {\n return true;\n }\n if (typeof this.options.ignoreMutation === 'function') {\n return this.options.ignoreMutation({ mutation });\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 // ProseMirror should handle any selections\n if (mutation.type === 'selection') {\n return false;\n }\n // try to prevent a bug on iOS and Android 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 // see: https://github.com/ueberdosis/tiptap/issues/2534\n if (this.dom.contains(mutation.target)\n && mutation.type === 'childList'\n && (isiOS() || isAndroid())\n && this.editor.isFocused) {\n const changedNodes = [\n ...Array.from(mutation.addedNodes),\n ...Array.from(mutation.removedNodes),\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 // 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 // ProseMirror should handle any changes within contentDOM\n if (this.contentDOM.contains(mutation.target)) {\n return false;\n }\n return true;\n }\n /**\n * Update the attributes of the prosemirror node.\n */\n updateAttributes(attributes) {\n this.editor.commands.command(({ tr }) => {\n const pos = this.getPos();\n if (typeof pos !== 'number') {\n return false;\n }\n tr.setNodeMarkup(pos, undefined, {\n ...this.node.attrs,\n ...attributes,\n });\n return true;\n });\n }\n /**\n * Delete the node.\n */\n deleteNode() {\n const from = this.getPos();\n if (typeof from !== 'number') {\n return;\n }\n const to = from + this.node.nodeSize;\n this.editor.commands.deleteRange({ from, to });\n }\n}\n\n/**\n * Build an paste rule that adds a mark when the\n * matched text is pasted into it.\n * @see https://tiptap.dev/guide/custom-extensions/#paste-rules\n */\nfunction markPasteRule(config) {\n return new PasteRule({\n find: config.find,\n handler: ({ state, range, match, pasteEvent, }) => {\n const attributes = callOrReturn(config.getAttributes, undefined, match, pasteEvent);\n if (attributes === false || attributes === null) {\n return null;\n }\n const { tr } = state;\n const captureGroup = match[match.length - 1];\n const fullMatch = match[0];\n let markEnd = range.to;\n if (captureGroup) {\n const startSpaces = fullMatch.search(/\\S/);\n const textStart = range.from + fullMatch.indexOf(captureGroup);\n const textEnd = textStart + captureGroup.length;\n const excludedMarks = getMarksBetween(range.from, range.to, state.doc)\n .filter(item => {\n // @ts-ignore\n const excluded = item.mark.type.excluded;\n return excluded.find(type => type === config.type && type !== item.mark.type);\n })\n .filter(item => item.to > textStart);\n if (excludedMarks.length) {\n return null;\n }\n if (textEnd < range.to) {\n tr.delete(textEnd, range.to);\n }\n if (textStart > range.from) {\n tr.delete(range.from + startSpaces, textStart);\n }\n markEnd = range.from + startSpaces + captureGroup.length;\n tr.addMark(range.from + startSpaces, markEnd, config.type.create(attributes || {}));\n tr.removeStoredMark(config.type);\n }\n },\n });\n}\n\n// source: https://stackoverflow.com/a/6969486\nfunction escapeForRegEx(string) {\n return string.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nfunction isString(value) {\n return typeof value === 'string';\n}\n\n/**\n * Build an paste rule that adds a node when the\n * matched text is pasted into it.\n * @see https://tiptap.dev/guide/custom-extensions/#paste-rules\n */\nfunction nodePasteRule(config) {\n return new PasteRule({\n find: config.find,\n handler({ match, chain, range, pasteEvent, }) {\n const attributes = callOrReturn(config.getAttributes, undefined, match, pasteEvent);\n const content = callOrReturn(config.getContent, undefined, attributes);\n if (attributes === false || attributes === null) {\n return null;\n }\n const node = { type: config.type.name, attrs: attributes };\n if (content) {\n node.content = content;\n }\n if (match.input) {\n chain().deleteRange(range).insertContentAt(range.from, node);\n }\n },\n });\n}\n\n/**\n * Build an paste rule that replaces text when the\n * matched text is pasted into it.\n * @see https://tiptap.dev/guide/custom-extensions/#paste-rules\n */\nfunction textPasteRule(config) {\n return new PasteRule({\n find: config.find,\n handler: ({ state, range, match }) => {\n let insert = config.replace;\n let start = range.from;\n const end = range.to;\n if (match[1]) {\n const offset = match[0].lastIndexOf(match[1]);\n insert += match[0].slice(offset + match[1].length);\n start += offset;\n const cutOff = start - end;\n if (cutOff > 0) {\n insert = match[0].slice(offset - cutOff, offset) + insert;\n start = end;\n }\n }\n state.tr.insertText(insert, start, end);\n },\n });\n}\n\nclass Tracker {\n constructor(transaction) {\n this.transaction = transaction;\n this.currentStep = this.transaction.steps.length;\n }\n map(position) {\n let deleted = false;\n const mappedPosition = this.transaction.steps\n .slice(this.currentStep)\n .reduce((newPosition, step) => {\n const mapResult = step.getMap().mapResult(newPosition);\n if (mapResult.deleted) {\n deleted = true;\n }\n return mapResult.pos;\n }, position);\n return {\n position: mappedPosition,\n deleted,\n };\n }\n}\n\nexport { CommandManager, Editor, Extension, InputRule, Mark, Node, NodePos, NodeView, PasteRule, Tracker, callOrReturn, combineTransactionSteps, createChainableState, createDocument, createNodeFromContent, createStyleTag, defaultBlockAt, deleteProps, elementFromString, escapeForRegEx, index as extensions, findChildren, findChildrenInRange, findDuplicates, findParentNode, findParentNodeClosestToPos, fromString, generateHTML, generateJSON, generateText, getAttributes, getAttributesFromExtensions, getChangedRanges, getDebugJSON, getExtensionField, getHTMLFromFragment, getMarkAttributes, getMarkRange, getMarkType, getMarksBetween, getNodeAtPosition, getNodeAttributes, getNodeType, getRenderedAttributes, getSchema, getSchemaByResolvedExtensions, getSchemaTypeByName, getSchemaTypeNameByName, getSplittedAttributes, getText, getTextBetween, getTextContentFromNodes, getTextSerializersFromSchema, injectExtensionAttributesToParseRule, inputRulesPlugin, isActive, isAtEndOfNode, isAtStartOfNode, isEmptyObject, isExtensionRulesEnabled, isFunction, isList, isMacOS, isMarkActive, isNodeActive, isNodeEmpty, isNodeSelection, isNumber, isPlainObject, isRegExp, isString, isTextSelection, isiOS, markInputRule, markPasteRule, mergeAttributes, mergeDeep, minMax, nodeInputRule, nodePasteRule, objectIncludes, pasteRulesPlugin, posToDOMRect, removeDuplicates, resolveFocusPosition, selectionToInsertionEnd, splitExtensions, textInputRule, textPasteRule, textblockTypeInputRule, wrappingInputRule };\n//# sourceMappingURL=index.js.map\n"],"names":["createChainableState","config","state","transaction","selection","doc","storedMarks","apply","bind","applyTransaction","plugins","schema","reconfigure","toJSON","tr","CommandManager","constructor","props","editor","rawCommands","extensionManager","commands","customState","hasCustomState","view","buildProps","Object","fromEntries","entries","map","name","command","args","callback","getMeta","dispatch","chain","createChain","can","createCan","startTr","shouldDispatch","callbacks","hasStartTransaction","push","run","every","undefined","EventEmitter","on","event","fn","emit","forEach","off","filter","removeAllListeners","getExtensionField","extension","field","context","parent","splitExtensions","extensions","baseExtensions","type","nodeExtensions","markExtensions","getAttributesFromExtensions","extensionAttributes","nodeAndMarkExtensions","defaultAttribute","default","rendered","renderHTML","parseHTML","keepOnSplit","isRequired","options","storage","addGlobalAttributes","globalAttributes","globalAttribute","types","attributes","attribute","addAttributes","mergedAttr","getNodeType","nameOrType","nodes","Error","mergeAttributes","objects","item","reduce","items","mergedAttributes","key","value","valueClasses","split","existingClasses","insertClasses","valueClass","includes","join","newStyles","style","trim","Boolean","existingStyles","styleMap","Map","property","val","part","set","Array","from","getRenderedAttributes","nodeOrMark","attrs","isFunction","callOrReturn","injectExtensionAttributesToParseRule","parseRule","getAttrs","oldAttributes","node","newAttributes","getAttribute","match","Number","cleanUpSchemaItem","data","isEmptyObject","keys","length","getSchemaTypeByName","marks","isExtensionRulesEnabled","enabled","isArray","some","enabledExtension","getTextContentFromNodes","$from","maxMatch","textBefore","sliceEndPos","parentOffset","nodesBetween","Math","max","pos","index","_a","_b","chunk","spec","toText","call","textContent","isAtom","isText","slice","isRegExp","prototype","toString","InputRule","find","handler","inputRuleMatcherHandler","text","exec","inputRuleMatch","result","input","replaceWith","console","warn","run$1","to","rules","plugin","composing","resolve","code","nodeBefore","nodeAfter","mark","matched","rule","range","steps","setMeta","transform","isPlainObject","getPrototypeOf","mergeDeep","target","source","output","Mark","child","defaultOptions","addOptions","create","configure","extend","extendedConfig","handleExit","currentPos","end","currentMarks","m","removeMark","removeStoredMark","insertText","PasteRule","pasteRuleMatcherHandler","matchAll","matches","pasteRuleMatch","createClipboardPasteEvent","ClipboardEvent","clipboardData","DataTransfer","setData","ExtensionManager","splittableMarks","getSchemaByResolvedExtensions","allAttributes","topNode","fields","e","extendNodeSchema","content","group","inline","atom","selectable","draggable","whitespace","defining","isolating","extensionAttribute","parseDOM","toDOM","HTMLAttributes","renderText","extendMarkSchema","inclusive","excludes","spanning","_tiptap_pm_model__WEBPACK_IMPORTED_MODULE_0__","V_","setupExtensions","resolvedExtensions","sort","flatten","duplicatedNames","Set","el","indexOf","addExtensions","flat","a","b","priorityA","priorityB","addCommands","reverse","inputRules","pasteRules","allPlugins","addKeyboardShortcuts","defaultBindings","ArrowRight","bindings","shortcut","method","keyMapPlugin","_tiptap_pm_keymap__WEBPACK_IMPORTED_MODULE_2__","h","addInputRules","enableInputRules","addPasteRules","enablePasteRules","addProseMirrorPlugins","proseMirrorPlugins","inputRulesPlugin","_tiptap_pm_state__WEBPACK_IMPORTED_MODULE_1__","Sy","init","prev","stored","simulatedInputMeta","setTimeout","selectionSet","docChanged","handleTextInput","handleDOMEvents","compositionend","$cursor","handleKeyDown","isInputRules","pasteRulesPlugin","dragSourceElement","isPastedFromProseMirror","isDroppedFromProseMirror","pasteEvent","dropEvent","DragEvent","processEvent","pasteEvt","handlers","isTextblock","resolvedFrom","resolvedTo","min","size","textBetween","start","mapping","handleDragstart","dom","parentElement","contains","window","addEventListener","destroy","removeEventListener","drop","paste","_view","html","getData","appendTransaction","transactions","oldState","isPaste","isDrop","simulatedPasteMeta","isSimulatedPaste","findDiffStart","findDiffEnd","nodeViews","addNodeView","getPos","decorations","innerDecorations","extensionStorage","onBeforeCreate","onCreate","onUpdate","onSelectionUpdate","onTransaction","onFocus","onBlur","onDestroy","Extension","getTextBetween","startNode","blockSeparator","textSerializers","isBlock","textSerializer","getTextSerializersFromSchema","ClipboardTextSerializer","H$","clipboardTextSerializer","ranges","$to","objectIncludes","object1","object2","strict","test","findMarkInSet","getMarkRange","$pos","childAfter","childBefore","startIndex","startPos","offset","endIndex","endPos","nodeSize","isInSet","childCount","isMarkInSet","getMarkType","isTextSelection","Bs","minMax","resolveFocusPosition","position","selectionAtStart","Y1","atStart","selectionAtEnd","atEnd","minPos","maxPos","isiOS","navigator","platform","userAgent","document","removeWhitespaces","children","childNodes","i","nodeType","nodeValue","removeChild","elementFromString","wrappedValue","DOMParser","parseFromString","body","createNodeFromContent","parseOptions","isJSONContent","isTextContent","HY","fromArray","nodeFromJSON","errorOnInvalidContent","check","error","cause","hasInvalidContent","invalidContent","contentCheckSchema","append","__tiptap__private__unknown__catch__all__node","tag","outerHTML","aw","fromSchema","parseSlice","parse","parser","isFragment","nodeOrFragment","isMacOS","isNodeActive","typeOrName","empty","nodeRanges","relativeFrom","relativeTo","selectionRange","matchedNodeRanges","nodeRange","sum","getSchemaTypeNameByName","deleteProps","obj","propOrProps","newObj","prop","createDocument","getMarkAttributes","$head","markItem","combineTransactionSteps","oldDoc","_tiptap_pm_transform__WEBPACK_IMPORTED_MODULE_3__","wx","step","findChildrenInRange","predicate","nodesWithPos","findParentNode","findParentNodeClosestToPos","depth","before","getAttributes","schemaType","getNodeAttributes","nodeItem","getChangedRanges","changes","maps","stepMap","newStart","newEnd","oldStart","invert","oldEnd","oldRange","newRange","simplifyChangedRanges","uniqueChanges","removeDuplicates","array","by","JSON","stringify","seen","hasOwnProperty","change","rest","_","otherChange","getMarksBetween","getSplittedAttributes","typeName","isMarkActive","markRanges","matchedRange","markRange","excludedRange","isList","isNodeEmpty","checkChildren","ignoreWhitespace","isLeaf","isContentEmpty","childNode","isNodeSelection","qv","ensureMarks","filteredMarks","joinListBackwards","listType","list","nodeAt","Mn","joinListForwards","after","freeze","__proto__","blur","requestAnimationFrame","isDestroyed","getSelection","removeAllRanges","clearContent","emitUpdate","setContent","clearNodes","$mappedFrom","$mappedTo","blockRange","targetLiftDepth","k9","defaultType","contentMatchAt","setNodeMarkup","lift","createParagraphNear","_tiptap_pm_commands__WEBPACK_IMPORTED_MODULE_4__","mD","cut","originRange","targetPos","contentSlice","deleteRange","newPos","insert","setSelection","deleteCurrentNode","currentNode","$anchor","delete","scrollIntoView","deleteNode","deleteSelection","NE","enter","keyboardShortcut","exitCode","uo","extendMarkRange","newSelection","first","focus","delayedFocus","hasFocus","isSameSelection","eq","setStoredMarks","insertContent","insertContentAt","newContent","updateSelection","applyInputRules","applyPasteRules","preserveWhitespace","enableContentCheck","disableCollaboration","collaboration","isDisabled","isOnlyTextContent","isOnlyBlockContent","v","selectionToInsertionEnd","startLen","bias","last","Pu","FC","_from","_to","_newFrom","newTo","near","joinBackward","al","joinDown","Ig","joinForward","Y_","joinItemBackward","point","GJ","joinItemForward","joinTextblockBackward","rr","joinTextblockForward","cR","joinUp","MI","normalizeKeyName","alt","ctrl","shift","meta","parts","mod","KeyboardEvent","altKey","ctrlKey","metaKey","shiftKey","bubbles","cancelable","capturedTransaction","captureTransaction","someProp","f","newStep","maybeStep","xb","liftEmptyBlock","X0","liftListItem","_tiptap_pm_schema_list__WEBPACK_IMPORTED_MODULE_5__","IB","newlineInCode","QK","resetAttributes","markType","addMark","selectAll","setTextSelection","selectNodeBackward","_M","selectNodeForward","o","selectParentNode","N0","selectTextblockEnd","nw","selectTextblockStart","U9","setMark","addStoredMark","trimmedFrom","trimmedTo","canSetMark","newMarkType","cursor","someNodeSupportsMark","inlineContent","allowsMarkType","_pos","isInline","parentAllowsMarkType","currentMarksAllowMarkType","otherMark","setNode","uJ","updatedState","setNodeSelection","resolvedEnd","sinkListItem","bw","splitBlock","keepMarks","Ax","deflt","defaultBlockAt","edgeCount","edge","hasRequiredAttrs","indexAfter","$first","canReplaceWith","splitListItem","overrideAttrs","sameParent","grandParent","wrap","depthBefore","d","copy","depthAfter","newNextTypeAttributes","nextType","contentMatch","createAndFill","replace","p2","sel","n","newTypeAttributes","toggleList","listTypeOrName","itemTypeOrName","itemType","parentList","validContent","canWrapInList","wrapInList","toggleMark","extendEmptyMarkRange","unsetMark","toggleNode","toggleTypeOrName","attributesToCopy","toggleType","isActive","toggleWrap","wrapIn","undoInputRule","undoable","getState","toUndo","j","docs","unsetAllMarks","updateAttributes","ym","KI","Commands","Drop","handleDrop","moved","Editable","editable","FocusEvents","isFocused","Keymap","handleBackspace","$parentPos","parentIsIsolating","parentPos","isAtStart","handleDelete","baseKeymap","Enter","Backspace","Delete","pcKeymap","macKeymap","newState","docChanges","ignoreTr","allFrom","allEnd","Paste","handlePaste","Tabindex","isEditable","tabindex","NodePos","actualDepth","resolvedPos","element","domAtPos","isNonTextAtom","childNodePos","firstChild","lastChild","closest","selector","nodeAttributes","attrKeys","querySelector","querySelectorAll","firstItemOnly","childPos","concat","setAttribute","Editor","isInitialized","createElement","injectCSS","injectNonce","autofocus","editorProps","coreExtensionOptions","enableCoreExtensions","onContentError","onPaste","onDrop","isCapturingTransaction","setOptions","createExtensionManager","createCommandManager","createSchema","createView","commandManager","css","createStyleTag","nonce","suffix","tiptapStyleTag","styleNode","innerHTML","getElementsByTagName","appendChild","setProps","updateState","setEditable","registerPlugin","handlePlugins","unregisterPlugin","nameOrPluginKeyToRemove","prevPlugins","nameOrPluginKey","startsWith","allExtensions","ext","message","_tiptap_pm_view__WEBPACK_IMPORTED_MODULE_6__","tk","dispatchTransaction","yy","createNodeViews","prependClass","className","selectionHasChanged","nextState","nameOrAttributes","attributesOrUndefined","getJSON","getHTML","getHTMLFromFragment","fragment","documentFragment","PW","serializeFragment","container","temporaryDocument","implementation","createHTMLDocument","getText","isEmpty","getCharacterCount","docView","$node","$doc","$nodes","markInputRule","captureGroup","fullMatch","startSpaces","search","textStart","textEnd","excludedMarks","excluded","markEnd","nodeInputRule","newNode","matchStart","lastIndexOf","lastChar","insertionStart","textblockTypeInputRule","$start","setBlockType","wrappingInputRule","wrapping","nd","keepAttributes","joinPredicate","Node","NodeView","component","isDragging","stopEvent","ignoreMutation","mount","contentDOM","onDragStart","_c","_d","_e","_f","_g","dragHandle","x","y","domBox","getBoundingClientRect","handleBox","offsetX","nativeEvent","offsetY","dataTransfer","setDragImage","isDragEvent","isDropEvent","isInput","tagName","isContentEditable","isDraggable","isSelectable","isCopyEvent","isPasteEvent","isCutEvent","isClickEvent","preventDefault","once","mutation","changedNodes","addedNodes","removedNodes","markPasteRule"],"sourceRoot":""}