{"version":3,"file":"static/chunks/b6cd6fe3-5ca0d2e90cb7f687.js","mappings":"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","sources":["webpack://_N_E/../../node_modules/@tiptap/core/dist/index.cjs"],"sourcesContent":["'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar state = require('@tiptap/pm/state');\nvar view = require('@tiptap/pm/view');\nvar keymap = require('@tiptap/pm/keymap');\nvar model = require('@tiptap/pm/model');\nvar transform = require('@tiptap/pm/transform');\nvar commands$1 = require('@tiptap/pm/commands');\nvar schemaList = require('@tiptap/pm/schema-list');\n\nfunction createChainableState(config) {\r\n const { state, transaction } = config;\r\n let { selection } = transaction;\r\n let { doc } = transaction;\r\n let { storedMarks } = transaction;\r\n return {\r\n ...state,\r\n apply: state.apply.bind(state),\r\n applyTransaction: state.applyTransaction.bind(state),\r\n filterTransaction: state.filterTransaction,\r\n plugins: state.plugins,\r\n schema: state.schema,\r\n reconfigure: state.reconfigure.bind(state),\r\n toJSON: state.toJSON.bind(state),\r\n get storedMarks() {\r\n return storedMarks;\r\n },\r\n get selection() {\r\n return selection;\r\n },\r\n get doc() {\r\n return doc;\r\n },\r\n get tr() {\r\n selection = transaction.selection;\r\n doc = transaction.doc;\r\n storedMarks = transaction.storedMarks;\r\n return transaction;\r\n },\r\n };\r\n}\n\nclass CommandManager {\r\n constructor(props) {\r\n this.editor = props.editor;\r\n this.rawCommands = this.editor.extensionManager.commands;\r\n this.customState = props.state;\r\n }\r\n get hasCustomState() {\r\n return !!this.customState;\r\n }\r\n get state() {\r\n return this.customState || this.editor.state;\r\n }\r\n get commands() {\r\n const { rawCommands, editor, state } = this;\r\n const { view } = editor;\r\n const { tr } = state;\r\n const props = this.buildProps(tr);\r\n return Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => {\r\n const method = (...args) => {\r\n const callback = command(...args)(props);\r\n if (!tr.getMeta('preventDispatch') && !this.hasCustomState) {\r\n view.dispatch(tr);\r\n }\r\n return callback;\r\n };\r\n return [name, method];\r\n }));\r\n }\r\n get chain() {\r\n return () => this.createChain();\r\n }\r\n get can() {\r\n return () => this.createCan();\r\n }\r\n createChain(startTr, shouldDispatch = true) {\r\n const { rawCommands, editor, state } = this;\r\n const { view } = editor;\r\n const callbacks = [];\r\n const hasStartTransaction = !!startTr;\r\n const tr = startTr || state.tr;\r\n const run = () => {\r\n if (!hasStartTransaction\r\n && shouldDispatch\r\n && !tr.getMeta('preventDispatch')\r\n && !this.hasCustomState) {\r\n view.dispatch(tr);\r\n }\r\n return callbacks.every(callback => callback === true);\r\n };\r\n const chain = {\r\n ...Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => {\r\n const chainedCommand = (...args) => {\r\n const props = this.buildProps(tr, shouldDispatch);\r\n const callback = command(...args)(props);\r\n callbacks.push(callback);\r\n return chain;\r\n };\r\n return [name, chainedCommand];\r\n })),\r\n run,\r\n };\r\n return chain;\r\n }\r\n createCan(startTr) {\r\n const { rawCommands, state } = this;\r\n const dispatch = false;\r\n const tr = startTr || state.tr;\r\n const props = this.buildProps(tr, dispatch);\r\n const formattedCommands = Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => {\r\n return [name, (...args) => command(...args)({ ...props, dispatch: undefined })];\r\n }));\r\n return {\r\n ...formattedCommands,\r\n chain: () => this.createChain(tr, dispatch),\r\n };\r\n }\r\n buildProps(tr, shouldDispatch = true) {\r\n const { rawCommands, editor, state } = this;\r\n const { view } = editor;\r\n const props = {\r\n tr,\r\n editor,\r\n view,\r\n state: createChainableState({\r\n state,\r\n transaction: tr,\r\n }),\r\n dispatch: shouldDispatch ? () => undefined : undefined,\r\n chain: () => this.createChain(tr, shouldDispatch),\r\n can: () => this.createCan(tr),\r\n get commands() {\r\n return Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => {\r\n return [name, (...args) => command(...args)(props)];\r\n }));\r\n },\r\n };\r\n return props;\r\n }\r\n}\n\nclass EventEmitter {\r\n constructor() {\r\n this.callbacks = {};\r\n }\r\n on(event, fn) {\r\n if (!this.callbacks[event]) {\r\n this.callbacks[event] = [];\r\n }\r\n this.callbacks[event].push(fn);\r\n return this;\r\n }\r\n emit(event, ...args) {\r\n const callbacks = this.callbacks[event];\r\n if (callbacks) {\r\n callbacks.forEach(callback => callback.apply(this, args));\r\n }\r\n return this;\r\n }\r\n off(event, fn) {\r\n const callbacks = this.callbacks[event];\r\n if (callbacks) {\r\n if (fn) {\r\n this.callbacks[event] = callbacks.filter(callback => callback !== fn);\r\n }\r\n else {\r\n delete this.callbacks[event];\r\n }\r\n }\r\n return this;\r\n }\r\n removeAllListeners() {\r\n this.callbacks = {};\r\n }\r\n}\n\nfunction getExtensionField(extension, field, context) {\r\n if (extension.config[field] === undefined && extension.parent) {\r\n return getExtensionField(extension.parent, field, context);\r\n }\r\n if (typeof extension.config[field] === 'function') {\r\n const value = extension.config[field].bind({\r\n ...context,\r\n parent: extension.parent\r\n ? getExtensionField(extension.parent, field, context)\r\n : null,\r\n });\r\n return value;\r\n }\r\n return extension.config[field];\r\n}\n\nfunction splitExtensions(extensions) {\r\n const baseExtensions = extensions.filter(extension => extension.type === 'extension');\r\n const nodeExtensions = extensions.filter(extension => extension.type === 'node');\r\n const markExtensions = extensions.filter(extension => extension.type === 'mark');\r\n return {\r\n baseExtensions,\r\n nodeExtensions,\r\n markExtensions,\r\n };\r\n}\n\n/**\r\n * Get a list of all extension attributes defined in `addAttribute` and `addGlobalAttribute`.\r\n * @param extensions List of extensions\r\n */\r\nfunction getAttributesFromExtensions(extensions) {\r\n const extensionAttributes = [];\r\n const { nodeExtensions, markExtensions } = splitExtensions(extensions);\r\n const nodeAndMarkExtensions = [...nodeExtensions, ...markExtensions];\r\n const defaultAttribute = {\r\n default: null,\r\n rendered: true,\r\n renderHTML: null,\r\n parseHTML: null,\r\n keepOnSplit: true,\r\n isRequired: false,\r\n };\r\n extensions.forEach(extension => {\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n };\r\n const addGlobalAttributes = getExtensionField(extension, 'addGlobalAttributes', context);\r\n if (!addGlobalAttributes) {\r\n return;\r\n }\r\n // TODO: remove `as GlobalAttributes`\r\n const globalAttributes = addGlobalAttributes();\r\n globalAttributes.forEach(globalAttribute => {\r\n globalAttribute.types.forEach(type => {\r\n Object\r\n .entries(globalAttribute.attributes)\r\n .forEach(([name, attribute]) => {\r\n extensionAttributes.push({\r\n type,\r\n name,\r\n attribute: {\r\n ...defaultAttribute,\r\n ...attribute,\r\n },\r\n });\r\n });\r\n });\r\n });\r\n });\r\n nodeAndMarkExtensions.forEach(extension => {\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n };\r\n const addAttributes = getExtensionField(extension, 'addAttributes', context);\r\n if (!addAttributes) {\r\n return;\r\n }\r\n // TODO: remove `as Attributes`\r\n const attributes = addAttributes();\r\n Object\r\n .entries(attributes)\r\n .forEach(([name, attribute]) => {\r\n const mergedAttr = {\r\n ...defaultAttribute,\r\n ...attribute,\r\n };\r\n if (typeof (mergedAttr === null || mergedAttr === void 0 ? void 0 : mergedAttr.default) === 'function') {\r\n mergedAttr.default = mergedAttr.default();\r\n }\r\n if ((mergedAttr === null || mergedAttr === void 0 ? void 0 : mergedAttr.isRequired) && (mergedAttr === null || mergedAttr === void 0 ? void 0 : mergedAttr.default) === undefined) {\r\n delete mergedAttr.default;\r\n }\r\n extensionAttributes.push({\r\n type: extension.name,\r\n name,\r\n attribute: mergedAttr,\r\n });\r\n });\r\n });\r\n return extensionAttributes;\r\n}\n\nfunction getNodeType(nameOrType, schema) {\r\n if (typeof nameOrType === 'string') {\r\n if (!schema.nodes[nameOrType]) {\r\n throw Error(`There is no node type named '${nameOrType}'. Maybe you forgot to add the extension?`);\r\n }\r\n return schema.nodes[nameOrType];\r\n }\r\n return nameOrType;\r\n}\n\nfunction mergeAttributes(...objects) {\r\n return objects\r\n .filter(item => !!item)\r\n .reduce((items, item) => {\r\n const mergedAttributes = { ...items };\r\n Object.entries(item).forEach(([key, value]) => {\r\n const exists = mergedAttributes[key];\r\n if (!exists) {\r\n mergedAttributes[key] = value;\r\n return;\r\n }\r\n if (key === 'class') {\r\n const valueClasses = value ? value.split(' ') : [];\r\n const existingClasses = mergedAttributes[key] ? mergedAttributes[key].split(' ') : [];\r\n const insertClasses = valueClasses.filter(valueClass => !existingClasses.includes(valueClass));\r\n mergedAttributes[key] = [...existingClasses, ...insertClasses].join(' ');\r\n }\r\n else if (key === 'style') {\r\n mergedAttributes[key] = [mergedAttributes[key], value].join('; ');\r\n }\r\n else {\r\n mergedAttributes[key] = value;\r\n }\r\n });\r\n return mergedAttributes;\r\n }, {});\r\n}\n\nfunction getRenderedAttributes(nodeOrMark, extensionAttributes) {\r\n return extensionAttributes\r\n .filter(item => item.attribute.rendered)\r\n .map(item => {\r\n if (!item.attribute.renderHTML) {\r\n return {\r\n [item.name]: nodeOrMark.attrs[item.name],\r\n };\r\n }\r\n return item.attribute.renderHTML(nodeOrMark.attrs) || {};\r\n })\r\n .reduce((attributes, attribute) => mergeAttributes(attributes, attribute), {});\r\n}\n\nfunction isFunction(value) {\r\n return typeof value === 'function';\r\n}\n\n/**\r\n * Optionally calls `value` as a function.\r\n * Otherwise it is returned directly.\r\n * @param value Function or any value.\r\n * @param context Optional context to bind to function.\r\n * @param props Optional props to pass to function.\r\n */\r\nfunction callOrReturn(value, context = undefined, ...props) {\r\n if (isFunction(value)) {\r\n if (context) {\r\n return value.bind(context)(...props);\r\n }\r\n return value(...props);\r\n }\r\n return value;\r\n}\n\nfunction isEmptyObject(value = {}) {\r\n return Object.keys(value).length === 0 && value.constructor === Object;\r\n}\n\nfunction fromString(value) {\r\n if (typeof value !== 'string') {\r\n return value;\r\n }\r\n if (value.match(/^[+-]?(?:\\d*\\.)?\\d+$/)) {\r\n return Number(value);\r\n }\r\n if (value === 'true') {\r\n return true;\r\n }\r\n if (value === 'false') {\r\n return false;\r\n }\r\n return value;\r\n}\n\n/**\r\n * This function merges extension attributes into parserule attributes (`attrs` or `getAttrs`).\r\n * Cancels when `getAttrs` returned `false`.\r\n * @param parseRule ProseMirror ParseRule\r\n * @param extensionAttributes List of attributes to inject\r\n */\r\nfunction injectExtensionAttributesToParseRule(parseRule, extensionAttributes) {\r\n if (parseRule.style) {\r\n return parseRule;\r\n }\r\n return {\r\n ...parseRule,\r\n getAttrs: node => {\r\n const oldAttributes = parseRule.getAttrs ? parseRule.getAttrs(node) : parseRule.attrs;\r\n if (oldAttributes === false) {\r\n return false;\r\n }\r\n const newAttributes = extensionAttributes.reduce((items, item) => {\r\n const value = item.attribute.parseHTML\r\n ? item.attribute.parseHTML(node)\r\n : fromString(node.getAttribute(item.name));\r\n if (value === null || value === undefined) {\r\n return items;\r\n }\r\n return {\r\n ...items,\r\n [item.name]: value,\r\n };\r\n }, {});\r\n return { ...oldAttributes, ...newAttributes };\r\n },\r\n };\r\n}\n\nfunction cleanUpSchemaItem(data) {\r\n return Object.fromEntries(\r\n // @ts-ignore\r\n Object.entries(data).filter(([key, value]) => {\r\n if (key === 'attrs' && isEmptyObject(value)) {\r\n return false;\r\n }\r\n return value !== null && value !== undefined;\r\n }));\r\n}\r\nfunction getSchemaByResolvedExtensions(extensions, editor) {\r\n var _a;\r\n const allAttributes = getAttributesFromExtensions(extensions);\r\n const { nodeExtensions, markExtensions } = splitExtensions(extensions);\r\n const topNode = (_a = nodeExtensions.find(extension => getExtensionField(extension, 'topNode'))) === null || _a === void 0 ? void 0 : _a.name;\r\n const nodes = Object.fromEntries(nodeExtensions.map(extension => {\r\n const extensionAttributes = allAttributes.filter(attribute => attribute.type === extension.name);\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n editor,\r\n };\r\n const extraNodeFields = extensions.reduce((fields, e) => {\r\n const extendNodeSchema = getExtensionField(e, 'extendNodeSchema', context);\r\n return {\r\n ...fields,\r\n ...(extendNodeSchema ? extendNodeSchema(extension) : {}),\r\n };\r\n }, {});\r\n const schema = cleanUpSchemaItem({\r\n ...extraNodeFields,\r\n content: callOrReturn(getExtensionField(extension, 'content', context)),\r\n marks: callOrReturn(getExtensionField(extension, 'marks', context)),\r\n group: callOrReturn(getExtensionField(extension, 'group', context)),\r\n inline: callOrReturn(getExtensionField(extension, 'inline', context)),\r\n atom: callOrReturn(getExtensionField(extension, 'atom', context)),\r\n selectable: callOrReturn(getExtensionField(extension, 'selectable', context)),\r\n draggable: callOrReturn(getExtensionField(extension, 'draggable', context)),\r\n code: callOrReturn(getExtensionField(extension, 'code', context)),\r\n defining: callOrReturn(getExtensionField(extension, 'defining', context)),\r\n isolating: callOrReturn(getExtensionField(extension, 'isolating', context)),\r\n attrs: Object.fromEntries(extensionAttributes.map(extensionAttribute => {\r\n var _a;\r\n return [extensionAttribute.name, { default: (_a = extensionAttribute === null || extensionAttribute === void 0 ? void 0 : extensionAttribute.attribute) === null || _a === void 0 ? void 0 : _a.default }];\r\n })),\r\n });\r\n const parseHTML = callOrReturn(getExtensionField(extension, 'parseHTML', context));\r\n if (parseHTML) {\r\n schema.parseDOM = parseHTML.map(parseRule => injectExtensionAttributesToParseRule(parseRule, extensionAttributes));\r\n }\r\n const renderHTML = getExtensionField(extension, 'renderHTML', context);\r\n if (renderHTML) {\r\n schema.toDOM = node => renderHTML({\r\n node,\r\n HTMLAttributes: getRenderedAttributes(node, extensionAttributes),\r\n });\r\n }\r\n const renderText = getExtensionField(extension, 'renderText', context);\r\n if (renderText) {\r\n schema.toText = renderText;\r\n }\r\n return [extension.name, schema];\r\n }));\r\n const marks = Object.fromEntries(markExtensions.map(extension => {\r\n const extensionAttributes = allAttributes.filter(attribute => attribute.type === extension.name);\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n editor,\r\n };\r\n const extraMarkFields = extensions.reduce((fields, e) => {\r\n const extendMarkSchema = getExtensionField(e, 'extendMarkSchema', context);\r\n return {\r\n ...fields,\r\n ...(extendMarkSchema ? extendMarkSchema(extension) : {}),\r\n };\r\n }, {});\r\n const schema = cleanUpSchemaItem({\r\n ...extraMarkFields,\r\n inclusive: callOrReturn(getExtensionField(extension, 'inclusive', context)),\r\n excludes: callOrReturn(getExtensionField(extension, 'excludes', context)),\r\n group: callOrReturn(getExtensionField(extension, 'group', context)),\r\n spanning: callOrReturn(getExtensionField(extension, 'spanning', context)),\r\n code: callOrReturn(getExtensionField(extension, 'code', context)),\r\n attrs: Object.fromEntries(extensionAttributes.map(extensionAttribute => {\r\n var _a;\r\n return [extensionAttribute.name, { default: (_a = extensionAttribute === null || extensionAttribute === void 0 ? void 0 : extensionAttribute.attribute) === null || _a === void 0 ? void 0 : _a.default }];\r\n })),\r\n });\r\n const parseHTML = callOrReturn(getExtensionField(extension, 'parseHTML', context));\r\n if (parseHTML) {\r\n schema.parseDOM = parseHTML.map(parseRule => injectExtensionAttributesToParseRule(parseRule, extensionAttributes));\r\n }\r\n const renderHTML = getExtensionField(extension, 'renderHTML', context);\r\n if (renderHTML) {\r\n schema.toDOM = mark => renderHTML({\r\n mark,\r\n HTMLAttributes: getRenderedAttributes(mark, extensionAttributes),\r\n });\r\n }\r\n return [extension.name, schema];\r\n }));\r\n return new model.Schema({\r\n topNode,\r\n nodes,\r\n marks,\r\n });\r\n}\n\nfunction getSchemaTypeByName(name, schema) {\r\n return schema.nodes[name] || schema.marks[name] || null;\r\n}\n\nfunction isExtensionRulesEnabled(extension, enabled) {\r\n if (Array.isArray(enabled)) {\r\n return enabled.some(enabledExtension => {\r\n const name = typeof enabledExtension === 'string'\r\n ? enabledExtension\r\n : enabledExtension.name;\r\n return name === extension.name;\r\n });\r\n }\r\n return enabled;\r\n}\n\nconst getTextContentFromNodes = ($from, maxMatch = 500) => {\r\n let textBefore = '';\r\n const sliceEndPos = $from.parentOffset;\r\n $from.parent.nodesBetween(Math.max(0, sliceEndPos - maxMatch), sliceEndPos, (node, pos, parent, index) => {\r\n var _a, _b;\r\n const chunk = ((_b = (_a = node.type.spec).toText) === null || _b === void 0 ? void 0 : _b.call(_a, {\r\n node,\r\n pos,\r\n parent,\r\n index,\r\n }))\r\n || node.textContent\r\n || '%leaf%';\r\n textBefore += chunk.slice(0, Math.max(0, sliceEndPos - pos));\r\n });\r\n return textBefore;\r\n};\n\nfunction isRegExp(value) {\r\n return Object.prototype.toString.call(value) === '[object RegExp]';\r\n}\n\nclass InputRule {\r\n constructor(config) {\r\n this.find = config.find;\r\n this.handler = config.handler;\r\n }\r\n}\r\nconst inputRuleMatcherHandler = (text, find) => {\r\n if (isRegExp(find)) {\r\n return find.exec(text);\r\n }\r\n const inputRuleMatch = find(text);\r\n if (!inputRuleMatch) {\r\n return null;\r\n }\r\n const result = [inputRuleMatch.text];\r\n result.index = inputRuleMatch.index;\r\n result.input = text;\r\n result.data = inputRuleMatch.data;\r\n if (inputRuleMatch.replaceWith) {\r\n if (!inputRuleMatch.text.includes(inputRuleMatch.replaceWith)) {\r\n console.warn('[tiptap warn]: \"inputRuleMatch.replaceWith\" must be part of \"inputRuleMatch.text\".');\r\n }\r\n result.push(inputRuleMatch.replaceWith);\r\n }\r\n return result;\r\n};\r\nfunction run$1(config) {\r\n var _a;\r\n const { editor, from, to, text, rules, plugin, } = config;\r\n const { view } = editor;\r\n if (view.composing) {\r\n return false;\r\n }\r\n const $from = view.state.doc.resolve(from);\r\n if (\r\n // check for code node\r\n $from.parent.type.spec.code\r\n // check for code mark\r\n || !!((_a = ($from.nodeBefore || $from.nodeAfter)) === null || _a === void 0 ? void 0 : _a.marks.find(mark => mark.type.spec.code))) {\r\n return false;\r\n }\r\n let matched = false;\r\n const textBefore = getTextContentFromNodes($from) + text;\r\n rules.forEach(rule => {\r\n if (matched) {\r\n return;\r\n }\r\n const match = inputRuleMatcherHandler(textBefore, rule.find);\r\n if (!match) {\r\n return;\r\n }\r\n const tr = view.state.tr;\r\n const state = createChainableState({\r\n state: view.state,\r\n transaction: tr,\r\n });\r\n const range = {\r\n from: from - (match[0].length - text.length),\r\n to,\r\n };\r\n const { commands, chain, can } = new CommandManager({\r\n editor,\r\n state,\r\n });\r\n const handler = rule.handler({\r\n state,\r\n range,\r\n match,\r\n commands,\r\n chain,\r\n can,\r\n });\r\n // stop if there are no changes\r\n if (handler === null || !tr.steps.length) {\r\n return;\r\n }\r\n // store transform as meta data\r\n // so we can undo input rules within the `undoInputRules` command\r\n tr.setMeta(plugin, {\r\n transform: tr,\r\n from,\r\n to,\r\n text,\r\n });\r\n view.dispatch(tr);\r\n matched = true;\r\n });\r\n return matched;\r\n}\r\n/**\r\n * Create an input rules plugin. When enabled, it will cause text\r\n * input that matches any of the given rules to trigger the rule’s\r\n * action.\r\n */\r\nfunction inputRulesPlugin(props) {\r\n const { editor, rules } = props;\r\n const plugin = new state.Plugin({\r\n state: {\r\n init() {\r\n return null;\r\n },\r\n apply(tr, prev) {\r\n const stored = tr.getMeta(plugin);\r\n if (stored) {\r\n return stored;\r\n }\r\n return tr.selectionSet || tr.docChanged ? null : prev;\r\n },\r\n },\r\n props: {\r\n handleTextInput(view, from, to, text) {\r\n return run$1({\r\n editor,\r\n from,\r\n to,\r\n text,\r\n rules,\r\n plugin,\r\n });\r\n },\r\n handleDOMEvents: {\r\n compositionend: view => {\r\n setTimeout(() => {\r\n const { $cursor } = view.state.selection;\r\n if ($cursor) {\r\n run$1({\r\n editor,\r\n from: $cursor.pos,\r\n to: $cursor.pos,\r\n text: '',\r\n rules,\r\n plugin,\r\n });\r\n }\r\n });\r\n return false;\r\n },\r\n },\r\n // add support for input rules to trigger on enter\r\n // this is useful for example for code blocks\r\n handleKeyDown(view, event) {\r\n if (event.key !== 'Enter') {\r\n return false;\r\n }\r\n const { $cursor } = view.state.selection;\r\n if ($cursor) {\r\n return run$1({\r\n editor,\r\n from: $cursor.pos,\r\n to: $cursor.pos,\r\n text: '\\n',\r\n rules,\r\n plugin,\r\n });\r\n }\r\n return false;\r\n },\r\n },\r\n // @ts-ignore\r\n isInputRules: true,\r\n });\r\n return plugin;\r\n}\n\nfunction isNumber(value) {\r\n return typeof value === 'number';\r\n}\n\nclass PasteRule {\r\n constructor(config) {\r\n this.find = config.find;\r\n this.handler = config.handler;\r\n }\r\n}\r\nconst pasteRuleMatcherHandler = (text, find) => {\r\n if (isRegExp(find)) {\r\n return [...text.matchAll(find)];\r\n }\r\n const matches = find(text);\r\n if (!matches) {\r\n return [];\r\n }\r\n return matches.map(pasteRuleMatch => {\r\n const result = [pasteRuleMatch.text];\r\n result.index = pasteRuleMatch.index;\r\n result.input = text;\r\n result.data = pasteRuleMatch.data;\r\n if (pasteRuleMatch.replaceWith) {\r\n if (!pasteRuleMatch.text.includes(pasteRuleMatch.replaceWith)) {\r\n console.warn('[tiptap warn]: \"pasteRuleMatch.replaceWith\" must be part of \"pasteRuleMatch.text\".');\r\n }\r\n result.push(pasteRuleMatch.replaceWith);\r\n }\r\n return result;\r\n });\r\n};\r\nfunction run(config) {\r\n const { editor, state, from, to, rule, pasteEvent, dropEvent, } = config;\r\n const { commands, chain, can } = new CommandManager({\r\n editor,\r\n state,\r\n });\r\n const handlers = [];\r\n state.doc.nodesBetween(from, to, (node, pos) => {\r\n if (!node.isTextblock || node.type.spec.code) {\r\n return;\r\n }\r\n const resolvedFrom = Math.max(from, pos);\r\n const resolvedTo = Math.min(to, pos + node.content.size);\r\n const textToMatch = node.textBetween(resolvedFrom - pos, resolvedTo - pos, undefined, '\\ufffc');\r\n const matches = pasteRuleMatcherHandler(textToMatch, rule.find);\r\n matches.forEach(match => {\r\n if (match.index === undefined) {\r\n return;\r\n }\r\n const start = resolvedFrom + match.index + 1;\r\n const end = start + match[0].length;\r\n const range = {\r\n from: state.tr.mapping.map(start),\r\n to: state.tr.mapping.map(end),\r\n };\r\n const handler = rule.handler({\r\n state,\r\n range,\r\n match,\r\n commands,\r\n chain,\r\n can,\r\n pasteEvent,\r\n dropEvent,\r\n });\r\n handlers.push(handler);\r\n });\r\n });\r\n const success = handlers.every(handler => handler !== null);\r\n return success;\r\n}\r\n/**\r\n * Create an paste rules plugin. When enabled, it will cause pasted\r\n * text that matches any of the given rules to trigger the rule’s\r\n * action.\r\n */\r\nfunction pasteRulesPlugin(props) {\r\n const { editor, rules } = props;\r\n let dragSourceElement = null;\r\n let isPastedFromProseMirror = false;\r\n let isDroppedFromProseMirror = false;\r\n let pasteEvent = new ClipboardEvent('paste');\r\n let dropEvent = new DragEvent('drop');\r\n const plugins = rules.map(rule => {\r\n return new state.Plugin({\r\n // we register a global drag handler to track the current drag source element\r\n view(view) {\r\n const handleDragstart = (event) => {\r\n var _a;\r\n dragSourceElement = ((_a = view.dom.parentElement) === null || _a === void 0 ? void 0 : _a.contains(event.target))\r\n ? view.dom.parentElement\r\n : null;\r\n };\r\n window.addEventListener('dragstart', handleDragstart);\r\n return {\r\n destroy() {\r\n window.removeEventListener('dragstart', handleDragstart);\r\n },\r\n };\r\n },\r\n props: {\r\n handleDOMEvents: {\r\n drop: (view, event) => {\r\n isDroppedFromProseMirror = dragSourceElement === view.dom.parentElement;\r\n dropEvent = event;\r\n return false;\r\n },\r\n paste: (_view, event) => {\r\n var _a;\r\n const html = (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text/html');\r\n pasteEvent = event;\r\n isPastedFromProseMirror = !!(html === null || html === void 0 ? void 0 : html.includes('data-pm-slice'));\r\n return false;\r\n },\r\n },\r\n },\r\n appendTransaction: (transactions, oldState, state) => {\r\n const transaction = transactions[0];\r\n const isPaste = transaction.getMeta('uiEvent') === 'paste' && !isPastedFromProseMirror;\r\n const isDrop = transaction.getMeta('uiEvent') === 'drop' && !isDroppedFromProseMirror;\r\n if (!isPaste && !isDrop) {\r\n return;\r\n }\r\n // stop if there is no changed range\r\n const from = oldState.doc.content.findDiffStart(state.doc.content);\r\n const to = oldState.doc.content.findDiffEnd(state.doc.content);\r\n if (!isNumber(from) || !to || from === to.b) {\r\n return;\r\n }\r\n // build a chainable state\r\n // so we can use a single transaction for all paste rules\r\n const tr = state.tr;\r\n const chainableState = createChainableState({\r\n state,\r\n transaction: tr,\r\n });\r\n const handler = run({\r\n editor,\r\n state: chainableState,\r\n from: Math.max(from - 1, 0),\r\n to: to.b - 1,\r\n rule,\r\n pasteEvent,\r\n dropEvent,\r\n });\r\n // stop if there are no changes\r\n if (!handler || !tr.steps.length) {\r\n return;\r\n }\r\n dropEvent = new DragEvent('drop');\r\n pasteEvent = new ClipboardEvent('paste');\r\n return tr;\r\n },\r\n });\r\n });\r\n return plugins;\r\n}\n\nfunction findDuplicates(items) {\r\n const filtered = items.filter((el, index) => items.indexOf(el) !== index);\r\n return [...new Set(filtered)];\r\n}\n\nclass ExtensionManager {\r\n constructor(extensions, editor) {\r\n this.splittableMarks = [];\r\n this.editor = editor;\r\n this.extensions = ExtensionManager.resolve(extensions);\r\n this.schema = getSchemaByResolvedExtensions(this.extensions, editor);\r\n this.extensions.forEach(extension => {\r\n var _a;\r\n // store extension storage in editor\r\n this.editor.extensionStorage[extension.name] = extension.storage;\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n editor: this.editor,\r\n type: getSchemaTypeByName(extension.name, this.schema),\r\n };\r\n if (extension.type === 'mark') {\r\n const keepOnSplit = (_a = callOrReturn(getExtensionField(extension, 'keepOnSplit', context))) !== null && _a !== void 0 ? _a : true;\r\n if (keepOnSplit) {\r\n this.splittableMarks.push(extension.name);\r\n }\r\n }\r\n const onBeforeCreate = getExtensionField(extension, 'onBeforeCreate', context);\r\n if (onBeforeCreate) {\r\n this.editor.on('beforeCreate', onBeforeCreate);\r\n }\r\n const onCreate = getExtensionField(extension, 'onCreate', context);\r\n if (onCreate) {\r\n this.editor.on('create', onCreate);\r\n }\r\n const onUpdate = getExtensionField(extension, 'onUpdate', context);\r\n if (onUpdate) {\r\n this.editor.on('update', onUpdate);\r\n }\r\n const onSelectionUpdate = getExtensionField(extension, 'onSelectionUpdate', context);\r\n if (onSelectionUpdate) {\r\n this.editor.on('selectionUpdate', onSelectionUpdate);\r\n }\r\n const onTransaction = getExtensionField(extension, 'onTransaction', context);\r\n if (onTransaction) {\r\n this.editor.on('transaction', onTransaction);\r\n }\r\n const onFocus = getExtensionField(extension, 'onFocus', context);\r\n if (onFocus) {\r\n this.editor.on('focus', onFocus);\r\n }\r\n const onBlur = getExtensionField(extension, 'onBlur', context);\r\n if (onBlur) {\r\n this.editor.on('blur', onBlur);\r\n }\r\n const onDestroy = getExtensionField(extension, 'onDestroy', context);\r\n if (onDestroy) {\r\n this.editor.on('destroy', onDestroy);\r\n }\r\n });\r\n }\r\n static resolve(extensions) {\r\n const resolvedExtensions = ExtensionManager.sort(ExtensionManager.flatten(extensions));\r\n const duplicatedNames = findDuplicates(resolvedExtensions.map(extension => extension.name));\r\n if (duplicatedNames.length) {\r\n console.warn(`[tiptap warn]: Duplicate extension names found: [${duplicatedNames\r\n .map(item => `'${item}'`)\r\n .join(', ')}]. This can lead to issues.`);\r\n }\r\n return resolvedExtensions;\r\n }\r\n static flatten(extensions) {\r\n return (extensions\r\n .map(extension => {\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n };\r\n const addExtensions = getExtensionField(extension, 'addExtensions', context);\r\n if (addExtensions) {\r\n return [extension, ...this.flatten(addExtensions())];\r\n }\r\n return extension;\r\n })\r\n // `Infinity` will break TypeScript so we set a number that is probably high enough\r\n .flat(10));\r\n }\r\n static sort(extensions) {\r\n const defaultPriority = 100;\r\n return extensions.sort((a, b) => {\r\n const priorityA = getExtensionField(a, 'priority') || defaultPriority;\r\n const priorityB = getExtensionField(b, 'priority') || defaultPriority;\r\n if (priorityA > priorityB) {\r\n return -1;\r\n }\r\n if (priorityA < priorityB) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n }\r\n get commands() {\r\n return this.extensions.reduce((commands, extension) => {\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n editor: this.editor,\r\n type: getSchemaTypeByName(extension.name, this.schema),\r\n };\r\n const addCommands = getExtensionField(extension, 'addCommands', context);\r\n if (!addCommands) {\r\n return commands;\r\n }\r\n return {\r\n ...commands,\r\n ...addCommands(),\r\n };\r\n }, {});\r\n }\r\n get plugins() {\r\n const { editor } = this;\r\n // With ProseMirror, first plugins within an array are executed first.\r\n // In Tiptap, we provide the ability to override plugins,\r\n // so it feels more natural to run plugins at the end of an array first.\r\n // That’s why we have to reverse the `extensions` array and sort again\r\n // based on the `priority` option.\r\n const extensions = ExtensionManager.sort([...this.extensions].reverse());\r\n const inputRules = [];\r\n const pasteRules = [];\r\n const allPlugins = extensions\r\n .map(extension => {\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n editor,\r\n type: getSchemaTypeByName(extension.name, this.schema),\r\n };\r\n const plugins = [];\r\n const addKeyboardShortcuts = getExtensionField(extension, 'addKeyboardShortcuts', context);\r\n let defaultBindings = {};\r\n // bind exit handling\r\n if (extension.type === 'mark' && extension.config.exitable) {\r\n defaultBindings.ArrowRight = () => Mark.handleExit({ editor, mark: extension });\r\n }\r\n if (addKeyboardShortcuts) {\r\n const bindings = Object.fromEntries(Object.entries(addKeyboardShortcuts()).map(([shortcut, method]) => {\r\n return [shortcut, () => method({ editor })];\r\n }));\r\n defaultBindings = { ...defaultBindings, ...bindings };\r\n }\r\n const keyMapPlugin = keymap.keymap(defaultBindings);\r\n plugins.push(keyMapPlugin);\r\n const addInputRules = getExtensionField(extension, 'addInputRules', context);\r\n if (isExtensionRulesEnabled(extension, editor.options.enableInputRules) && addInputRules) {\r\n inputRules.push(...addInputRules());\r\n }\r\n const addPasteRules = getExtensionField(extension, 'addPasteRules', context);\r\n if (isExtensionRulesEnabled(extension, editor.options.enablePasteRules) && addPasteRules) {\r\n pasteRules.push(...addPasteRules());\r\n }\r\n const addProseMirrorPlugins = getExtensionField(extension, 'addProseMirrorPlugins', context);\r\n if (addProseMirrorPlugins) {\r\n const proseMirrorPlugins = addProseMirrorPlugins();\r\n plugins.push(...proseMirrorPlugins);\r\n }\r\n return plugins;\r\n })\r\n .flat();\r\n return [\r\n inputRulesPlugin({\r\n editor,\r\n rules: inputRules,\r\n }),\r\n ...pasteRulesPlugin({\r\n editor,\r\n rules: pasteRules,\r\n }),\r\n ...allPlugins,\r\n ];\r\n }\r\n get attributes() {\r\n return getAttributesFromExtensions(this.extensions);\r\n }\r\n get nodeViews() {\r\n const { editor } = this;\r\n const { nodeExtensions } = splitExtensions(this.extensions);\r\n return Object.fromEntries(nodeExtensions\r\n .filter(extension => !!getExtensionField(extension, 'addNodeView'))\r\n .map(extension => {\r\n const extensionAttributes = this.attributes.filter(attribute => attribute.type === extension.name);\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n editor,\r\n type: getNodeType(extension.name, this.schema),\r\n };\r\n const addNodeView = getExtensionField(extension, 'addNodeView', context);\r\n if (!addNodeView) {\r\n return [];\r\n }\r\n const nodeview = (node, view, getPos, decorations) => {\r\n const HTMLAttributes = getRenderedAttributes(node, extensionAttributes);\r\n return addNodeView()({\r\n editor,\r\n node,\r\n getPos,\r\n decorations,\r\n HTMLAttributes,\r\n extension,\r\n });\r\n };\r\n return [extension.name, nodeview];\r\n }));\r\n }\r\n}\n\n// see: https://github.com/mesqueeb/is-what/blob/88d6e4ca92fb2baab6003c54e02eedf4e729e5ab/src/index.ts\r\nfunction getType(value) {\r\n return Object.prototype.toString.call(value).slice(8, -1);\r\n}\r\nfunction isPlainObject(value) {\r\n if (getType(value) !== 'Object') {\r\n return false;\r\n }\r\n return value.constructor === Object && Object.getPrototypeOf(value) === Object.prototype;\r\n}\n\nfunction mergeDeep(target, source) {\r\n const output = { ...target };\r\n if (isPlainObject(target) && isPlainObject(source)) {\r\n Object.keys(source).forEach(key => {\r\n if (isPlainObject(source[key])) {\r\n if (!(key in target)) {\r\n Object.assign(output, { [key]: source[key] });\r\n }\r\n else {\r\n output[key] = mergeDeep(target[key], source[key]);\r\n }\r\n }\r\n else {\r\n Object.assign(output, { [key]: source[key] });\r\n }\r\n });\r\n }\r\n return output;\r\n}\n\nclass Extension {\r\n constructor(config = {}) {\r\n this.type = 'extension';\r\n this.name = 'extension';\r\n this.parent = null;\r\n this.child = null;\r\n this.config = {\r\n name: this.name,\r\n defaultOptions: {},\r\n };\r\n this.config = {\r\n ...this.config,\r\n ...config,\r\n };\r\n this.name = this.config.name;\r\n if (config.defaultOptions) {\r\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${this.name}\".`);\r\n }\r\n // TODO: remove `addOptions` fallback\r\n this.options = this.config.defaultOptions;\r\n if (this.config.addOptions) {\r\n this.options = callOrReturn(getExtensionField(this, 'addOptions', {\r\n name: this.name,\r\n }));\r\n }\r\n this.storage = callOrReturn(getExtensionField(this, 'addStorage', {\r\n name: this.name,\r\n options: this.options,\r\n })) || {};\r\n }\r\n static create(config = {}) {\r\n return new Extension(config);\r\n }\r\n configure(options = {}) {\r\n // return a new instance so we can use the same extension\r\n // with different calls of `configure`\r\n const extension = this.extend();\r\n extension.options = mergeDeep(this.options, options);\r\n extension.storage = callOrReturn(getExtensionField(extension, 'addStorage', {\r\n name: extension.name,\r\n options: extension.options,\r\n }));\r\n return extension;\r\n }\r\n extend(extendedConfig = {}) {\r\n const extension = new Extension(extendedConfig);\r\n extension.parent = this;\r\n this.child = extension;\r\n extension.name = extendedConfig.name ? extendedConfig.name : extension.parent.name;\r\n if (extendedConfig.defaultOptions) {\r\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${extension.name}\".`);\r\n }\r\n extension.options = callOrReturn(getExtensionField(extension, 'addOptions', {\r\n name: extension.name,\r\n }));\r\n extension.storage = callOrReturn(getExtensionField(extension, 'addStorage', {\r\n name: extension.name,\r\n options: extension.options,\r\n }));\r\n return extension;\r\n }\r\n}\n\nfunction getTextBetween(startNode, range, options) {\r\n const { from, to } = range;\r\n const { blockSeparator = '\\n\\n', textSerializers = {} } = options || {};\r\n let text = '';\r\n let separated = true;\r\n startNode.nodesBetween(from, to, (node, pos, parent, index) => {\r\n var _a;\r\n const textSerializer = textSerializers === null || textSerializers === void 0 ? void 0 : textSerializers[node.type.name];\r\n if (textSerializer) {\r\n if (node.isBlock && !separated) {\r\n text += blockSeparator;\r\n separated = true;\r\n }\r\n if (parent) {\r\n text += textSerializer({\r\n node,\r\n pos,\r\n parent,\r\n index,\r\n range,\r\n });\r\n }\r\n }\r\n else if (node.isText) {\r\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\r\n separated = false;\r\n }\r\n else if (node.isBlock && !separated) {\r\n text += blockSeparator;\r\n separated = true;\r\n }\r\n });\r\n return text;\r\n}\n\nfunction getTextSerializersFromSchema(schema) {\r\n return Object.fromEntries(Object.entries(schema.nodes)\r\n .filter(([, node]) => node.spec.toText)\r\n .map(([name, node]) => [name, node.spec.toText]));\r\n}\n\nconst ClipboardTextSerializer = Extension.create({\r\n name: 'clipboardTextSerializer',\r\n addProseMirrorPlugins() {\r\n return [\r\n new state.Plugin({\r\n key: new state.PluginKey('clipboardTextSerializer'),\r\n props: {\r\n clipboardTextSerializer: () => {\r\n const { editor } = this;\r\n const { state, schema } = editor;\r\n const { doc, selection } = state;\r\n const { ranges } = selection;\r\n const from = Math.min(...ranges.map(range => range.$from.pos));\r\n const to = Math.max(...ranges.map(range => range.$to.pos));\r\n const textSerializers = getTextSerializersFromSchema(schema);\r\n const range = { from, to };\r\n return getTextBetween(doc, range, {\r\n textSerializers,\r\n });\r\n },\r\n },\r\n }),\r\n ];\r\n },\r\n});\n\nconst blur = () => ({ editor, view }) => {\r\n requestAnimationFrame(() => {\r\n var _a;\r\n if (!editor.isDestroyed) {\r\n view.dom.blur();\r\n // Browsers should remove the caret on blur but safari does not.\r\n // See: https://github.com/ueberdosis/tiptap/issues/2405\r\n (_a = window === null || window === void 0 ? void 0 : window.getSelection()) === null || _a === void 0 ? void 0 : _a.removeAllRanges();\r\n }\r\n });\r\n return true;\r\n};\n\nconst clearContent = (emitUpdate = false) => ({ commands }) => {\r\n return commands.setContent('', emitUpdate);\r\n};\n\nconst clearNodes = () => ({ state, tr, dispatch }) => {\r\n const { selection } = tr;\r\n const { ranges } = selection;\r\n if (!dispatch) {\r\n return true;\r\n }\r\n ranges.forEach(({ $from, $to }) => {\r\n state.doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\r\n if (node.type.isText) {\r\n return;\r\n }\r\n const { doc, mapping } = tr;\r\n const $mappedFrom = doc.resolve(mapping.map(pos));\r\n const $mappedTo = doc.resolve(mapping.map(pos + node.nodeSize));\r\n const nodeRange = $mappedFrom.blockRange($mappedTo);\r\n if (!nodeRange) {\r\n return;\r\n }\r\n const targetLiftDepth = transform.liftTarget(nodeRange);\r\n if (node.type.isTextblock) {\r\n const { defaultType } = $mappedFrom.parent.contentMatchAt($mappedFrom.index());\r\n tr.setNodeMarkup(nodeRange.start, defaultType);\r\n }\r\n if (targetLiftDepth || targetLiftDepth === 0) {\r\n tr.lift(nodeRange, targetLiftDepth);\r\n }\r\n });\r\n });\r\n return true;\r\n};\n\nconst command = fn => props => {\r\n return fn(props);\r\n};\n\nconst createParagraphNear = () => ({ state, dispatch }) => {\r\n return commands$1.createParagraphNear(state, dispatch);\r\n};\n\nconst cut = (originRange, targetPos) => ({ editor, tr }) => {\r\n const { state: state$1 } = editor;\r\n const contentSlice = state$1.doc.slice(originRange.from, originRange.to);\r\n tr.deleteRange(originRange.from, originRange.to);\r\n const newPos = tr.mapping.map(targetPos);\r\n tr.insert(newPos, contentSlice.content);\r\n tr.setSelection(new state.TextSelection(tr.doc.resolve(newPos - 1)));\r\n return true;\r\n};\n\nconst deleteCurrentNode = () => ({ tr, dispatch }) => {\r\n const { selection } = tr;\r\n const currentNode = selection.$anchor.node();\r\n // if there is content inside the current node, break out of this command\r\n if (currentNode.content.size > 0) {\r\n return false;\r\n }\r\n const $pos = tr.selection.$anchor;\r\n for (let depth = $pos.depth; depth > 0; depth -= 1) {\r\n const node = $pos.node(depth);\r\n if (node.type === currentNode.type) {\r\n if (dispatch) {\r\n const from = $pos.before(depth);\r\n const to = $pos.after(depth);\r\n tr.delete(from, to).scrollIntoView();\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\n\nconst deleteNode = typeOrName => ({ tr, state, dispatch }) => {\r\n const type = getNodeType(typeOrName, state.schema);\r\n const $pos = tr.selection.$anchor;\r\n for (let depth = $pos.depth; depth > 0; depth -= 1) {\r\n const node = $pos.node(depth);\r\n if (node.type === type) {\r\n if (dispatch) {\r\n const from = $pos.before(depth);\r\n const to = $pos.after(depth);\r\n tr.delete(from, to).scrollIntoView();\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\n\nconst deleteRange = range => ({ tr, dispatch }) => {\r\n const { from, to } = range;\r\n if (dispatch) {\r\n tr.delete(from, to);\r\n }\r\n return true;\r\n};\n\nconst deleteSelection = () => ({ state, dispatch }) => {\r\n return commands$1.deleteSelection(state, dispatch);\r\n};\n\nconst enter = () => ({ commands }) => {\r\n return commands.keyboardShortcut('Enter');\r\n};\n\nconst exitCode = () => ({ state, dispatch }) => {\r\n return commands$1.exitCode(state, dispatch);\r\n};\n\n/**\r\n * Check if object1 includes object2\r\n * @param object1 Object\r\n * @param object2 Object\r\n */\r\nfunction objectIncludes(object1, object2, options = { strict: true }) {\r\n const keys = Object.keys(object2);\r\n if (!keys.length) {\r\n return true;\r\n }\r\n return keys.every(key => {\r\n if (options.strict) {\r\n return object2[key] === object1[key];\r\n }\r\n if (isRegExp(object2[key])) {\r\n return object2[key].test(object1[key]);\r\n }\r\n return object2[key] === object1[key];\r\n });\r\n}\n\nfunction findMarkInSet(marks, type, attributes = {}) {\r\n return marks.find(item => {\r\n return item.type === type && objectIncludes(item.attrs, attributes);\r\n });\r\n}\r\nfunction isMarkInSet(marks, type, attributes = {}) {\r\n return !!findMarkInSet(marks, type, attributes);\r\n}\r\nfunction getMarkRange($pos, type, attributes = {}) {\r\n if (!$pos || !type) {\r\n return;\r\n }\r\n let start = $pos.parent.childAfter($pos.parentOffset);\r\n if ($pos.parentOffset === start.offset && start.offset !== 0) {\r\n start = $pos.parent.childBefore($pos.parentOffset);\r\n }\r\n if (!start.node) {\r\n return;\r\n }\r\n const mark = findMarkInSet([...start.node.marks], type, attributes);\r\n if (!mark) {\r\n return;\r\n }\r\n let startIndex = start.index;\r\n let startPos = $pos.start() + start.offset;\r\n let endIndex = startIndex + 1;\r\n let endPos = startPos + start.node.nodeSize;\r\n findMarkInSet([...start.node.marks], type, attributes);\r\n while (startIndex > 0 && mark.isInSet($pos.parent.child(startIndex - 1).marks)) {\r\n startIndex -= 1;\r\n startPos -= $pos.parent.child(startIndex).nodeSize;\r\n }\r\n while (endIndex < $pos.parent.childCount\r\n && isMarkInSet([...$pos.parent.child(endIndex).marks], type, attributes)) {\r\n endPos += $pos.parent.child(endIndex).nodeSize;\r\n endIndex += 1;\r\n }\r\n return {\r\n from: startPos,\r\n to: endPos,\r\n };\r\n}\n\nfunction getMarkType(nameOrType, schema) {\r\n if (typeof nameOrType === 'string') {\r\n if (!schema.marks[nameOrType]) {\r\n throw Error(`There is no mark type named '${nameOrType}'. Maybe you forgot to add the extension?`);\r\n }\r\n return schema.marks[nameOrType];\r\n }\r\n return nameOrType;\r\n}\n\nconst extendMarkRange = (typeOrName, attributes = {}) => ({ tr, state: state$1, dispatch }) => {\r\n const type = getMarkType(typeOrName, state$1.schema);\r\n const { doc, selection } = tr;\r\n const { $from, from, to } = selection;\r\n if (dispatch) {\r\n const range = getMarkRange($from, type, attributes);\r\n if (range && range.from <= from && range.to >= to) {\r\n const newSelection = state.TextSelection.create(doc, range.from, range.to);\r\n tr.setSelection(newSelection);\r\n }\r\n }\r\n return true;\r\n};\n\nconst first = commands => props => {\r\n const items = typeof commands === 'function'\r\n ? commands(props)\r\n : commands;\r\n for (let i = 0; i < items.length; i += 1) {\r\n if (items[i](props)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\n\nfunction isTextSelection(value) {\r\n return value instanceof state.TextSelection;\r\n}\n\nfunction minMax(value = 0, min = 0, max = 0) {\r\n return Math.min(Math.max(value, min), max);\r\n}\n\nfunction resolveFocusPosition(doc, position = null) {\r\n if (!position) {\r\n return null;\r\n }\r\n const selectionAtStart = state.Selection.atStart(doc);\r\n const selectionAtEnd = state.Selection.atEnd(doc);\r\n if (position === 'start' || position === true) {\r\n return selectionAtStart;\r\n }\r\n if (position === 'end') {\r\n return selectionAtEnd;\r\n }\r\n const minPos = selectionAtStart.from;\r\n const maxPos = selectionAtEnd.to;\r\n if (position === 'all') {\r\n return state.TextSelection.create(doc, minMax(0, minPos, maxPos), minMax(doc.content.size, minPos, maxPos));\r\n }\r\n return state.TextSelection.create(doc, minMax(position, minPos, maxPos), minMax(position, minPos, maxPos));\r\n}\n\nfunction isiOS() {\r\n return [\r\n 'iPad Simulator',\r\n 'iPhone Simulator',\r\n 'iPod Simulator',\r\n 'iPad',\r\n 'iPhone',\r\n 'iPod',\r\n ].includes(navigator.platform)\r\n // iPad on iOS 13 detection\r\n || (navigator.userAgent.includes('Mac') && 'ontouchend' in document);\r\n}\n\nconst focus = (position = null, options = {}) => ({ editor, view, tr, dispatch, }) => {\r\n options = {\r\n scrollIntoView: true,\r\n ...options,\r\n };\r\n const delayedFocus = () => {\r\n // focus within `requestAnimationFrame` breaks focus on iOS\r\n // so we have to call this\r\n if (isiOS()) {\r\n view.dom.focus();\r\n }\r\n // For React we have to focus asynchronously. Otherwise wild things happen.\r\n // see: https://github.com/ueberdosis/tiptap/issues/1520\r\n requestAnimationFrame(() => {\r\n if (!editor.isDestroyed) {\r\n view.focus();\r\n if (options === null || options === void 0 ? void 0 : options.scrollIntoView) {\r\n editor.commands.scrollIntoView();\r\n }\r\n }\r\n });\r\n };\r\n if ((view.hasFocus() && position === null) || position === false) {\r\n return true;\r\n }\r\n // we don’t try to resolve a NodeSelection or CellSelection\r\n if (dispatch && position === null && !isTextSelection(editor.state.selection)) {\r\n delayedFocus();\r\n return true;\r\n }\r\n // pass through tr.doc instead of editor.state.doc\r\n // since transactions could change the editors state before this command has been run\r\n const selection = resolveFocusPosition(tr.doc, position) || editor.state.selection;\r\n const isSameSelection = editor.state.selection.eq(selection);\r\n if (dispatch) {\r\n if (!isSameSelection) {\r\n tr.setSelection(selection);\r\n }\r\n // `tr.setSelection` resets the stored marks\r\n // so we’ll restore them if the selection is the same as before\r\n if (isSameSelection && tr.storedMarks) {\r\n tr.setStoredMarks(tr.storedMarks);\r\n }\r\n delayedFocus();\r\n }\r\n return true;\r\n};\n\nconst forEach = (items, fn) => props => {\r\n return items.every((item, index) => fn(item, { ...props, index }));\r\n};\n\nconst insertContent = (value, options) => ({ tr, commands }) => {\r\n return commands.insertContentAt({ from: tr.selection.from, to: tr.selection.to }, value, options);\r\n};\n\nfunction elementFromString(value) {\r\n // add a wrapper to preserve leading and trailing whitespace\r\n const wrappedValue = `${value}`;\r\n return new window.DOMParser().parseFromString(wrappedValue, 'text/html').body;\r\n}\n\nfunction createNodeFromContent(content, schema, options) {\r\n options = {\r\n slice: true,\r\n parseOptions: {},\r\n ...options,\r\n };\r\n if (typeof content === 'object' && content !== null) {\r\n try {\r\n if (Array.isArray(content) && content.length > 0) {\r\n return model.Fragment.fromArray(content.map(item => schema.nodeFromJSON(item)));\r\n }\r\n return schema.nodeFromJSON(content);\r\n }\r\n catch (error) {\r\n console.warn('[tiptap warn]: Invalid content.', 'Passed value:', content, 'Error:', error);\r\n return createNodeFromContent('', schema, options);\r\n }\r\n }\r\n if (typeof content === 'string') {\r\n const parser = model.DOMParser.fromSchema(schema);\r\n return options.slice\r\n ? parser.parseSlice(elementFromString(content), options.parseOptions).content\r\n : parser.parse(elementFromString(content), options.parseOptions);\r\n }\r\n return createNodeFromContent('', schema, options);\r\n}\n\n// source: https://github.com/ProseMirror/prosemirror-state/blob/master/src/selection.js#L466\r\nfunction selectionToInsertionEnd(tr, startLen, bias) {\r\n const last = tr.steps.length - 1;\r\n if (last < startLen) {\r\n return;\r\n }\r\n const step = tr.steps[last];\r\n if (!(step instanceof transform.ReplaceStep || step instanceof transform.ReplaceAroundStep)) {\r\n return;\r\n }\r\n const map = tr.mapping.maps[last];\r\n let end = 0;\r\n map.forEach((_from, _to, _newFrom, newTo) => {\r\n if (end === 0) {\r\n end = newTo;\r\n }\r\n });\r\n tr.setSelection(state.Selection.near(tr.doc.resolve(end), bias));\r\n}\n\nconst isFragment = (nodeOrFragment) => {\r\n return nodeOrFragment.toString().startsWith('<');\r\n};\r\nconst insertContentAt = (position, value, options) => ({ tr, dispatch, editor }) => {\r\n if (dispatch) {\r\n options = {\r\n parseOptions: {},\r\n updateSelection: true,\r\n ...options,\r\n };\r\n const content = createNodeFromContent(value, editor.schema, {\r\n parseOptions: {\r\n preserveWhitespace: 'full',\r\n ...options.parseOptions,\r\n },\r\n });\r\n // don’t dispatch an empty fragment because this can lead to strange errors\r\n if (content.toString() === '<>') {\r\n return true;\r\n }\r\n let { from, to } = typeof position === 'number' ? { from: position, to: position } : { from: position.from, to: position.to };\r\n let isOnlyTextContent = true;\r\n let isOnlyBlockContent = true;\r\n const nodes = isFragment(content) ? content : [content];\r\n nodes.forEach(node => {\r\n // check if added node is valid\r\n node.check();\r\n isOnlyTextContent = isOnlyTextContent ? node.isText && node.marks.length === 0 : false;\r\n isOnlyBlockContent = isOnlyBlockContent ? node.isBlock : false;\r\n });\r\n // check if we can replace the wrapping node by\r\n // the newly inserted content\r\n // example:\r\n // replace an empty paragraph by an inserted image\r\n // instead of inserting the image below the paragraph\r\n if (from === to && isOnlyBlockContent) {\r\n const { parent } = tr.doc.resolve(from);\r\n const isEmptyTextBlock = parent.isTextblock && !parent.type.spec.code && !parent.childCount;\r\n if (isEmptyTextBlock) {\r\n from -= 1;\r\n to += 1;\r\n }\r\n }\r\n // if there is only plain text we have to use `insertText`\r\n // because this will keep the current marks\r\n if (isOnlyTextContent) {\r\n // if value is string, we can use it directly\r\n // otherwise if it is an array, we have to join it\r\n if (Array.isArray(value)) {\r\n tr.insertText(value.map(v => v.text || '').join(''), from, to);\r\n }\r\n else if (typeof value === 'object' && !!value && !!value.text) {\r\n tr.insertText(value.text, from, to);\r\n }\r\n else {\r\n tr.insertText(value, from, to);\r\n }\r\n }\r\n else {\r\n tr.replaceWith(from, to, content);\r\n }\r\n // set cursor at end of inserted content\r\n if (options.updateSelection) {\r\n selectionToInsertionEnd(tr, tr.steps.length - 1, -1);\r\n }\r\n }\r\n return true;\r\n};\n\nconst joinUp = () => ({ state, dispatch }) => {\r\n return commands$1.joinUp(state, dispatch);\r\n};\r\nconst joinDown = () => ({ state, dispatch }) => {\r\n return commands$1.joinDown(state, dispatch);\r\n};\r\nconst joinBackward = () => ({ state, dispatch }) => {\r\n return commands$1.joinBackward(state, dispatch);\r\n};\r\nconst joinForward = () => ({ state, dispatch }) => {\r\n return commands$1.joinForward(state, dispatch);\r\n};\n\nconst joinItemBackward = () => ({ tr, state, dispatch, }) => {\r\n try {\r\n const point = transform.joinPoint(state.doc, state.selection.$from.pos, -1);\r\n if (point === null || point === undefined) {\r\n return false;\r\n }\r\n tr.join(point, 2);\r\n if (dispatch) {\r\n dispatch(tr);\r\n }\r\n return true;\r\n }\r\n catch {\r\n return false;\r\n }\r\n};\n\nconst joinItemForward = () => ({ state, dispatch, tr, }) => {\r\n try {\r\n const point = transform.joinPoint(state.doc, state.selection.$from.pos, +1);\r\n if (point === null || point === undefined) {\r\n return false;\r\n }\r\n tr.join(point, 2);\r\n if (dispatch) {\r\n dispatch(tr);\r\n }\r\n return true;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n};\n\nfunction isMacOS() {\r\n return typeof navigator !== 'undefined'\r\n ? /Mac/.test(navigator.platform)\r\n : false;\r\n}\n\nfunction normalizeKeyName(name) {\r\n const parts = name.split(/-(?!$)/);\r\n let result = parts[parts.length - 1];\r\n if (result === 'Space') {\r\n result = ' ';\r\n }\r\n let alt;\r\n let ctrl;\r\n let shift;\r\n let meta;\r\n for (let i = 0; i < parts.length - 1; i += 1) {\r\n const mod = parts[i];\r\n if (/^(cmd|meta|m)$/i.test(mod)) {\r\n meta = true;\r\n }\r\n else if (/^a(lt)?$/i.test(mod)) {\r\n alt = true;\r\n }\r\n else if (/^(c|ctrl|control)$/i.test(mod)) {\r\n ctrl = true;\r\n }\r\n else if (/^s(hift)?$/i.test(mod)) {\r\n shift = true;\r\n }\r\n else if (/^mod$/i.test(mod)) {\r\n if (isiOS() || isMacOS()) {\r\n meta = true;\r\n }\r\n else {\r\n ctrl = true;\r\n }\r\n }\r\n else {\r\n throw new Error(`Unrecognized modifier name: ${mod}`);\r\n }\r\n }\r\n if (alt) {\r\n result = `Alt-${result}`;\r\n }\r\n if (ctrl) {\r\n result = `Ctrl-${result}`;\r\n }\r\n if (meta) {\r\n result = `Meta-${result}`;\r\n }\r\n if (shift) {\r\n result = `Shift-${result}`;\r\n }\r\n return result;\r\n}\r\nconst keyboardShortcut = name => ({ editor, view, tr, dispatch, }) => {\r\n const keys = normalizeKeyName(name).split(/-(?!$)/);\r\n const key = keys.find(item => !['Alt', 'Ctrl', 'Meta', 'Shift'].includes(item));\r\n const event = new KeyboardEvent('keydown', {\r\n key: key === 'Space'\r\n ? ' '\r\n : key,\r\n altKey: keys.includes('Alt'),\r\n ctrlKey: keys.includes('Ctrl'),\r\n metaKey: keys.includes('Meta'),\r\n shiftKey: keys.includes('Shift'),\r\n bubbles: true,\r\n cancelable: true,\r\n });\r\n const capturedTransaction = editor.captureTransaction(() => {\r\n view.someProp('handleKeyDown', f => f(view, event));\r\n });\r\n capturedTransaction === null || capturedTransaction === void 0 ? void 0 : capturedTransaction.steps.forEach(step => {\r\n const newStep = step.map(tr.mapping);\r\n if (newStep && dispatch) {\r\n tr.maybeStep(newStep);\r\n }\r\n });\r\n return true;\r\n};\n\nfunction isNodeActive(state, typeOrName, attributes = {}) {\r\n const { from, to, empty } = state.selection;\r\n const type = typeOrName ? getNodeType(typeOrName, state.schema) : null;\r\n const nodeRanges = [];\r\n state.doc.nodesBetween(from, to, (node, pos) => {\r\n if (node.isText) {\r\n return;\r\n }\r\n const relativeFrom = Math.max(from, pos);\r\n const relativeTo = Math.min(to, pos + node.nodeSize);\r\n nodeRanges.push({\r\n node,\r\n from: relativeFrom,\r\n to: relativeTo,\r\n });\r\n });\r\n const selectionRange = to - from;\r\n const matchedNodeRanges = nodeRanges\r\n .filter(nodeRange => {\r\n if (!type) {\r\n return true;\r\n }\r\n return type.name === nodeRange.node.type.name;\r\n })\r\n .filter(nodeRange => objectIncludes(nodeRange.node.attrs, attributes, { strict: false }));\r\n if (empty) {\r\n return !!matchedNodeRanges.length;\r\n }\r\n const range = matchedNodeRanges.reduce((sum, nodeRange) => sum + nodeRange.to - nodeRange.from, 0);\r\n return range >= selectionRange;\r\n}\n\nconst lift = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\r\n const type = getNodeType(typeOrName, state.schema);\r\n const isActive = isNodeActive(state, type, attributes);\r\n if (!isActive) {\r\n return false;\r\n }\r\n return commands$1.lift(state, dispatch);\r\n};\n\nconst liftEmptyBlock = () => ({ state, dispatch }) => {\r\n return commands$1.liftEmptyBlock(state, dispatch);\r\n};\n\nconst liftListItem = typeOrName => ({ state, dispatch }) => {\r\n const type = getNodeType(typeOrName, state.schema);\r\n return schemaList.liftListItem(type)(state, dispatch);\r\n};\n\nconst newlineInCode = () => ({ state, dispatch }) => {\r\n return commands$1.newlineInCode(state, dispatch);\r\n};\n\nfunction getSchemaTypeNameByName(name, schema) {\r\n if (schema.nodes[name]) {\r\n return 'node';\r\n }\r\n if (schema.marks[name]) {\r\n return 'mark';\r\n }\r\n return null;\r\n}\n\n/**\r\n * Remove a property or an array of properties from an object\r\n * @param obj Object\r\n * @param key Key to remove\r\n */\r\nfunction deleteProps(obj, propOrProps) {\r\n const props = typeof propOrProps === 'string'\r\n ? [propOrProps]\r\n : propOrProps;\r\n return Object\r\n .keys(obj)\r\n .reduce((newObj, prop) => {\r\n if (!props.includes(prop)) {\r\n newObj[prop] = obj[prop];\r\n }\r\n return newObj;\r\n }, {});\r\n}\n\nconst resetAttributes = (typeOrName, attributes) => ({ tr, state, dispatch }) => {\r\n let nodeType = null;\r\n let markType = null;\r\n const schemaType = getSchemaTypeNameByName(typeof typeOrName === 'string' ? typeOrName : typeOrName.name, state.schema);\r\n if (!schemaType) {\r\n return false;\r\n }\r\n if (schemaType === 'node') {\r\n nodeType = getNodeType(typeOrName, state.schema);\r\n }\r\n if (schemaType === 'mark') {\r\n markType = getMarkType(typeOrName, state.schema);\r\n }\r\n if (dispatch) {\r\n tr.selection.ranges.forEach(range => {\r\n state.doc.nodesBetween(range.$from.pos, range.$to.pos, (node, pos) => {\r\n if (nodeType && nodeType === node.type) {\r\n tr.setNodeMarkup(pos, undefined, deleteProps(node.attrs, attributes));\r\n }\r\n if (markType && node.marks.length) {\r\n node.marks.forEach(mark => {\r\n if (markType === mark.type) {\r\n tr.addMark(pos, pos + node.nodeSize, markType.create(deleteProps(mark.attrs, attributes)));\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n return true;\r\n};\n\nconst scrollIntoView = () => ({ tr, dispatch }) => {\r\n if (dispatch) {\r\n tr.scrollIntoView();\r\n }\r\n return true;\r\n};\n\nconst selectAll = () => ({ tr, commands }) => {\r\n return commands.setTextSelection({\r\n from: 0,\r\n to: tr.doc.content.size,\r\n });\r\n};\n\nconst selectNodeBackward = () => ({ state, dispatch }) => {\r\n return commands$1.selectNodeBackward(state, dispatch);\r\n};\n\nconst selectNodeForward = () => ({ state, dispatch }) => {\r\n return commands$1.selectNodeForward(state, dispatch);\r\n};\n\nconst selectParentNode = () => ({ state, dispatch }) => {\r\n return commands$1.selectParentNode(state, dispatch);\r\n};\n\n// @ts-ignore\r\nconst selectTextblockEnd = () => ({ state, dispatch }) => {\r\n return commands$1.selectTextblockEnd(state, dispatch);\r\n};\n\n// @ts-ignore\r\nconst selectTextblockStart = () => ({ state, dispatch }) => {\r\n return commands$1.selectTextblockStart(state, dispatch);\r\n};\n\nfunction createDocument(content, schema, parseOptions = {}) {\r\n return createNodeFromContent(content, schema, { slice: false, parseOptions });\r\n}\n\nconst setContent = (content, emitUpdate = false, parseOptions = {}) => ({ tr, editor, dispatch }) => {\r\n const { doc } = tr;\r\n const document = createDocument(content, editor.schema, parseOptions);\r\n if (dispatch) {\r\n tr.replaceWith(0, doc.content.size, document).setMeta('preventUpdate', !emitUpdate);\r\n }\r\n return true;\r\n};\n\nfunction getMarkAttributes(state, typeOrName) {\r\n const type = getMarkType(typeOrName, state.schema);\r\n const { from, to, empty } = state.selection;\r\n const marks = [];\r\n if (empty) {\r\n if (state.storedMarks) {\r\n marks.push(...state.storedMarks);\r\n }\r\n marks.push(...state.selection.$head.marks());\r\n }\r\n else {\r\n state.doc.nodesBetween(from, to, node => {\r\n marks.push(...node.marks);\r\n });\r\n }\r\n const mark = marks.find(markItem => markItem.type.name === type.name);\r\n if (!mark) {\r\n return {};\r\n }\r\n return { ...mark.attrs };\r\n}\n\n/**\r\n * Returns a new `Transform` based on all steps of the passed transactions.\r\n */\r\nfunction combineTransactionSteps(oldDoc, transactions) {\r\n const transform$1 = new transform.Transform(oldDoc);\r\n transactions.forEach(transaction => {\r\n transaction.steps.forEach(step => {\r\n transform$1.step(step);\r\n });\r\n });\r\n return transform$1;\r\n}\n\nfunction defaultBlockAt(match) {\r\n for (let i = 0; i < match.edgeCount; i += 1) {\r\n const { type } = match.edge(i);\r\n if (type.isTextblock && !type.hasRequiredAttrs()) {\r\n return type;\r\n }\r\n }\r\n return null;\r\n}\n\nfunction findChildren(node, predicate) {\r\n const nodesWithPos = [];\r\n node.descendants((child, pos) => {\r\n if (predicate(child)) {\r\n nodesWithPos.push({\r\n node: child,\r\n pos,\r\n });\r\n }\r\n });\r\n return nodesWithPos;\r\n}\n\n/**\r\n * Same as `findChildren` but searches only within a `range`.\r\n */\r\nfunction findChildrenInRange(node, range, predicate) {\r\n const nodesWithPos = [];\r\n // if (range.from === range.to) {\r\n // const nodeAt = node.nodeAt(range.from)\r\n // if (nodeAt) {\r\n // nodesWithPos.push({\r\n // node: nodeAt,\r\n // pos: range.from,\r\n // })\r\n // }\r\n // }\r\n node.nodesBetween(range.from, range.to, (child, pos) => {\r\n if (predicate(child)) {\r\n nodesWithPos.push({\r\n node: child,\r\n pos,\r\n });\r\n }\r\n });\r\n return nodesWithPos;\r\n}\n\nfunction findParentNodeClosestToPos($pos, predicate) {\r\n for (let i = $pos.depth; i > 0; i -= 1) {\r\n const node = $pos.node(i);\r\n if (predicate(node)) {\r\n return {\r\n pos: i > 0 ? $pos.before(i) : 0,\r\n start: $pos.start(i),\r\n depth: i,\r\n node,\r\n };\r\n }\r\n }\r\n}\n\nfunction findParentNode(predicate) {\r\n return (selection) => findParentNodeClosestToPos(selection.$from, predicate);\r\n}\n\nfunction getHTMLFromFragment(fragment, schema) {\r\n const documentFragment = model.DOMSerializer.fromSchema(schema).serializeFragment(fragment);\r\n const temporaryDocument = document.implementation.createHTMLDocument();\r\n const container = temporaryDocument.createElement('div');\r\n container.appendChild(documentFragment);\r\n return container.innerHTML;\r\n}\n\nfunction getSchema(extensions, editor) {\r\n const resolvedExtensions = ExtensionManager.resolve(extensions);\r\n return getSchemaByResolvedExtensions(resolvedExtensions, editor);\r\n}\n\nfunction generateHTML(doc, extensions) {\r\n const schema = getSchema(extensions);\r\n const contentNode = model.Node.fromJSON(schema, doc);\r\n return getHTMLFromFragment(contentNode.content, schema);\r\n}\n\nfunction generateJSON(html, extensions) {\r\n const schema = getSchema(extensions);\r\n const dom = elementFromString(html);\r\n return model.DOMParser.fromSchema(schema).parse(dom).toJSON();\r\n}\n\nfunction getText(node, options) {\r\n const range = {\r\n from: 0,\r\n to: node.content.size,\r\n };\r\n return getTextBetween(node, range, options);\r\n}\n\nfunction generateText(doc, extensions, options) {\r\n const { blockSeparator = '\\n\\n', textSerializers = {} } = options || {};\r\n const schema = getSchema(extensions);\r\n const contentNode = model.Node.fromJSON(schema, doc);\r\n return getText(contentNode, {\r\n blockSeparator,\r\n textSerializers: {\r\n ...getTextSerializersFromSchema(schema),\r\n ...textSerializers,\r\n },\r\n });\r\n}\n\nfunction getNodeAttributes(state, typeOrName) {\r\n const type = getNodeType(typeOrName, state.schema);\r\n const { from, to } = state.selection;\r\n const nodes = [];\r\n state.doc.nodesBetween(from, to, node => {\r\n nodes.push(node);\r\n });\r\n const node = nodes.reverse().find(nodeItem => nodeItem.type.name === type.name);\r\n if (!node) {\r\n return {};\r\n }\r\n return { ...node.attrs };\r\n}\n\nfunction getAttributes(state, typeOrName) {\r\n const schemaType = getSchemaTypeNameByName(typeof typeOrName === 'string' ? typeOrName : typeOrName.name, state.schema);\r\n if (schemaType === 'node') {\r\n return getNodeAttributes(state, typeOrName);\r\n }\r\n if (schemaType === 'mark') {\r\n return getMarkAttributes(state, typeOrName);\r\n }\r\n return {};\r\n}\n\n/**\r\n * Removes duplicated values within an array.\r\n * Supports numbers, strings and objects.\r\n */\r\nfunction removeDuplicates(array, by = JSON.stringify) {\r\n const seen = {};\r\n return array.filter(item => {\r\n const key = by(item);\r\n return Object.prototype.hasOwnProperty.call(seen, key)\r\n ? false\r\n : (seen[key] = true);\r\n });\r\n}\n\n/**\r\n * Removes duplicated ranges and ranges that are\r\n * fully captured by other ranges.\r\n */\r\nfunction simplifyChangedRanges(changes) {\r\n const uniqueChanges = removeDuplicates(changes);\r\n return uniqueChanges.length === 1\r\n ? uniqueChanges\r\n : uniqueChanges.filter((change, index) => {\r\n const rest = uniqueChanges.filter((_, i) => i !== index);\r\n return !rest.some(otherChange => {\r\n return change.oldRange.from >= otherChange.oldRange.from\r\n && change.oldRange.to <= otherChange.oldRange.to\r\n && change.newRange.from >= otherChange.newRange.from\r\n && change.newRange.to <= otherChange.newRange.to;\r\n });\r\n });\r\n}\r\n/**\r\n * Returns a list of changed ranges\r\n * based on the first and last state of all steps.\r\n */\r\nfunction getChangedRanges(transform) {\r\n const { mapping, steps } = transform;\r\n const changes = [];\r\n mapping.maps.forEach((stepMap, index) => {\r\n const ranges = [];\r\n // This accounts for step changes where no range was actually altered\r\n // e.g. when setting a mark, node attribute, etc.\r\n // @ts-ignore\r\n if (!stepMap.ranges.length) {\r\n const { from, to } = steps[index];\r\n if (from === undefined || to === undefined) {\r\n return;\r\n }\r\n ranges.push({ from, to });\r\n }\r\n else {\r\n stepMap.forEach((from, to) => {\r\n ranges.push({ from, to });\r\n });\r\n }\r\n ranges.forEach(({ from, to }) => {\r\n const newStart = mapping.slice(index).map(from, -1);\r\n const newEnd = mapping.slice(index).map(to);\r\n const oldStart = mapping.invert().map(newStart, -1);\r\n const oldEnd = mapping.invert().map(newEnd);\r\n changes.push({\r\n oldRange: {\r\n from: oldStart,\r\n to: oldEnd,\r\n },\r\n newRange: {\r\n from: newStart,\r\n to: newEnd,\r\n },\r\n });\r\n });\r\n });\r\n return simplifyChangedRanges(changes);\r\n}\n\nfunction getDebugJSON(node, startOffset = 0) {\r\n const isTopNode = node.type === node.type.schema.topNodeType;\r\n const increment = isTopNode ? 0 : 1;\r\n const from = startOffset;\r\n const to = from + node.nodeSize;\r\n const marks = node.marks.map(mark => {\r\n const output = {\r\n type: mark.type.name,\r\n };\r\n if (Object.keys(mark.attrs).length) {\r\n output.attrs = { ...mark.attrs };\r\n }\r\n return output;\r\n });\r\n const attrs = { ...node.attrs };\r\n const output = {\r\n type: node.type.name,\r\n from,\r\n to,\r\n };\r\n if (Object.keys(attrs).length) {\r\n output.attrs = attrs;\r\n }\r\n if (marks.length) {\r\n output.marks = marks;\r\n }\r\n if (node.content.childCount) {\r\n output.content = [];\r\n node.forEach((child, offset) => {\r\n var _a;\r\n (_a = output.content) === null || _a === void 0 ? void 0 : _a.push(getDebugJSON(child, startOffset + offset + increment));\r\n });\r\n }\r\n if (node.text) {\r\n output.text = node.text;\r\n }\r\n return output;\r\n}\n\nfunction getMarksBetween(from, to, doc) {\r\n const marks = [];\r\n // get all inclusive marks on empty selection\r\n if (from === to) {\r\n doc\r\n .resolve(from)\r\n .marks()\r\n .forEach(mark => {\r\n const $pos = doc.resolve(from - 1);\r\n const range = getMarkRange($pos, mark.type);\r\n if (!range) {\r\n return;\r\n }\r\n marks.push({\r\n mark,\r\n ...range,\r\n });\r\n });\r\n }\r\n else {\r\n doc.nodesBetween(from, to, (node, pos) => {\r\n marks.push(...node.marks.map(mark => ({\r\n from: pos,\r\n to: pos + node.nodeSize,\r\n mark,\r\n })));\r\n });\r\n }\r\n return marks;\r\n}\n\n/**\r\n * Finds the first node of a given type or name in the current selection.\r\n * @param state The editor state.\r\n * @param typeOrName The node type or name.\r\n * @param pos The position to start searching from.\r\n * @param maxDepth The maximum depth to search.\r\n * @returns The node and the depth as an array.\r\n */\r\nconst getNodeAtPosition = (state, typeOrName, pos, maxDepth = 20) => {\r\n const $pos = state.doc.resolve(pos);\r\n let currentDepth = maxDepth;\r\n let node = null;\r\n while (currentDepth > 0 && node === null) {\r\n const currentNode = $pos.node(currentDepth);\r\n if ((currentNode === null || currentNode === void 0 ? void 0 : currentNode.type.name) === typeOrName) {\r\n node = currentNode;\r\n }\r\n else {\r\n currentDepth -= 1;\r\n }\r\n }\r\n return [node, currentDepth];\r\n};\n\nfunction getSplittedAttributes(extensionAttributes, typeName, attributes) {\r\n return Object.fromEntries(Object\r\n .entries(attributes)\r\n .filter(([name]) => {\r\n const extensionAttribute = extensionAttributes.find(item => {\r\n return item.type === typeName && item.name === name;\r\n });\r\n if (!extensionAttribute) {\r\n return false;\r\n }\r\n return extensionAttribute.attribute.keepOnSplit;\r\n }));\r\n}\n\nfunction isMarkActive(state, typeOrName, attributes = {}) {\r\n const { empty, ranges } = state.selection;\r\n const type = typeOrName ? getMarkType(typeOrName, state.schema) : null;\r\n if (empty) {\r\n return !!(state.storedMarks || state.selection.$from.marks())\r\n .filter(mark => {\r\n if (!type) {\r\n return true;\r\n }\r\n return type.name === mark.type.name;\r\n })\r\n .find(mark => objectIncludes(mark.attrs, attributes, { strict: false }));\r\n }\r\n let selectionRange = 0;\r\n const markRanges = [];\r\n ranges.forEach(({ $from, $to }) => {\r\n const from = $from.pos;\r\n const to = $to.pos;\r\n state.doc.nodesBetween(from, to, (node, pos) => {\r\n if (!node.isText && !node.marks.length) {\r\n return;\r\n }\r\n const relativeFrom = Math.max(from, pos);\r\n const relativeTo = Math.min(to, pos + node.nodeSize);\r\n const range = relativeTo - relativeFrom;\r\n selectionRange += range;\r\n markRanges.push(...node.marks.map(mark => ({\r\n mark,\r\n from: relativeFrom,\r\n to: relativeTo,\r\n })));\r\n });\r\n });\r\n if (selectionRange === 0) {\r\n return false;\r\n }\r\n // calculate range of matched mark\r\n const matchedRange = markRanges\r\n .filter(markRange => {\r\n if (!type) {\r\n return true;\r\n }\r\n return type.name === markRange.mark.type.name;\r\n })\r\n .filter(markRange => objectIncludes(markRange.mark.attrs, attributes, { strict: false }))\r\n .reduce((sum, markRange) => sum + markRange.to - markRange.from, 0);\r\n // calculate range of marks that excludes the searched mark\r\n // for example `code` doesn’t allow any other marks\r\n const excludedRange = markRanges\r\n .filter(markRange => {\r\n if (!type) {\r\n return true;\r\n }\r\n return markRange.mark.type !== type && markRange.mark.type.excludes(type);\r\n })\r\n .reduce((sum, markRange) => sum + markRange.to - markRange.from, 0);\r\n // we only include the result of `excludedRange`\r\n // if there is a match at all\r\n const range = matchedRange > 0 ? matchedRange + excludedRange : matchedRange;\r\n return range >= selectionRange;\r\n}\n\nfunction isActive(state, name, attributes = {}) {\r\n if (!name) {\r\n return isNodeActive(state, null, attributes) || isMarkActive(state, null, attributes);\r\n }\r\n const schemaType = getSchemaTypeNameByName(name, state.schema);\r\n if (schemaType === 'node') {\r\n return isNodeActive(state, name, attributes);\r\n }\r\n if (schemaType === 'mark') {\r\n return isMarkActive(state, name, attributes);\r\n }\r\n return false;\r\n}\n\nconst isAtEndOfNode = (state, nodeType) => {\r\n const { $from, $to, $anchor } = state.selection;\r\n if (nodeType) {\r\n const parentNode = findParentNode(node => node.type.name === nodeType)(state.selection);\r\n if (!parentNode) {\r\n return false;\r\n }\r\n const $parentPos = state.doc.resolve(parentNode.pos + 1);\r\n if ($anchor.pos + 1 === $parentPos.end()) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n if ($to.parentOffset < $to.parent.nodeSize - 2 || $from.pos !== $to.pos) {\r\n return false;\r\n }\r\n return true;\r\n};\n\nconst isAtStartOfNode = (state) => {\r\n const { $from, $to } = state.selection;\r\n if ($from.parentOffset > 0 || $from.pos !== $to.pos) {\r\n return false;\r\n }\r\n return true;\r\n};\n\nfunction isList(name, extensions) {\r\n const { nodeExtensions } = splitExtensions(extensions);\r\n const extension = nodeExtensions.find(item => item.name === name);\r\n if (!extension) {\r\n return false;\r\n }\r\n const context = {\r\n name: extension.name,\r\n options: extension.options,\r\n storage: extension.storage,\r\n };\r\n const group = callOrReturn(getExtensionField(extension, 'group', context));\r\n if (typeof group !== 'string') {\r\n return false;\r\n }\r\n return group.split(' ').includes('list');\r\n}\n\nfunction isNodeEmpty(node) {\r\n var _a;\r\n const defaultContent = (_a = node.type.createAndFill()) === null || _a === void 0 ? void 0 : _a.toJSON();\r\n const content = node.toJSON();\r\n return JSON.stringify(defaultContent) === JSON.stringify(content);\r\n}\n\nfunction isNodeSelection(value) {\r\n return value instanceof state.NodeSelection;\r\n}\n\nfunction posToDOMRect(view, from, to) {\r\n const minPos = 0;\r\n const maxPos = view.state.doc.content.size;\r\n const resolvedFrom = minMax(from, minPos, maxPos);\r\n const resolvedEnd = minMax(to, minPos, maxPos);\r\n const start = view.coordsAtPos(resolvedFrom);\r\n const end = view.coordsAtPos(resolvedEnd, -1);\r\n const top = Math.min(start.top, end.top);\r\n const bottom = Math.max(start.bottom, end.bottom);\r\n const left = Math.min(start.left, end.left);\r\n const right = Math.max(start.right, end.right);\r\n const width = right - left;\r\n const height = bottom - top;\r\n const x = left;\r\n const y = top;\r\n const data = {\r\n top,\r\n bottom,\r\n left,\r\n right,\r\n width,\r\n height,\r\n x,\r\n y,\r\n };\r\n return {\r\n ...data,\r\n toJSON: () => data,\r\n };\r\n}\n\nfunction canSetMark(state, tr, newMarkType) {\r\n var _a;\r\n const { selection } = tr;\r\n let cursor = null;\r\n if (isTextSelection(selection)) {\r\n cursor = selection.$cursor;\r\n }\r\n if (cursor) {\r\n const currentMarks = (_a = state.storedMarks) !== null && _a !== void 0 ? _a : cursor.marks();\r\n // There can be no current marks that exclude the new mark\r\n return (!!newMarkType.isInSet(currentMarks)\r\n || !currentMarks.some(mark => mark.type.excludes(newMarkType)));\r\n }\r\n const { ranges } = selection;\r\n return ranges.some(({ $from, $to }) => {\r\n let someNodeSupportsMark = $from.depth === 0\r\n ? state.doc.inlineContent && state.doc.type.allowsMarkType(newMarkType)\r\n : false;\r\n state.doc.nodesBetween($from.pos, $to.pos, (node, _pos, parent) => {\r\n // If we already found a mark that we can enable, return false to bypass the remaining search\r\n if (someNodeSupportsMark) {\r\n return false;\r\n }\r\n if (node.isInline) {\r\n const parentAllowsMarkType = !parent || parent.type.allowsMarkType(newMarkType);\r\n const currentMarksAllowMarkType = !!newMarkType.isInSet(node.marks)\r\n || !node.marks.some(otherMark => otherMark.type.excludes(newMarkType));\r\n someNodeSupportsMark = parentAllowsMarkType && currentMarksAllowMarkType;\r\n }\r\n return !someNodeSupportsMark;\r\n });\r\n return someNodeSupportsMark;\r\n });\r\n}\r\nconst setMark = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\r\n const { selection } = tr;\r\n const { empty, ranges } = selection;\r\n const type = getMarkType(typeOrName, state.schema);\r\n if (dispatch) {\r\n if (empty) {\r\n const oldAttributes = getMarkAttributes(state, type);\r\n tr.addStoredMark(type.create({\r\n ...oldAttributes,\r\n ...attributes,\r\n }));\r\n }\r\n else {\r\n ranges.forEach(range => {\r\n const from = range.$from.pos;\r\n const to = range.$to.pos;\r\n state.doc.nodesBetween(from, to, (node, pos) => {\r\n const trimmedFrom = Math.max(pos, from);\r\n const trimmedTo = Math.min(pos + node.nodeSize, to);\r\n const someHasMark = node.marks.find(mark => mark.type === type);\r\n // if there is already a mark of this type\r\n // we know that we have to merge its attributes\r\n // otherwise we add a fresh new mark\r\n if (someHasMark) {\r\n node.marks.forEach(mark => {\r\n if (type === mark.type) {\r\n tr.addMark(trimmedFrom, trimmedTo, type.create({\r\n ...mark.attrs,\r\n ...attributes,\r\n }));\r\n }\r\n });\r\n }\r\n else {\r\n tr.addMark(trimmedFrom, trimmedTo, type.create(attributes));\r\n }\r\n });\r\n });\r\n }\r\n }\r\n return canSetMark(state, tr, type);\r\n};\n\nconst setMeta = (key, value) => ({ tr }) => {\r\n tr.setMeta(key, value);\r\n return true;\r\n};\n\nconst setNode = (typeOrName, attributes = {}) => ({ state, dispatch, chain }) => {\r\n const type = getNodeType(typeOrName, state.schema);\r\n // TODO: use a fallback like insertContent?\r\n if (!type.isTextblock) {\r\n console.warn('[tiptap warn]: Currently \"setNode()\" only supports text block nodes.');\r\n return false;\r\n }\r\n return (chain()\r\n // try to convert node to default node if needed\r\n .command(({ commands }) => {\r\n const canSetBlock = commands$1.setBlockType(type, attributes)(state);\r\n if (canSetBlock) {\r\n return true;\r\n }\r\n return commands.clearNodes();\r\n })\r\n .command(({ state: updatedState }) => {\r\n return commands$1.setBlockType(type, attributes)(updatedState, dispatch);\r\n })\r\n .run());\r\n};\n\nconst setNodeSelection = position => ({ tr, dispatch }) => {\r\n if (dispatch) {\r\n const { doc } = tr;\r\n const from = minMax(position, 0, doc.content.size);\r\n const selection = state.NodeSelection.create(doc, from);\r\n tr.setSelection(selection);\r\n }\r\n return true;\r\n};\n\nconst setTextSelection = position => ({ tr, dispatch }) => {\r\n if (dispatch) {\r\n const { doc } = tr;\r\n const { from, to } = typeof position === 'number' ? { from: position, to: position } : position;\r\n const minPos = state.TextSelection.atStart(doc).from;\r\n const maxPos = state.TextSelection.atEnd(doc).to;\r\n const resolvedFrom = minMax(from, minPos, maxPos);\r\n const resolvedEnd = minMax(to, minPos, maxPos);\r\n const selection = state.TextSelection.create(doc, resolvedFrom, resolvedEnd);\r\n tr.setSelection(selection);\r\n }\r\n return true;\r\n};\n\nconst sinkListItem = typeOrName => ({ state, dispatch }) => {\r\n const type = getNodeType(typeOrName, state.schema);\r\n return schemaList.sinkListItem(type)(state, dispatch);\r\n};\n\nfunction ensureMarks(state, splittableMarks) {\r\n const marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\r\n if (marks) {\r\n const filteredMarks = marks.filter(mark => splittableMarks === null || splittableMarks === void 0 ? void 0 : splittableMarks.includes(mark.type.name));\r\n state.tr.ensureMarks(filteredMarks);\r\n }\r\n}\r\nconst splitBlock = ({ keepMarks = true } = {}) => ({ tr, state: state$1, dispatch, editor, }) => {\r\n const { selection, doc } = tr;\r\n const { $from, $to } = selection;\r\n const extensionAttributes = editor.extensionManager.attributes;\r\n const newAttributes = getSplittedAttributes(extensionAttributes, $from.node().type.name, $from.node().attrs);\r\n if (selection instanceof state.NodeSelection && selection.node.isBlock) {\r\n if (!$from.parentOffset || !transform.canSplit(doc, $from.pos)) {\r\n return false;\r\n }\r\n if (dispatch) {\r\n if (keepMarks) {\r\n ensureMarks(state$1, editor.extensionManager.splittableMarks);\r\n }\r\n tr.split($from.pos).scrollIntoView();\r\n }\r\n return true;\r\n }\r\n if (!$from.parent.isBlock) {\r\n return false;\r\n }\r\n if (dispatch) {\r\n const atEnd = $to.parentOffset === $to.parent.content.size;\r\n if (selection instanceof state.TextSelection) {\r\n tr.deleteSelection();\r\n }\r\n const deflt = $from.depth === 0\r\n ? undefined\r\n : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)));\r\n let types = atEnd && deflt\r\n ? [\r\n {\r\n type: deflt,\r\n attrs: newAttributes,\r\n },\r\n ]\r\n : undefined;\r\n let can = transform.canSplit(tr.doc, tr.mapping.map($from.pos), 1, types);\r\n if (!types\r\n && !can\r\n && transform.canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt ? [{ type: deflt }] : undefined)) {\r\n can = true;\r\n types = deflt\r\n ? [\r\n {\r\n type: deflt,\r\n attrs: newAttributes,\r\n },\r\n ]\r\n : undefined;\r\n }\r\n if (can) {\r\n tr.split(tr.mapping.map($from.pos), 1, types);\r\n if (deflt && !atEnd && !$from.parentOffset && $from.parent.type !== deflt) {\r\n const first = tr.mapping.map($from.before());\r\n const $first = tr.doc.resolve(first);\r\n if ($from.node(-1).canReplaceWith($first.index(), $first.index() + 1, deflt)) {\r\n tr.setNodeMarkup(tr.mapping.map($from.before()), deflt);\r\n }\r\n }\r\n }\r\n if (keepMarks) {\r\n ensureMarks(state$1, editor.extensionManager.splittableMarks);\r\n }\r\n tr.scrollIntoView();\r\n }\r\n return true;\r\n};\n\nconst splitListItem = typeOrName => ({ tr, state: state$1, dispatch, editor, }) => {\r\n var _a;\r\n const type = getNodeType(typeOrName, state$1.schema);\r\n const { $from, $to } = state$1.selection;\r\n // @ts-ignore\r\n // eslint-disable-next-line\r\n const node = state$1.selection.node;\r\n if ((node && node.isBlock) || $from.depth < 2 || !$from.sameParent($to)) {\r\n return false;\r\n }\r\n const grandParent = $from.node(-1);\r\n if (grandParent.type !== type) {\r\n return false;\r\n }\r\n const extensionAttributes = editor.extensionManager.attributes;\r\n if ($from.parent.content.size === 0 && $from.node(-1).childCount === $from.indexAfter(-1)) {\r\n // In an empty block. If this is a nested list, the wrapping\r\n // list item should be split. Otherwise, bail out and let next\r\n // command handle lifting.\r\n if ($from.depth === 2\r\n || $from.node(-3).type !== type\r\n || $from.index(-2) !== $from.node(-2).childCount - 1) {\r\n return false;\r\n }\r\n if (dispatch) {\r\n let wrap = model.Fragment.empty;\r\n // eslint-disable-next-line\r\n const depthBefore = $from.index(-1) ? 1 : $from.index(-2) ? 2 : 3;\r\n // Build a fragment containing empty versions of the structure\r\n // from the outer list item to the parent node of the cursor\r\n for (let d = $from.depth - depthBefore; d >= $from.depth - 3; d -= 1) {\r\n wrap = model.Fragment.from($from.node(d).copy(wrap));\r\n }\r\n // eslint-disable-next-line\r\n const depthAfter = $from.indexAfter(-1) < $from.node(-2).childCount ? 1 : $from.indexAfter(-2) < $from.node(-3).childCount ? 2 : 3;\r\n // Add a second list item with an empty default start node\r\n const newNextTypeAttributes = getSplittedAttributes(extensionAttributes, $from.node().type.name, $from.node().attrs);\r\n const nextType = ((_a = type.contentMatch.defaultType) === null || _a === void 0 ? void 0 : _a.createAndFill(newNextTypeAttributes)) || undefined;\r\n wrap = wrap.append(model.Fragment.from(type.createAndFill(null, nextType) || undefined));\r\n const start = $from.before($from.depth - (depthBefore - 1));\r\n tr.replace(start, $from.after(-depthAfter), new model.Slice(wrap, 4 - depthBefore, 0));\r\n let sel = -1;\r\n tr.doc.nodesBetween(start, tr.doc.content.size, (n, pos) => {\r\n if (sel > -1) {\r\n return false;\r\n }\r\n if (n.isTextblock && n.content.size === 0) {\r\n sel = pos + 1;\r\n }\r\n });\r\n if (sel > -1) {\r\n tr.setSelection(state.TextSelection.near(tr.doc.resolve(sel)));\r\n }\r\n tr.scrollIntoView();\r\n }\r\n return true;\r\n }\r\n const nextType = $to.pos === $from.end() ? grandParent.contentMatchAt(0).defaultType : null;\r\n const newTypeAttributes = getSplittedAttributes(extensionAttributes, grandParent.type.name, grandParent.attrs);\r\n const newNextTypeAttributes = getSplittedAttributes(extensionAttributes, $from.node().type.name, $from.node().attrs);\r\n tr.delete($from.pos, $to.pos);\r\n const types = nextType\r\n ? [\r\n { type, attrs: newTypeAttributes },\r\n { type: nextType, attrs: newNextTypeAttributes },\r\n ]\r\n : [{ type, attrs: newTypeAttributes }];\r\n if (!transform.canSplit(tr.doc, $from.pos, 2)) {\r\n return false;\r\n }\r\n if (dispatch) {\r\n const { selection, storedMarks } = state$1;\r\n const { splittableMarks } = editor.extensionManager;\r\n const marks = storedMarks || (selection.$to.parentOffset && selection.$from.marks());\r\n tr.split($from.pos, 2, types).scrollIntoView();\r\n if (!marks || !dispatch) {\r\n return true;\r\n }\r\n const filteredMarks = marks.filter(mark => splittableMarks.includes(mark.type.name));\r\n tr.ensureMarks(filteredMarks);\r\n }\r\n return true;\r\n};\n\nconst joinListBackwards = (tr, listType) => {\r\n const list = findParentNode(node => node.type === listType)(tr.selection);\r\n if (!list) {\r\n return true;\r\n }\r\n const before = tr.doc.resolve(Math.max(0, list.pos - 1)).before(list.depth);\r\n if (before === undefined) {\r\n return true;\r\n }\r\n const nodeBefore = tr.doc.nodeAt(before);\r\n const canJoinBackwards = list.node.type === (nodeBefore === null || nodeBefore === void 0 ? void 0 : nodeBefore.type) && transform.canJoin(tr.doc, list.pos);\r\n if (!canJoinBackwards) {\r\n return true;\r\n }\r\n tr.join(list.pos);\r\n return true;\r\n};\r\nconst joinListForwards = (tr, listType) => {\r\n const list = findParentNode(node => node.type === listType)(tr.selection);\r\n if (!list) {\r\n return true;\r\n }\r\n const after = tr.doc.resolve(list.start).after(list.depth);\r\n if (after === undefined) {\r\n return true;\r\n }\r\n const nodeAfter = tr.doc.nodeAt(after);\r\n const canJoinForwards = list.node.type === (nodeAfter === null || nodeAfter === void 0 ? void 0 : nodeAfter.type) && transform.canJoin(tr.doc, after);\r\n if (!canJoinForwards) {\r\n return true;\r\n }\r\n tr.join(after);\r\n return true;\r\n};\r\nconst toggleList = (listTypeOrName, itemTypeOrName, keepMarks, attributes = {}) => ({ editor, tr, state, dispatch, chain, commands, can, }) => {\r\n const { extensions, splittableMarks } = editor.extensionManager;\r\n const listType = getNodeType(listTypeOrName, state.schema);\r\n const itemType = getNodeType(itemTypeOrName, state.schema);\r\n const { selection, storedMarks } = state;\r\n const { $from, $to } = selection;\r\n const range = $from.blockRange($to);\r\n const marks = storedMarks || (selection.$to.parentOffset && selection.$from.marks());\r\n if (!range) {\r\n return false;\r\n }\r\n const parentList = findParentNode(node => isList(node.type.name, extensions))(selection);\r\n if (range.depth >= 1 && parentList && range.depth - parentList.depth <= 1) {\r\n // remove list\r\n if (parentList.node.type === listType) {\r\n return commands.liftListItem(itemType);\r\n }\r\n // change list type\r\n if (isList(parentList.node.type.name, extensions)\r\n && listType.validContent(parentList.node.content)\r\n && dispatch) {\r\n return chain()\r\n .command(() => {\r\n tr.setNodeMarkup(parentList.pos, listType);\r\n return true;\r\n })\r\n .command(() => joinListBackwards(tr, listType))\r\n .command(() => joinListForwards(tr, listType))\r\n .run();\r\n }\r\n }\r\n if (!keepMarks || !marks || !dispatch) {\r\n return chain()\r\n // try to convert node to default node if needed\r\n .command(() => {\r\n const canWrapInList = can().wrapInList(listType, attributes);\r\n if (canWrapInList) {\r\n return true;\r\n }\r\n return commands.clearNodes();\r\n })\r\n .wrapInList(listType, attributes)\r\n .command(() => joinListBackwards(tr, listType))\r\n .command(() => joinListForwards(tr, listType))\r\n .run();\r\n }\r\n return (chain()\r\n // try to convert node to default node if needed\r\n .command(() => {\r\n const canWrapInList = can().wrapInList(listType, attributes);\r\n const filteredMarks = marks.filter(mark => splittableMarks.includes(mark.type.name));\r\n tr.ensureMarks(filteredMarks);\r\n if (canWrapInList) {\r\n return true;\r\n }\r\n return commands.clearNodes();\r\n })\r\n .wrapInList(listType, attributes)\r\n .command(() => joinListBackwards(tr, listType))\r\n .command(() => joinListForwards(tr, listType))\r\n .run());\r\n};\n\nconst toggleMark = (typeOrName, attributes = {}, options = {}) => ({ state, commands }) => {\r\n const { extendEmptyMarkRange = false } = options;\r\n const type = getMarkType(typeOrName, state.schema);\r\n const isActive = isMarkActive(state, type, attributes);\r\n if (isActive) {\r\n return commands.unsetMark(type, { extendEmptyMarkRange });\r\n }\r\n return commands.setMark(type, attributes);\r\n};\n\nconst toggleNode = (typeOrName, toggleTypeOrName, attributes = {}) => ({ state, commands }) => {\r\n const type = getNodeType(typeOrName, state.schema);\r\n const toggleType = getNodeType(toggleTypeOrName, state.schema);\r\n const isActive = isNodeActive(state, type, attributes);\r\n if (isActive) {\r\n return commands.setNode(toggleType);\r\n }\r\n return commands.setNode(type, attributes);\r\n};\n\nconst toggleWrap = (typeOrName, attributes = {}) => ({ state, commands }) => {\r\n const type = getNodeType(typeOrName, state.schema);\r\n const isActive = isNodeActive(state, type, attributes);\r\n if (isActive) {\r\n return commands.lift(type);\r\n }\r\n return commands.wrapIn(type, attributes);\r\n};\n\nconst undoInputRule = () => ({ state, dispatch }) => {\r\n const plugins = state.plugins;\r\n for (let i = 0; i < plugins.length; i += 1) {\r\n const plugin = plugins[i];\r\n let undoable;\r\n // @ts-ignore\r\n // eslint-disable-next-line\r\n if (plugin.spec.isInputRules && (undoable = plugin.getState(state))) {\r\n if (dispatch) {\r\n const tr = state.tr;\r\n const toUndo = undoable.transform;\r\n for (let j = toUndo.steps.length - 1; j >= 0; j -= 1) {\r\n tr.step(toUndo.steps[j].invert(toUndo.docs[j]));\r\n }\r\n if (undoable.text) {\r\n const marks = tr.doc.resolve(undoable.from).marks();\r\n tr.replaceWith(undoable.from, undoable.to, state.schema.text(undoable.text, marks));\r\n }\r\n else {\r\n tr.delete(undoable.from, undoable.to);\r\n }\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\n\nconst unsetAllMarks = () => ({ tr, dispatch }) => {\r\n const { selection } = tr;\r\n const { empty, ranges } = selection;\r\n if (empty) {\r\n return true;\r\n }\r\n if (dispatch) {\r\n ranges.forEach(range => {\r\n tr.removeMark(range.$from.pos, range.$to.pos);\r\n });\r\n }\r\n return true;\r\n};\n\nconst unsetMark = (typeOrName, options = {}) => ({ tr, state, dispatch }) => {\r\n var _a;\r\n const { extendEmptyMarkRange = false } = options;\r\n const { selection } = tr;\r\n const type = getMarkType(typeOrName, state.schema);\r\n const { $from, empty, ranges } = selection;\r\n if (!dispatch) {\r\n return true;\r\n }\r\n if (empty && extendEmptyMarkRange) {\r\n let { from, to } = selection;\r\n const attrs = (_a = $from.marks().find(mark => mark.type === type)) === null || _a === void 0 ? void 0 : _a.attrs;\r\n const range = getMarkRange($from, type, attrs);\r\n if (range) {\r\n from = range.from;\r\n to = range.to;\r\n }\r\n tr.removeMark(from, to, type);\r\n }\r\n else {\r\n ranges.forEach(range => {\r\n tr.removeMark(range.$from.pos, range.$to.pos, type);\r\n });\r\n }\r\n tr.removeStoredMark(type);\r\n return true;\r\n};\n\nconst updateAttributes = (typeOrName, attributes = {}) => ({ tr, state, dispatch }) => {\r\n let nodeType = null;\r\n let markType = null;\r\n const schemaType = getSchemaTypeNameByName(typeof typeOrName === 'string' ? typeOrName : typeOrName.name, state.schema);\r\n if (!schemaType) {\r\n return false;\r\n }\r\n if (schemaType === 'node') {\r\n nodeType = getNodeType(typeOrName, state.schema);\r\n }\r\n if (schemaType === 'mark') {\r\n markType = getMarkType(typeOrName, state.schema);\r\n }\r\n if (dispatch) {\r\n tr.selection.ranges.forEach(range => {\r\n const from = range.$from.pos;\r\n const to = range.$to.pos;\r\n state.doc.nodesBetween(from, to, (node, pos) => {\r\n if (nodeType && nodeType === node.type) {\r\n tr.setNodeMarkup(pos, undefined, {\r\n ...node.attrs,\r\n ...attributes,\r\n });\r\n }\r\n if (markType && node.marks.length) {\r\n node.marks.forEach(mark => {\r\n if (markType === mark.type) {\r\n const trimmedFrom = Math.max(pos, from);\r\n const trimmedTo = Math.min(pos + node.nodeSize, to);\r\n tr.addMark(trimmedFrom, trimmedTo, markType.create({\r\n ...mark.attrs,\r\n ...attributes,\r\n }));\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n return true;\r\n};\n\nconst wrapIn = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\r\n const type = getNodeType(typeOrName, state.schema);\r\n return commands$1.wrapIn(type, attributes)(state, dispatch);\r\n};\n\nconst wrapInList = (typeOrName, attributes = {}) => ({ state, dispatch }) => {\r\n const type = getNodeType(typeOrName, state.schema);\r\n return schemaList.wrapInList(type, attributes)(state, dispatch);\r\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 joinUp: joinUp,\n joinDown: joinDown,\n joinBackward: joinBackward,\n joinForward: joinForward,\n joinItemBackward: joinItemBackward,\n joinItemForward: joinItemForward,\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({\r\n name: 'commands',\r\n addCommands() {\r\n return {\r\n ...commands,\r\n };\r\n },\r\n});\n\nconst Editable = Extension.create({\r\n name: 'editable',\r\n addProseMirrorPlugins() {\r\n return [\r\n new state.Plugin({\r\n key: new state.PluginKey('editable'),\r\n props: {\r\n editable: () => this.editor.options.editable,\r\n },\r\n }),\r\n ];\r\n },\r\n});\n\nconst FocusEvents = Extension.create({\r\n name: 'focusEvents',\r\n addProseMirrorPlugins() {\r\n const { editor } = this;\r\n return [\r\n new state.Plugin({\r\n key: new state.PluginKey('focusEvents'),\r\n props: {\r\n handleDOMEvents: {\r\n focus: (view, event) => {\r\n editor.isFocused = true;\r\n const transaction = editor.state.tr\r\n .setMeta('focus', { event })\r\n .setMeta('addToHistory', false);\r\n view.dispatch(transaction);\r\n return false;\r\n },\r\n blur: (view, event) => {\r\n editor.isFocused = false;\r\n const transaction = editor.state.tr\r\n .setMeta('blur', { event })\r\n .setMeta('addToHistory', false);\r\n view.dispatch(transaction);\r\n return false;\r\n },\r\n },\r\n },\r\n }),\r\n ];\r\n },\r\n});\n\nconst Keymap = Extension.create({\r\n name: 'keymap',\r\n addKeyboardShortcuts() {\r\n const handleBackspace = () => this.editor.commands.first(({ commands }) => [\r\n () => commands.undoInputRule(),\r\n // maybe convert first text block node to default node\r\n () => commands.command(({ tr }) => {\r\n const { selection, doc } = tr;\r\n const { empty, $anchor } = selection;\r\n const { pos, parent } = $anchor;\r\n const $parentPos = $anchor.parent.isTextblock ? tr.doc.resolve(pos - 1) : $anchor;\r\n const parentIsIsolating = $parentPos.parent.type.spec.isolating;\r\n const parentPos = $anchor.pos - $anchor.parentOffset;\r\n const isAtStart = (parentIsIsolating && $parentPos.parent.childCount === 1)\r\n ? parentPos === $anchor.pos\r\n : state.Selection.atStart(doc).from === pos;\r\n if (!empty || !isAtStart || !parent.type.isTextblock || parent.textContent.length) {\r\n return false;\r\n }\r\n return commands.clearNodes();\r\n }),\r\n () => commands.deleteSelection(),\r\n () => commands.joinBackward(),\r\n () => commands.selectNodeBackward(),\r\n ]);\r\n const handleDelete = () => this.editor.commands.first(({ commands }) => [\r\n () => commands.deleteSelection(),\r\n () => commands.deleteCurrentNode(),\r\n () => commands.joinForward(),\r\n () => commands.selectNodeForward(),\r\n ]);\r\n const handleEnter = () => this.editor.commands.first(({ commands }) => [\r\n () => commands.newlineInCode(),\r\n () => commands.createParagraphNear(),\r\n () => commands.liftEmptyBlock(),\r\n () => commands.splitBlock(),\r\n ]);\r\n const baseKeymap = {\r\n Enter: handleEnter,\r\n 'Mod-Enter': () => this.editor.commands.exitCode(),\r\n Backspace: handleBackspace,\r\n 'Mod-Backspace': handleBackspace,\r\n 'Shift-Backspace': handleBackspace,\r\n Delete: handleDelete,\r\n 'Mod-Delete': handleDelete,\r\n 'Mod-a': () => this.editor.commands.selectAll(),\r\n };\r\n const pcKeymap = {\r\n ...baseKeymap,\r\n };\r\n const macKeymap = {\r\n ...baseKeymap,\r\n 'Ctrl-h': handleBackspace,\r\n 'Alt-Backspace': handleBackspace,\r\n 'Ctrl-d': handleDelete,\r\n 'Ctrl-Alt-Backspace': handleDelete,\r\n 'Alt-Delete': handleDelete,\r\n 'Alt-d': handleDelete,\r\n 'Ctrl-a': () => this.editor.commands.selectTextblockStart(),\r\n 'Ctrl-e': () => this.editor.commands.selectTextblockEnd(),\r\n };\r\n if (isiOS() || isMacOS()) {\r\n return macKeymap;\r\n }\r\n return pcKeymap;\r\n },\r\n addProseMirrorPlugins() {\r\n return [\r\n // With this plugin we check if the whole document was selected and deleted.\r\n // In this case we will additionally call `clearNodes()` to convert e.g. a heading\r\n // to a paragraph if necessary.\r\n // This is an alternative to ProseMirror's `AllSelection`, which doesn’t work well\r\n // with many other commands.\r\n new state.Plugin({\r\n key: new state.PluginKey('clearDocument'),\r\n appendTransaction: (transactions, oldState, newState) => {\r\n const docChanges = transactions.some(transaction => transaction.docChanged)\r\n && !oldState.doc.eq(newState.doc);\r\n if (!docChanges) {\r\n return;\r\n }\r\n const { empty, from, to } = oldState.selection;\r\n const allFrom = state.Selection.atStart(oldState.doc).from;\r\n const allEnd = state.Selection.atEnd(oldState.doc).to;\r\n const allWasSelected = from === allFrom && to === allEnd;\r\n if (empty || !allWasSelected) {\r\n return;\r\n }\r\n const isEmpty = newState.doc.textBetween(0, newState.doc.content.size, ' ', ' ').length === 0;\r\n if (!isEmpty) {\r\n return;\r\n }\r\n const tr = newState.tr;\r\n const state$1 = createChainableState({\r\n state: newState,\r\n transaction: tr,\r\n });\r\n const { commands } = new CommandManager({\r\n editor: this.editor,\r\n state: state$1,\r\n });\r\n commands.clearNodes();\r\n if (!tr.steps.length) {\r\n return;\r\n }\r\n return tr;\r\n },\r\n }),\r\n ];\r\n },\r\n});\n\nconst Tabindex = Extension.create({\r\n name: 'tabindex',\r\n addProseMirrorPlugins() {\r\n return [\r\n new state.Plugin({\r\n key: new state.PluginKey('tabindex'),\r\n props: {\r\n attributes: this.editor.isEditable ? { tabindex: '0' } : {},\r\n },\r\n }),\r\n ];\r\n },\r\n});\n\nvar extensions = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ClipboardTextSerializer: ClipboardTextSerializer,\n Commands: Commands,\n Editable: Editable,\n FocusEvents: FocusEvents,\n Keymap: Keymap,\n Tabindex: Tabindex\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: 1px !important;\n height: 1px !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) {\r\n const tiptapStyleTag = document.querySelector(`style[data-tiptap-style${suffix ? `-${suffix}` : ''}]`);\r\n if (tiptapStyleTag !== null) {\r\n return tiptapStyleTag;\r\n }\r\n const styleNode = document.createElement('style');\r\n if (nonce) {\r\n styleNode.setAttribute('nonce', nonce);\r\n }\r\n styleNode.setAttribute(`data-tiptap-style${suffix ? `-${suffix}` : ''}`, '');\r\n styleNode.innerHTML = style;\r\n document.getElementsByTagName('head')[0].appendChild(styleNode);\r\n return styleNode;\r\n}\n\nclass Editor extends EventEmitter {\r\n constructor(options = {}) {\r\n super();\r\n this.isFocused = false;\r\n this.extensionStorage = {};\r\n this.options = {\r\n element: document.createElement('div'),\r\n content: '',\r\n injectCSS: true,\r\n injectNonce: undefined,\r\n extensions: [],\r\n autofocus: false,\r\n editable: true,\r\n editorProps: {},\r\n parseOptions: {},\r\n enableInputRules: true,\r\n enablePasteRules: true,\r\n enableCoreExtensions: true,\r\n onBeforeCreate: () => null,\r\n onCreate: () => null,\r\n onUpdate: () => null,\r\n onSelectionUpdate: () => null,\r\n onTransaction: () => null,\r\n onFocus: () => null,\r\n onBlur: () => null,\r\n onDestroy: () => null,\r\n };\r\n this.isCapturingTransaction = false;\r\n this.capturedTransaction = null;\r\n this.setOptions(options);\r\n this.createExtensionManager();\r\n this.createCommandManager();\r\n this.createSchema();\r\n this.on('beforeCreate', this.options.onBeforeCreate);\r\n this.emit('beforeCreate', { editor: this });\r\n this.createView();\r\n this.injectCSS();\r\n this.on('create', this.options.onCreate);\r\n this.on('update', this.options.onUpdate);\r\n this.on('selectionUpdate', this.options.onSelectionUpdate);\r\n this.on('transaction', this.options.onTransaction);\r\n this.on('focus', this.options.onFocus);\r\n this.on('blur', this.options.onBlur);\r\n this.on('destroy', this.options.onDestroy);\r\n window.setTimeout(() => {\r\n if (this.isDestroyed) {\r\n return;\r\n }\r\n this.commands.focus(this.options.autofocus);\r\n this.emit('create', { editor: this });\r\n }, 0);\r\n }\r\n /**\r\n * Returns the editor storage.\r\n */\r\n get storage() {\r\n return this.extensionStorage;\r\n }\r\n /**\r\n * An object of all registered commands.\r\n */\r\n get commands() {\r\n return this.commandManager.commands;\r\n }\r\n /**\r\n * Create a command chain to call multiple commands at once.\r\n */\r\n chain() {\r\n return this.commandManager.chain();\r\n }\r\n /**\r\n * Check if a command or a command chain can be executed. Without executing it.\r\n */\r\n can() {\r\n return this.commandManager.can();\r\n }\r\n /**\r\n * Inject CSS styles.\r\n */\r\n injectCSS() {\r\n if (this.options.injectCSS && document) {\r\n this.css = createStyleTag(style, this.options.injectNonce);\r\n }\r\n }\r\n /**\r\n * Update editor options.\r\n *\r\n * @param options A list of options\r\n */\r\n setOptions(options = {}) {\r\n this.options = {\r\n ...this.options,\r\n ...options,\r\n };\r\n if (!this.view || !this.state || this.isDestroyed) {\r\n return;\r\n }\r\n if (this.options.editorProps) {\r\n this.view.setProps(this.options.editorProps);\r\n }\r\n this.view.updateState(this.state);\r\n }\r\n /**\r\n * Update editable state of the editor.\r\n */\r\n setEditable(editable, emitUpdate = true) {\r\n this.setOptions({ editable });\r\n if (emitUpdate) {\r\n this.emit('update', { editor: this, transaction: this.state.tr });\r\n }\r\n }\r\n /**\r\n * Returns whether the editor is editable.\r\n */\r\n get isEditable() {\r\n // since plugins are applied after creating the view\r\n // `editable` is always `true` for one tick.\r\n // that’s why we also have to check for `options.editable`\r\n return this.options.editable && this.view && this.view.editable;\r\n }\r\n /**\r\n * Returns the editor state.\r\n */\r\n get state() {\r\n return this.view.state;\r\n }\r\n /**\r\n * Register a ProseMirror plugin.\r\n *\r\n * @param plugin A ProseMirror plugin\r\n * @param handlePlugins Control how to merge the plugin into the existing plugins.\r\n */\r\n registerPlugin(plugin, handlePlugins) {\r\n const plugins = isFunction(handlePlugins)\r\n ? handlePlugins(plugin, [...this.state.plugins])\r\n : [...this.state.plugins, plugin];\r\n const state = this.state.reconfigure({ plugins });\r\n this.view.updateState(state);\r\n }\r\n /**\r\n * Unregister a ProseMirror plugin.\r\n *\r\n * @param nameOrPluginKey The plugins name\r\n */\r\n unregisterPlugin(nameOrPluginKey) {\r\n if (this.isDestroyed) {\r\n return;\r\n }\r\n // @ts-ignore\r\n const name = typeof nameOrPluginKey === 'string' ? `${nameOrPluginKey}$` : nameOrPluginKey.key;\r\n const state = this.state.reconfigure({\r\n // @ts-ignore\r\n plugins: this.state.plugins.filter(plugin => !plugin.key.startsWith(name)),\r\n });\r\n this.view.updateState(state);\r\n }\r\n /**\r\n * Creates an extension manager.\r\n */\r\n createExtensionManager() {\r\n const coreExtensions = this.options.enableCoreExtensions ? Object.values(extensions) : [];\r\n const allExtensions = [...coreExtensions, ...this.options.extensions].filter(extension => {\r\n return ['extension', 'node', 'mark'].includes(extension === null || extension === void 0 ? void 0 : extension.type);\r\n });\r\n this.extensionManager = new ExtensionManager(allExtensions, this);\r\n }\r\n /**\r\n * Creates an command manager.\r\n */\r\n createCommandManager() {\r\n this.commandManager = new CommandManager({\r\n editor: this,\r\n });\r\n }\r\n /**\r\n * Creates a ProseMirror schema.\r\n */\r\n createSchema() {\r\n this.schema = this.extensionManager.schema;\r\n }\r\n /**\r\n * Creates a ProseMirror view.\r\n */\r\n createView() {\r\n const doc = createDocument(this.options.content, this.schema, this.options.parseOptions);\r\n const selection = resolveFocusPosition(doc, this.options.autofocus);\r\n this.view = new view.EditorView(this.options.element, {\r\n ...this.options.editorProps,\r\n dispatchTransaction: this.dispatchTransaction.bind(this),\r\n state: state.EditorState.create({\r\n doc,\r\n selection: selection || undefined,\r\n }),\r\n });\r\n // `editor.view` is not yet available at this time.\r\n // Therefore we will add all plugins and node views directly afterwards.\r\n const newState = this.state.reconfigure({\r\n plugins: this.extensionManager.plugins,\r\n });\r\n this.view.updateState(newState);\r\n this.createNodeViews();\r\n this.prependClass();\r\n // Let’s store the editor instance in the DOM element.\r\n // So we’ll have access to it for tests.\r\n const dom = this.view.dom;\r\n dom.editor = this;\r\n }\r\n /**\r\n * Creates all node views.\r\n */\r\n createNodeViews() {\r\n this.view.setProps({\r\n nodeViews: this.extensionManager.nodeViews,\r\n });\r\n }\r\n /**\r\n * Prepend class name to element.\r\n */\r\n prependClass() {\r\n this.view.dom.className = `tiptap ${this.view.dom.className}`;\r\n }\r\n captureTransaction(fn) {\r\n this.isCapturingTransaction = true;\r\n fn();\r\n this.isCapturingTransaction = false;\r\n const tr = this.capturedTransaction;\r\n this.capturedTransaction = null;\r\n return tr;\r\n }\r\n /**\r\n * The callback over which to send transactions (state updates) produced by the view.\r\n *\r\n * @param transaction An editor state transaction\r\n */\r\n dispatchTransaction(transaction) {\r\n // if the editor / the view of the editor was destroyed\r\n // the transaction should not be dispatched as there is no view anymore.\r\n if (this.view.isDestroyed) {\r\n return;\r\n }\r\n if (this.isCapturingTransaction) {\r\n if (!this.capturedTransaction) {\r\n this.capturedTransaction = transaction;\r\n return;\r\n }\r\n transaction.steps.forEach(step => { var _a; return (_a = this.capturedTransaction) === null || _a === void 0 ? void 0 : _a.step(step); });\r\n return;\r\n }\r\n const state = this.state.apply(transaction);\r\n const selectionHasChanged = !this.state.selection.eq(state.selection);\r\n this.view.updateState(state);\r\n this.emit('transaction', {\r\n editor: this,\r\n transaction,\r\n });\r\n if (selectionHasChanged) {\r\n this.emit('selectionUpdate', {\r\n editor: this,\r\n transaction,\r\n });\r\n }\r\n const focus = transaction.getMeta('focus');\r\n const blur = transaction.getMeta('blur');\r\n if (focus) {\r\n this.emit('focus', {\r\n editor: this,\r\n event: focus.event,\r\n transaction,\r\n });\r\n }\r\n if (blur) {\r\n this.emit('blur', {\r\n editor: this,\r\n event: blur.event,\r\n transaction,\r\n });\r\n }\r\n if (!transaction.docChanged || transaction.getMeta('preventUpdate')) {\r\n return;\r\n }\r\n this.emit('update', {\r\n editor: this,\r\n transaction,\r\n });\r\n }\r\n /**\r\n * Get attributes of the currently selected node or mark.\r\n */\r\n getAttributes(nameOrType) {\r\n return getAttributes(this.state, nameOrType);\r\n }\r\n isActive(nameOrAttributes, attributesOrUndefined) {\r\n const name = typeof nameOrAttributes === 'string' ? nameOrAttributes : null;\r\n const attributes = typeof nameOrAttributes === 'string' ? attributesOrUndefined : nameOrAttributes;\r\n return isActive(this.state, name, attributes);\r\n }\r\n /**\r\n * Get the document as JSON.\r\n */\r\n getJSON() {\r\n return this.state.doc.toJSON();\r\n }\r\n /**\r\n * Get the document as HTML.\r\n */\r\n getHTML() {\r\n return getHTMLFromFragment(this.state.doc.content, this.schema);\r\n }\r\n /**\r\n * Get the document as text.\r\n */\r\n getText(options) {\r\n const { blockSeparator = '\\n\\n', textSerializers = {} } = options || {};\r\n return getText(this.state.doc, {\r\n blockSeparator,\r\n textSerializers: {\r\n ...getTextSerializersFromSchema(this.schema),\r\n ...textSerializers,\r\n },\r\n });\r\n }\r\n /**\r\n * Check if there is no content.\r\n */\r\n get isEmpty() {\r\n return isNodeEmpty(this.state.doc);\r\n }\r\n /**\r\n * Get the number of characters for the current document.\r\n *\r\n * @deprecated\r\n */\r\n getCharacterCount() {\r\n console.warn('[tiptap warn]: \"editor.getCharacterCount()\" is deprecated. Please use \"editor.storage.characterCount.characters()\" instead.');\r\n return this.state.doc.content.size - 2;\r\n }\r\n /**\r\n * Destroy the editor.\r\n */\r\n destroy() {\r\n this.emit('destroy');\r\n if (this.view) {\r\n this.view.destroy();\r\n }\r\n this.removeAllListeners();\r\n }\r\n /**\r\n * Check if the editor is already destroyed.\r\n */\r\n get isDestroyed() {\r\n var _a;\r\n // @ts-ignore\r\n return !((_a = this.view) === null || _a === void 0 ? void 0 : _a.docView);\r\n }\r\n}\n\n/**\r\n * Build an input rule that adds a mark when the\r\n * matched text is typed into it.\r\n */\r\nfunction markInputRule(config) {\r\n return new InputRule({\r\n find: config.find,\r\n handler: ({ state, range, match }) => {\r\n const attributes = callOrReturn(config.getAttributes, undefined, match);\r\n if (attributes === false || attributes === null) {\r\n return null;\r\n }\r\n const { tr } = state;\r\n const captureGroup = match[match.length - 1];\r\n const fullMatch = match[0];\r\n if (captureGroup) {\r\n const startSpaces = fullMatch.search(/\\S/);\r\n const textStart = range.from + fullMatch.indexOf(captureGroup);\r\n const textEnd = textStart + captureGroup.length;\r\n const excludedMarks = getMarksBetween(range.from, range.to, state.doc)\r\n .filter(item => {\r\n // @ts-ignore\r\n const excluded = item.mark.type.excluded;\r\n return excluded.find(type => type === config.type && type !== item.mark.type);\r\n })\r\n .filter(item => item.to > textStart);\r\n if (excludedMarks.length) {\r\n return null;\r\n }\r\n if (textEnd < range.to) {\r\n tr.delete(textEnd, range.to);\r\n }\r\n if (textStart > range.from) {\r\n tr.delete(range.from + startSpaces, textStart);\r\n }\r\n const markEnd = range.from + startSpaces + captureGroup.length;\r\n tr.addMark(range.from + startSpaces, markEnd, config.type.create(attributes || {}));\r\n tr.removeStoredMark(config.type);\r\n }\r\n },\r\n });\r\n}\n\n/**\r\n * Build an input rule that adds a node when the\r\n * matched text is typed into it.\r\n */\r\nfunction nodeInputRule(config) {\r\n return new InputRule({\r\n find: config.find,\r\n handler: ({ state, range, match }) => {\r\n const attributes = callOrReturn(config.getAttributes, undefined, match) || {};\r\n const { tr } = state;\r\n const start = range.from;\r\n let end = range.to;\r\n const newNode = config.type.create(attributes);\r\n if (match[1]) {\r\n const offset = match[0].lastIndexOf(match[1]);\r\n let matchStart = start + offset;\r\n if (matchStart > end) {\r\n matchStart = end;\r\n }\r\n else {\r\n end = matchStart + match[1].length;\r\n }\r\n // insert last typed character\r\n const lastChar = match[0][match[0].length - 1];\r\n tr.insertText(lastChar, start + match[0].length - 1);\r\n // insert node from input rule\r\n tr.replaceWith(matchStart, end, newNode);\r\n }\r\n else if (match[0]) {\r\n tr.insert(start - 1, config.type.create(attributes)).delete(tr.mapping.map(start), tr.mapping.map(end));\r\n }\r\n tr.scrollIntoView();\r\n },\r\n });\r\n}\n\n/**\r\n * Build an input rule that changes the type of a textblock when the\r\n * matched text is typed into it. When using a regular expresion you’ll\r\n * probably want the regexp to start with `^`, so that the pattern can\r\n * only occur at the start of a textblock.\r\n */\r\nfunction textblockTypeInputRule(config) {\r\n return new InputRule({\r\n find: config.find,\r\n handler: ({ state, range, match }) => {\r\n const $start = state.doc.resolve(range.from);\r\n const attributes = callOrReturn(config.getAttributes, undefined, match) || {};\r\n if (!$start.node(-1).canReplaceWith($start.index(-1), $start.indexAfter(-1), config.type)) {\r\n return null;\r\n }\r\n state.tr\r\n .delete(range.from, range.to)\r\n .setBlockType(range.from, range.from, config.type, attributes);\r\n },\r\n });\r\n}\n\n/**\r\n * Build an input rule that replaces text when the\r\n * matched text is typed into it.\r\n */\r\nfunction textInputRule(config) {\r\n return new InputRule({\r\n find: config.find,\r\n handler: ({ state, range, match }) => {\r\n let insert = config.replace;\r\n let start = range.from;\r\n const end = range.to;\r\n if (match[1]) {\r\n const offset = match[0].lastIndexOf(match[1]);\r\n insert += match[0].slice(offset + match[1].length);\r\n start += offset;\r\n const cutOff = start - end;\r\n if (cutOff > 0) {\r\n insert = match[0].slice(offset - cutOff, offset) + insert;\r\n start = end;\r\n }\r\n }\r\n state.tr.insertText(insert, start, end);\r\n },\r\n });\r\n}\n\n/**\r\n * Build an input rule for automatically wrapping a textblock when a\r\n * given string is typed. When using a regular expresion you’ll\r\n * probably want the regexp to start with `^`, so that the pattern can\r\n * only occur at the start of a textblock.\r\n *\r\n * `type` is the type of node to wrap in.\r\n *\r\n * By default, if there’s a node with the same type above the newly\r\n * wrapped node, the rule will try to join those\r\n * two nodes. You can pass a join predicate, which takes a regular\r\n * expression match and the node before the wrapped node, and can\r\n * return a boolean to indicate whether a join should happen.\r\n */\r\nfunction wrappingInputRule(config) {\r\n return new InputRule({\r\n find: config.find,\r\n handler: ({ state, range, match, chain, }) => {\r\n const attributes = callOrReturn(config.getAttributes, undefined, match) || {};\r\n const tr = state.tr.delete(range.from, range.to);\r\n const $start = tr.doc.resolve(range.from);\r\n const blockRange = $start.blockRange();\r\n const wrapping = blockRange && transform.findWrapping(blockRange, config.type, attributes);\r\n if (!wrapping) {\r\n return null;\r\n }\r\n tr.wrap(blockRange, wrapping);\r\n if (config.keepMarks && config.editor) {\r\n const { selection, storedMarks } = state;\r\n const { splittableMarks } = config.editor.extensionManager;\r\n const marks = storedMarks || (selection.$to.parentOffset && selection.$from.marks());\r\n if (marks) {\r\n const filteredMarks = marks.filter(mark => splittableMarks.includes(mark.type.name));\r\n tr.ensureMarks(filteredMarks);\r\n }\r\n }\r\n if (config.keepAttributes) {\r\n /** If the nodeType is `bulletList` or `orderedList` set the `nodeType` as `listItem` */\r\n const nodeType = config.type.name === 'bulletList' || config.type.name === 'orderedList' ? 'listItem' : 'taskList';\r\n chain().updateAttributes(nodeType, attributes).run();\r\n }\r\n const before = tr.doc.resolve(range.from - 1).nodeBefore;\r\n if (before\r\n && before.type === config.type\r\n && transform.canJoin(tr.doc, range.from - 1)\r\n && (!config.joinPredicate || config.joinPredicate(match, before))) {\r\n tr.join(range.from - 1);\r\n }\r\n },\r\n });\r\n}\n\nclass Mark {\r\n constructor(config = {}) {\r\n this.type = 'mark';\r\n this.name = 'mark';\r\n this.parent = null;\r\n this.child = null;\r\n this.config = {\r\n name: this.name,\r\n defaultOptions: {},\r\n };\r\n this.config = {\r\n ...this.config,\r\n ...config,\r\n };\r\n this.name = this.config.name;\r\n if (config.defaultOptions) {\r\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${this.name}\".`);\r\n }\r\n // TODO: remove `addOptions` fallback\r\n this.options = this.config.defaultOptions;\r\n if (this.config.addOptions) {\r\n this.options = callOrReturn(getExtensionField(this, 'addOptions', {\r\n name: this.name,\r\n }));\r\n }\r\n this.storage = callOrReturn(getExtensionField(this, 'addStorage', {\r\n name: this.name,\r\n options: this.options,\r\n })) || {};\r\n }\r\n static create(config = {}) {\r\n return new Mark(config);\r\n }\r\n configure(options = {}) {\r\n // return a new instance so we can use the same extension\r\n // with different calls of `configure`\r\n const extension = this.extend();\r\n extension.options = mergeDeep(this.options, options);\r\n extension.storage = callOrReturn(getExtensionField(extension, 'addStorage', {\r\n name: extension.name,\r\n options: extension.options,\r\n }));\r\n return extension;\r\n }\r\n extend(extendedConfig = {}) {\r\n const extension = new Mark(extendedConfig);\r\n extension.parent = this;\r\n this.child = extension;\r\n extension.name = extendedConfig.name ? extendedConfig.name : extension.parent.name;\r\n if (extendedConfig.defaultOptions) {\r\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${extension.name}\".`);\r\n }\r\n extension.options = callOrReturn(getExtensionField(extension, 'addOptions', {\r\n name: extension.name,\r\n }));\r\n extension.storage = callOrReturn(getExtensionField(extension, 'addStorage', {\r\n name: extension.name,\r\n options: extension.options,\r\n }));\r\n return extension;\r\n }\r\n static handleExit({ editor, mark }) {\r\n const { tr } = editor.state;\r\n const currentPos = editor.state.selection.$from;\r\n const isAtEnd = currentPos.pos === currentPos.end();\r\n if (isAtEnd) {\r\n const currentMarks = currentPos.marks();\r\n const isInMark = !!currentMarks.find(m => (m === null || m === void 0 ? void 0 : m.type.name) === mark.name);\r\n if (!isInMark) {\r\n return false;\r\n }\r\n const removeMark = currentMarks.find(m => (m === null || m === void 0 ? void 0 : m.type.name) === mark.name);\r\n if (removeMark) {\r\n tr.removeStoredMark(removeMark);\r\n }\r\n tr.insertText(' ', currentPos.pos);\r\n editor.view.dispatch(tr);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\n\nclass Node {\r\n constructor(config = {}) {\r\n this.type = 'node';\r\n this.name = 'node';\r\n this.parent = null;\r\n this.child = null;\r\n this.config = {\r\n name: this.name,\r\n defaultOptions: {},\r\n };\r\n this.config = {\r\n ...this.config,\r\n ...config,\r\n };\r\n this.name = this.config.name;\r\n if (config.defaultOptions) {\r\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${this.name}\".`);\r\n }\r\n // TODO: remove `addOptions` fallback\r\n this.options = this.config.defaultOptions;\r\n if (this.config.addOptions) {\r\n this.options = callOrReturn(getExtensionField(this, 'addOptions', {\r\n name: this.name,\r\n }));\r\n }\r\n this.storage = callOrReturn(getExtensionField(this, 'addStorage', {\r\n name: this.name,\r\n options: this.options,\r\n })) || {};\r\n }\r\n static create(config = {}) {\r\n return new Node(config);\r\n }\r\n configure(options = {}) {\r\n // return a new instance so we can use the same extension\r\n // with different calls of `configure`\r\n const extension = this.extend();\r\n extension.options = mergeDeep(this.options, options);\r\n extension.storage = callOrReturn(getExtensionField(extension, 'addStorage', {\r\n name: extension.name,\r\n options: extension.options,\r\n }));\r\n return extension;\r\n }\r\n extend(extendedConfig = {}) {\r\n const extension = new Node(extendedConfig);\r\n extension.parent = this;\r\n this.child = extension;\r\n extension.name = extendedConfig.name ? extendedConfig.name : extension.parent.name;\r\n if (extendedConfig.defaultOptions) {\r\n console.warn(`[tiptap warn]: BREAKING CHANGE: \"defaultOptions\" is deprecated. Please use \"addOptions\" instead. Found in extension: \"${extension.name}\".`);\r\n }\r\n extension.options = callOrReturn(getExtensionField(extension, 'addOptions', {\r\n name: extension.name,\r\n }));\r\n extension.storage = callOrReturn(getExtensionField(extension, 'addStorage', {\r\n name: extension.name,\r\n options: extension.options,\r\n }));\r\n return extension;\r\n }\r\n}\n\nfunction isAndroid() {\r\n return navigator.platform === 'Android' || /android/i.test(navigator.userAgent);\r\n}\n\nclass NodeView {\r\n constructor(component, props, options) {\r\n this.isDragging = false;\r\n this.component = component;\r\n this.editor = props.editor;\r\n this.options = {\r\n stopEvent: null,\r\n ignoreMutation: null,\r\n ...options,\r\n };\r\n this.extension = props.extension;\r\n this.node = props.node;\r\n this.decorations = props.decorations;\r\n this.getPos = props.getPos;\r\n this.mount();\r\n }\r\n mount() {\r\n // eslint-disable-next-line\r\n return;\r\n }\r\n get dom() {\r\n return this.editor.view.dom;\r\n }\r\n get contentDOM() {\r\n return null;\r\n }\r\n onDragStart(event) {\r\n var _a, _b, _c, _d, _e, _f, _g;\r\n const { view } = this.editor;\r\n const target = event.target;\r\n // get the drag handle element\r\n // `closest` is not available for text nodes so we may have to use its parent\r\n const dragHandle = target.nodeType === 3\r\n ? (_a = target.parentElement) === null || _a === void 0 ? void 0 : _a.closest('[data-drag-handle]')\r\n : target.closest('[data-drag-handle]');\r\n if (!this.dom || ((_b = this.contentDOM) === null || _b === void 0 ? void 0 : _b.contains(target)) || !dragHandle) {\r\n return;\r\n }\r\n let x = 0;\r\n let y = 0;\r\n // calculate offset for drag element if we use a different drag handle element\r\n if (this.dom !== dragHandle) {\r\n const domBox = this.dom.getBoundingClientRect();\r\n const handleBox = dragHandle.getBoundingClientRect();\r\n // In React, we have to go through nativeEvent to reach offsetX/offsetY.\r\n const offsetX = (_c = event.offsetX) !== null && _c !== void 0 ? _c : (_d = event.nativeEvent) === null || _d === void 0 ? void 0 : _d.offsetX;\r\n const offsetY = (_e = event.offsetY) !== null && _e !== void 0 ? _e : (_f = event.nativeEvent) === null || _f === void 0 ? void 0 : _f.offsetY;\r\n x = handleBox.x - domBox.x + offsetX;\r\n y = handleBox.y - domBox.y + offsetY;\r\n }\r\n (_g = event.dataTransfer) === null || _g === void 0 ? void 0 : _g.setDragImage(this.dom, x, y);\r\n // we need to tell ProseMirror that we want to move the whole node\r\n // so we create a NodeSelection\r\n const selection = state.NodeSelection.create(view.state.doc, this.getPos());\r\n const transaction = view.state.tr.setSelection(selection);\r\n view.dispatch(transaction);\r\n }\r\n stopEvent(event) {\r\n var _a;\r\n if (!this.dom) {\r\n return false;\r\n }\r\n if (typeof this.options.stopEvent === 'function') {\r\n return this.options.stopEvent({ event });\r\n }\r\n const target = event.target;\r\n const isInElement = this.dom.contains(target) && !((_a = this.contentDOM) === null || _a === void 0 ? void 0 : _a.contains(target));\r\n // any event from child nodes should be handled by ProseMirror\r\n if (!isInElement) {\r\n return false;\r\n }\r\n const isDragEvent = event.type.startsWith('drag');\r\n const isDropEvent = event.type === 'drop';\r\n const isInput = ['INPUT', 'BUTTON', 'SELECT', 'TEXTAREA'].includes(target.tagName) || target.isContentEditable;\r\n // any input event within node views should be ignored by ProseMirror\r\n if (isInput && !isDropEvent && !isDragEvent) {\r\n return true;\r\n }\r\n const { isEditable } = this.editor;\r\n const { isDragging } = this;\r\n const isDraggable = !!this.node.type.spec.draggable;\r\n const isSelectable = state.NodeSelection.isSelectable(this.node);\r\n const isCopyEvent = event.type === 'copy';\r\n const isPasteEvent = event.type === 'paste';\r\n const isCutEvent = event.type === 'cut';\r\n const isClickEvent = event.type === 'mousedown';\r\n // ProseMirror tries to drag selectable nodes\r\n // even if `draggable` is set to `false`\r\n // this fix prevents that\r\n if (!isDraggable && isSelectable && isDragEvent) {\r\n event.preventDefault();\r\n }\r\n if (isDraggable && isDragEvent && !isDragging) {\r\n event.preventDefault();\r\n return false;\r\n }\r\n // we have to store that dragging started\r\n if (isDraggable && isEditable && !isDragging && isClickEvent) {\r\n const dragHandle = target.closest('[data-drag-handle]');\r\n const isValidDragHandle = dragHandle && (this.dom === dragHandle || this.dom.contains(dragHandle));\r\n if (isValidDragHandle) {\r\n this.isDragging = true;\r\n document.addEventListener('dragend', () => {\r\n this.isDragging = false;\r\n }, { once: true });\r\n document.addEventListener('drop', () => {\r\n this.isDragging = false;\r\n }, { once: true });\r\n document.addEventListener('mouseup', () => {\r\n this.isDragging = false;\r\n }, { once: true });\r\n }\r\n }\r\n // these events are handled by prosemirror\r\n if (isDragging\r\n || isDropEvent\r\n || isCopyEvent\r\n || isPasteEvent\r\n || isCutEvent\r\n || (isClickEvent && isSelectable)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n ignoreMutation(mutation) {\r\n if (!this.dom || !this.contentDOM) {\r\n return true;\r\n }\r\n if (typeof this.options.ignoreMutation === 'function') {\r\n return this.options.ignoreMutation({ mutation });\r\n }\r\n // a leaf/atom node is like a black box for ProseMirror\r\n // and should be fully handled by the node view\r\n if (this.node.isLeaf || this.node.isAtom) {\r\n return true;\r\n }\r\n // ProseMirror should handle any selections\r\n if (mutation.type === 'selection') {\r\n return false;\r\n }\r\n // try to prevent a bug on iOS and Android that will break node views on enter\r\n // this is because ProseMirror can’t preventDispatch on enter\r\n // this will lead to a re-render of the node view on enter\r\n // see: https://github.com/ueberdosis/tiptap/issues/1214\r\n // see: https://github.com/ueberdosis/tiptap/issues/2534\r\n if (this.dom.contains(mutation.target)\r\n && mutation.type === 'childList'\r\n && (isiOS() || isAndroid())\r\n && this.editor.isFocused) {\r\n const changedNodes = [\r\n ...Array.from(mutation.addedNodes),\r\n ...Array.from(mutation.removedNodes),\r\n ];\r\n // we’ll check if every changed node is contentEditable\r\n // to make sure it’s probably mutated by ProseMirror\r\n if (changedNodes.every(node => node.isContentEditable)) {\r\n return false;\r\n }\r\n }\r\n // we will allow mutation contentDOM with attributes\r\n // so we can for example adding classes within our node view\r\n if (this.contentDOM === mutation.target && mutation.type === 'attributes') {\r\n return true;\r\n }\r\n // ProseMirror should handle any changes within contentDOM\r\n if (this.contentDOM.contains(mutation.target)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n updateAttributes(attributes) {\r\n this.editor.commands.command(({ tr }) => {\r\n const pos = this.getPos();\r\n tr.setNodeMarkup(pos, undefined, {\r\n ...this.node.attrs,\r\n ...attributes,\r\n });\r\n return true;\r\n });\r\n }\r\n deleteNode() {\r\n const from = this.getPos();\r\n const to = from + this.node.nodeSize;\r\n this.editor.commands.deleteRange({ from, to });\r\n }\r\n}\n\n/**\r\n * Build an paste rule that adds a mark when the\r\n * matched text is pasted into it.\r\n */\r\nfunction markPasteRule(config) {\r\n return new PasteRule({\r\n find: config.find,\r\n handler: ({ state, range, match, pasteEvent, }) => {\r\n const attributes = callOrReturn(config.getAttributes, undefined, match, pasteEvent);\r\n if (attributes === false || attributes === null) {\r\n return null;\r\n }\r\n const { tr } = state;\r\n const captureGroup = match[match.length - 1];\r\n const fullMatch = match[0];\r\n let markEnd = range.to;\r\n if (captureGroup) {\r\n const startSpaces = fullMatch.search(/\\S/);\r\n const textStart = range.from + fullMatch.indexOf(captureGroup);\r\n const textEnd = textStart + captureGroup.length;\r\n const excludedMarks = getMarksBetween(range.from, range.to, state.doc)\r\n .filter(item => {\r\n // @ts-ignore\r\n const excluded = item.mark.type.excluded;\r\n return excluded.find(type => type === config.type && type !== item.mark.type);\r\n })\r\n .filter(item => item.to > textStart);\r\n if (excludedMarks.length) {\r\n return null;\r\n }\r\n if (textEnd < range.to) {\r\n tr.delete(textEnd, range.to);\r\n }\r\n if (textStart > range.from) {\r\n tr.delete(range.from + startSpaces, textStart);\r\n }\r\n markEnd = range.from + startSpaces + captureGroup.length;\r\n tr.addMark(range.from + startSpaces, markEnd, config.type.create(attributes || {}));\r\n tr.removeStoredMark(config.type);\r\n }\r\n },\r\n });\r\n}\n\n// source: https://stackoverflow.com/a/6969486\r\nfunction escapeForRegEx(string) {\r\n return string.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\r\n}\n\nfunction isString(value) {\r\n return typeof value === 'string';\r\n}\n\n/**\r\n * Build an paste rule that adds a node when the\r\n * matched text is pasted into it.\r\n */\r\nfunction nodePasteRule(config) {\r\n return new PasteRule({\r\n find: config.find,\r\n handler({ match, chain, range, pasteEvent, }) {\r\n const attributes = callOrReturn(config.getAttributes, undefined, match, pasteEvent);\r\n if (attributes === false || attributes === null) {\r\n return null;\r\n }\r\n if (match.input) {\r\n chain().deleteRange(range).insertContentAt(range.from, {\r\n type: config.type.name,\r\n attrs: attributes,\r\n });\r\n }\r\n },\r\n });\r\n}\n\n/**\r\n * Build an paste rule that replaces text when the\r\n * matched text is pasted into it.\r\n */\r\nfunction textPasteRule(config) {\r\n return new PasteRule({\r\n find: config.find,\r\n handler: ({ state, range, match }) => {\r\n let insert = config.replace;\r\n let start = range.from;\r\n const end = range.to;\r\n if (match[1]) {\r\n const offset = match[0].lastIndexOf(match[1]);\r\n insert += match[0].slice(offset + match[1].length);\r\n start += offset;\r\n const cutOff = start - end;\r\n if (cutOff > 0) {\r\n insert = match[0].slice(offset - cutOff, offset) + insert;\r\n start = end;\r\n }\r\n }\r\n state.tr.insertText(insert, start, end);\r\n },\r\n });\r\n}\n\nclass Tracker {\r\n constructor(transaction) {\r\n this.transaction = transaction;\r\n this.currentStep = this.transaction.steps.length;\r\n }\r\n map(position) {\r\n let deleted = false;\r\n const mappedPosition = this.transaction.steps\r\n .slice(this.currentStep)\r\n .reduce((newPosition, step) => {\r\n const mapResult = step.getMap().mapResult(newPosition);\r\n if (mapResult.deleted) {\r\n deleted = true;\r\n }\r\n return mapResult.pos;\r\n }, position);\r\n return {\r\n position: mappedPosition,\r\n deleted,\r\n };\r\n }\r\n}\n\nexports.CommandManager = CommandManager;\nexports.Editor = Editor;\nexports.Extension = Extension;\nexports.InputRule = InputRule;\nexports.Mark = Mark;\nexports.Node = Node;\nexports.NodeView = NodeView;\nexports.PasteRule = PasteRule;\nexports.Tracker = Tracker;\nexports.callOrReturn = callOrReturn;\nexports.combineTransactionSteps = combineTransactionSteps;\nexports.createChainableState = createChainableState;\nexports.createDocument = createDocument;\nexports.createNodeFromContent = createNodeFromContent;\nexports.createStyleTag = createStyleTag;\nexports.defaultBlockAt = defaultBlockAt;\nexports.deleteProps = deleteProps;\nexports.elementFromString = elementFromString;\nexports.escapeForRegEx = escapeForRegEx;\nexports.extensions = extensions;\nexports.findChildren = findChildren;\nexports.findChildrenInRange = findChildrenInRange;\nexports.findDuplicates = findDuplicates;\nexports.findParentNode = findParentNode;\nexports.findParentNodeClosestToPos = findParentNodeClosestToPos;\nexports.fromString = fromString;\nexports.generateHTML = generateHTML;\nexports.generateJSON = generateJSON;\nexports.generateText = generateText;\nexports.getAttributes = getAttributes;\nexports.getAttributesFromExtensions = getAttributesFromExtensions;\nexports.getChangedRanges = getChangedRanges;\nexports.getDebugJSON = getDebugJSON;\nexports.getExtensionField = getExtensionField;\nexports.getHTMLFromFragment = getHTMLFromFragment;\nexports.getMarkAttributes = getMarkAttributes;\nexports.getMarkRange = getMarkRange;\nexports.getMarkType = getMarkType;\nexports.getMarksBetween = getMarksBetween;\nexports.getNodeAtPosition = getNodeAtPosition;\nexports.getNodeAttributes = getNodeAttributes;\nexports.getNodeType = getNodeType;\nexports.getRenderedAttributes = getRenderedAttributes;\nexports.getSchema = getSchema;\nexports.getSchemaByResolvedExtensions = getSchemaByResolvedExtensions;\nexports.getSchemaTypeByName = getSchemaTypeByName;\nexports.getSchemaTypeNameByName = getSchemaTypeNameByName;\nexports.getSplittedAttributes = getSplittedAttributes;\nexports.getText = getText;\nexports.getTextBetween = getTextBetween;\nexports.getTextContentFromNodes = getTextContentFromNodes;\nexports.getTextSerializersFromSchema = getTextSerializersFromSchema;\nexports.injectExtensionAttributesToParseRule = injectExtensionAttributesToParseRule;\nexports.inputRulesPlugin = inputRulesPlugin;\nexports.isActive = isActive;\nexports.isAtEndOfNode = isAtEndOfNode;\nexports.isAtStartOfNode = isAtStartOfNode;\nexports.isEmptyObject = isEmptyObject;\nexports.isExtensionRulesEnabled = isExtensionRulesEnabled;\nexports.isFunction = isFunction;\nexports.isList = isList;\nexports.isMacOS = isMacOS;\nexports.isMarkActive = isMarkActive;\nexports.isNodeActive = isNodeActive;\nexports.isNodeEmpty = isNodeEmpty;\nexports.isNodeSelection = isNodeSelection;\nexports.isNumber = isNumber;\nexports.isPlainObject = isPlainObject;\nexports.isRegExp = isRegExp;\nexports.isString = isString;\nexports.isTextSelection = isTextSelection;\nexports.isiOS = isiOS;\nexports.markInputRule = markInputRule;\nexports.markPasteRule = markPasteRule;\nexports.mergeAttributes = mergeAttributes;\nexports.mergeDeep = mergeDeep;\nexports.minMax = minMax;\nexports.nodeInputRule = nodeInputRule;\nexports.nodePasteRule = nodePasteRule;\nexports.objectIncludes = objectIncludes;\nexports.pasteRulesPlugin = pasteRulesPlugin;\nexports.posToDOMRect = posToDOMRect;\nexports.removeDuplicates = removeDuplicates;\nexports.resolveFocusPosition = resolveFocusPosition;\nexports.selectionToInsertionEnd = selectionToInsertionEnd;\nexports.splitExtensions = splitExtensions;\nexports.textInputRule = textInputRule;\nexports.textPasteRule = textPasteRule;\nexports.textblockTypeInputRule = textblockTypeInputRule;\nexports.wrappingInputRule = wrappingInputRule;\n//# sourceMappingURL=index.cjs.map\n"],"names":["Object","defineProperty","exports","value","state","__webpack_require__","view","keymap","model","transform","commands$1","schemaList","createChainableState","config","transaction","selection","doc","storedMarks","apply","bind","applyTransaction","filterTransaction","plugins","schema","reconfigure","toJSON","tr","CommandManager","constructor","props","editor","rawCommands","extensionManager","commands","customState","hasCustomState","buildProps","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","valueClasses","split","existingClasses","insertClasses","valueClass","includes","join","getRenderedAttributes","nodeOrMark","attrs","isFunction","callOrReturn","isEmptyObject","keys","length","fromString","match","Number","injectExtensionAttributesToParseRule","parseRule","style","getAttrs","node","oldAttributes","newAttributes","getAttribute","cleanUpSchemaItem","data","getSchemaByResolvedExtensions","_a","allAttributes","topNode","find","fields","e","extendNodeSchema","content","marks","group","inline","atom","selectable","draggable","code","defining","isolating","extensionAttribute","parseDOM","toDOM","HTMLAttributes","renderText","toText","extendMarkSchema","inclusive","excludes","spanning","mark","Schema","getSchemaTypeByName","isExtensionRulesEnabled","enabled","isArray","some","enabledExtension","getTextContentFromNodes","$from","maxMatch","textBefore","sliceEndPos","parentOffset","nodesBetween","Math","max","pos","index","_b","chunk","spec","call","textContent","slice","isRegExp","prototype","toString","InputRule","handler","inputRuleMatcherHandler","text","exec","inputRuleMatch","result","input","replaceWith","console","warn","run$1","from","to","rules","plugin","composing","resolve","nodeBefore","nodeAfter","matched","rule","range","steps","setMeta","inputRulesPlugin","Plugin","init","prev","selectionSet","docChanged","handleTextInput","handleDOMEvents","compositionend","setTimeout","$cursor","handleKeyDown","isInputRules","isNumber","PasteRule","pasteRuleMatcherHandler","matchAll","matches","pasteRuleMatch","pasteRulesPlugin","dragSourceElement","isPastedFromProseMirror","isDroppedFromProseMirror","pasteEvent","ClipboardEvent","dropEvent","DragEvent","handleDragstart","dom","parentElement","contains","target","window","addEventListener","destroy","removeEventListener","drop","paste","_view","html","clipboardData","getData","appendTransaction","transactions","oldState","isPaste","isDrop","findDiffStart","findDiffEnd","b","handlers","isTextblock","resolvedFrom","resolvedTo","min","size","textBetween","start","end","mapping","findDuplicates","Set","el","indexOf","ExtensionManager","splittableMarks","extensionStorage","onBeforeCreate","onCreate","onUpdate","onSelectionUpdate","onTransaction","onFocus","onBlur","onDestroy","resolvedExtensions","sort","flatten","duplicatedNames","addExtensions","flat","a","priorityA","priorityB","addCommands","reverse","inputRules","pasteRules","allPlugins","addKeyboardShortcuts","defaultBindings","exitable","ArrowRight","Mark","handleExit","bindings","shortcut","method","keyMapPlugin","addInputRules","enableInputRules","addPasteRules","enablePasteRules","addProseMirrorPlugins","proseMirrorPlugins","nodeViews","addNodeView","getPos","decorations","isPlainObject","getPrototypeOf","mergeDeep","source","output","assign","Extension","child","defaultOptions","addOptions","create","configure","extend","extendedConfig","getTextBetween","startNode","blockSeparator","textSerializers","separated","textSerializer","isBlock","isText","getTextSerializersFromSchema","ClipboardTextSerializer","PluginKey","clipboardTextSerializer","ranges","$to","objectIncludes","object1","object2","strict","test","findMarkInSet","getMarkRange","$pos","childAfter","offset","childBefore","startIndex","startPos","endIndex","endPos","nodeSize","isInSet","childCount","isMarkInSet","getMarkType","isTextSelection","TextSelection","minMax","resolveFocusPosition","position","selectionAtStart","Selection","atStart","selectionAtEnd","atEnd","minPos","maxPos","isiOS","navigator","platform","userAgent","document","elementFromString","wrappedValue","DOMParser","parseFromString","body","createNodeFromContent","parseOptions","Array","Fragment","fromArray","nodeFromJSON","error","parser","fromSchema","parseSlice","parse","selectionToInsertionEnd","startLen","bias","last","step","ReplaceStep","ReplaceAroundStep","maps","_from","_to","_newFrom","newTo","setSelection","near","isFragment","nodeOrFragment","startsWith","isMacOS","isNodeActive","typeOrName","empty","nodeRanges","relativeFrom","relativeTo","selectionRange","matchedNodeRanges","nodeRange","sum","getSchemaTypeNameByName","deleteProps","obj","propOrProps","newObj","prop","createDocument","getMarkAttributes","$head","markItem","defaultBlockAt","i","edgeCount","edge","hasRequiredAttrs","findParentNodeClosestToPos","predicate","depth","before","findParentNode","getHTMLFromFragment","fragment","documentFragment","DOMSerializer","serializeFragment","container","temporaryDocument","implementation","createHTMLDocument","createElement","appendChild","innerHTML","getSchema","getText","getNodeAttributes","nodeItem","getAttributes","schemaType","removeDuplicates","array","by","JSON","stringify","seen","hasOwnProperty","getMarksBetween","getSplittedAttributes","typeName","isMarkActive","markRanges","matchedRange","markRange","excludedRange","isActive","isList","isNodeEmpty","defaultContent","createAndFill","ensureMarks","filteredMarks","joinListBackwards","listType","list","nodeAt","canJoin","joinListForwards","after","freeze","__proto__","blur","requestAnimationFrame","isDestroyed","getSelection","removeAllRanges","clearContent","emitUpdate","setContent","clearNodes","$mappedFrom","$mappedTo","blockRange","targetLiftDepth","liftTarget","defaultType","contentMatchAt","setNodeMarkup","lift","createParagraphNear","cut","originRange","targetPos","state$1","contentSlice","deleteRange","newPos","insert","deleteCurrentNode","currentNode","$anchor","delete","scrollIntoView","deleteNode","deleteSelection","enter","keyboardShortcut","exitCode","extendMarkRange","newSelection","first","focus","delayedFocus","hasFocus","isSameSelection","eq","setStoredMarks","insertContent","insertContentAt","updateSelection","preserveWhitespace","isOnlyTextContent","isOnlyBlockContent","check","insertText","v","joinUp","joinDown","joinBackward","joinForward","joinItemBackward","point","joinPoint","joinItemForward","normalizeKeyName","alt","ctrl","shift","meta","parts","mod","KeyboardEvent","altKey","ctrlKey","metaKey","shiftKey","bubbles","cancelable","capturedTransaction","captureTransaction","someProp","f","newStep","maybeStep","liftEmptyBlock","liftListItem","newlineInCode","resetAttributes","nodeType","markType","addMark","selectAll","setTextSelection","selectNodeBackward","selectNodeForward","selectParentNode","selectTextblockEnd","selectTextblockStart","setMark","addStoredMark","trimmedFrom","trimmedTo","canSetMark","newMarkType","cursor","currentMarks","someNodeSupportsMark","inlineContent","allowsMarkType","_pos","isInline","parentAllowsMarkType","currentMarksAllowMarkType","otherMark","setNode","setBlockType","updatedState","setNodeSelection","NodeSelection","resolvedEnd","sinkListItem","splitBlock","keepMarks","canSplit","deflt","indexAfter","$first","canReplaceWith","splitListItem","sameParent","grandParent","wrap","depthBefore","d","copy","depthAfter","newNextTypeAttributes","nextType","contentMatch","append","replace","Slice","sel","n","newTypeAttributes","toggleList","listTypeOrName","itemTypeOrName","itemType","parentList","validContent","canWrapInList","wrapInList","toggleMark","extendEmptyMarkRange","unsetMark","toggleNode","toggleTypeOrName","toggleType","toggleWrap","wrapIn","undoInputRule","undoable","getState","toUndo","j","invert","docs","unsetAllMarks","removeMark","removeStoredMark","updateAttributes","Commands","Editable","editable","FocusEvents","isFocused","Keymap","handleBackspace","$parentPos","parentIsIsolating","parentPos","isAtStart","handleDelete","baseKeymap","Enter","Backspace","Delete","pcKeymap","macKeymap","newState","allFrom","allEnd","Tabindex","isEditable","tabindex","createStyleTag","nonce","suffix","tiptapStyleTag","querySelector","styleNode","setAttribute","getElementsByTagName","Editor","element","injectCSS","injectNonce","autofocus","editorProps","enableCoreExtensions","isCapturingTransaction","setOptions","createExtensionManager","createCommandManager","createSchema","createView","commandManager","css","setProps","updateState","setEditable","registerPlugin","handlePlugins","unregisterPlugin","nameOrPluginKey","allExtensions","values","EditorView","dispatchTransaction","EditorState","createNodeViews","prependClass","className","selectionHasChanged","nameOrAttributes","attributesOrUndefined","getJSON","getHTML","isEmpty","getCharacterCount","docView","currentPos","m","Node","NodeView","component","isDragging","stopEvent","ignoreMutation","mount","contentDOM","onDragStart","_c","_d","_e","_f","_g","dragHandle","closest","x","y","domBox","getBoundingClientRect","handleBox","offsetX","nativeEvent","offsetY","dataTransfer","setDragImage","isDragEvent","isDropEvent","isInput","tagName","isContentEditable","isDraggable","isSelectable","isCopyEvent","isPasteEvent","isCutEvent","isClickEvent","preventDefault","once","mutation","isLeaf","isAtom","changedNodes","addedNodes","removedNodes","Tracker","currentStep","deleted","newPosition","mapResult","getMap","combineTransactionSteps","oldDoc","transform$1","Transform","escapeForRegEx","string","findChildren","nodesWithPos","descendants","findChildrenInRange","generateHTML","contentNode","fromJSON","generateJSON","generateText","getChangedRanges","changes","stepMap","newStart","newEnd","oldStart","oldEnd","oldRange","newRange","simplifyChangedRanges","uniqueChanges","change","rest","_","otherChange","getDebugJSON","startOffset","increment","isTopNode","topNodeType","getNodeAtPosition","maxDepth","currentDepth","isAtEndOfNode","parentNode","isAtStartOfNode","isNodeSelection","isString","markInputRule","captureGroup","fullMatch","startSpaces","search","textStart","textEnd","excludedMarks","excluded","markEnd","markPasteRule","nodeInputRule","newNode","matchStart","lastIndexOf","lastChar","nodePasteRule","posToDOMRect","coordsAtPos","top","bottom","left","right","width","height","textInputRule","cutOff","textPasteRule","textblockTypeInputRule","$start","wrappingInputRule","wrapping","findWrapping","keepAttributes","joinPredicate"],"sourceRoot":""}