@bigbinary/neeto-editor 1.47.120 → 1.47.121
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Editor.js +60 -45
- package/dist/Editor.js.map +1 -1
- package/dist/EditorContent.js +3 -3
- package/dist/FormikEditor.js +8 -9
- package/dist/FormikEditor.js.map +1 -1
- package/dist/Menu.js +5 -7
- package/dist/Menu.js.map +1 -1
- package/dist/chunk-Bmhz4YEy.js +16777 -0
- package/dist/chunk-Bmhz4YEy.js.map +1 -0
- package/dist/{chunk-W5-WB6Fb.js → chunk-BwyS6si8.js} +3 -3
- package/dist/{chunk-W5-WB6Fb.js.map → chunk-BwyS6si8.js.map} +1 -1
- package/dist/{chunk-CBN5naeP.js → chunk-C5svTfyQ.js} +311 -146
- package/dist/chunk-C5svTfyQ.js.map +1 -0
- package/dist/{chunk-BmY70WOK.js → chunk-CHpkesFt.js} +10 -11
- package/dist/chunk-CHpkesFt.js.map +1 -0
- package/dist/{chunk-B0_4S6ol.js → chunk-COgPAsPy.js} +10 -11
- package/dist/chunk-COgPAsPy.js.map +1 -0
- package/dist/chunk-ChNzXvhJ.js +20357 -0
- package/dist/chunk-ChNzXvhJ.js.map +1 -0
- package/dist/{chunk-bG6hOjuU.js → chunk-CnsiyshR.js} +2 -2
- package/dist/{chunk-bG6hOjuU.js.map → chunk-CnsiyshR.js.map} +1 -1
- package/dist/{chunk-BR5ZkH7J.js → chunk-Qg4uQqj3.js} +2 -2
- package/dist/{chunk-BR5ZkH7J.js.map → chunk-Qg4uQqj3.js.map} +1 -1
- package/dist/{chunk-D_B4kuIc.js → chunk-aCTMceVU.js} +3 -3
- package/dist/{chunk-D_B4kuIc.js.map → chunk-aCTMceVU.js.map} +1 -1
- package/dist/{chunk-9TNlsObP.js → chunk-fDmcpgqx.js} +2 -2
- package/dist/{chunk-9TNlsObP.js.map → chunk-fDmcpgqx.js.map} +1 -1
- package/dist/cjs/Editor.cjs.js +109 -94
- package/dist/cjs/Editor.cjs.js.map +1 -1
- package/dist/cjs/EditorContent.cjs.js +3 -3
- package/dist/cjs/FormikEditor.cjs.js +8 -9
- package/dist/cjs/FormikEditor.cjs.js.map +1 -1
- package/dist/cjs/Menu.cjs.js +5 -7
- package/dist/cjs/Menu.cjs.js.map +1 -1
- package/dist/cjs/{chunk-4ILtbNxB.cjs.js → chunk-BGvf6C3z.cjs.js} +2 -2
- package/dist/cjs/{chunk-4ILtbNxB.cjs.js.map → chunk-BGvf6C3z.cjs.js.map} +1 -1
- package/dist/cjs/{chunk-De3nCFAF.cjs.js → chunk-BKvkHB8E.cjs.js} +2 -1
- package/dist/cjs/{chunk-De3nCFAF.cjs.js.map → chunk-BKvkHB8E.cjs.js.map} +1 -1
- package/dist/cjs/chunk-BXZTd0jZ.cjs.js +16844 -0
- package/dist/cjs/chunk-BXZTd0jZ.cjs.js.map +1 -0
- package/dist/cjs/{chunk-TrGAGew5.cjs.js → chunk-CesnwG-V.cjs.js} +3 -3
- package/dist/cjs/{chunk-TrGAGew5.cjs.js.map → chunk-CesnwG-V.cjs.js.map} +1 -1
- package/dist/cjs/chunk-DQoBksKy.cjs.js +20441 -0
- package/dist/cjs/chunk-DQoBksKy.cjs.js.map +1 -0
- package/dist/cjs/{chunk-DE_yHAbe.cjs.js → chunk-DS2JcxXk.cjs.js} +3 -3
- package/dist/cjs/{chunk-DE_yHAbe.cjs.js.map → chunk-DS2JcxXk.cjs.js.map} +1 -1
- package/dist/cjs/{chunk-JCA39oKB.cjs.js → chunk-DXsX8co9.cjs.js} +2 -2
- package/dist/cjs/{chunk-JCA39oKB.cjs.js.map → chunk-DXsX8co9.cjs.js.map} +1 -1
- package/dist/cjs/{chunk-BFfrwCXy.cjs.js → chunk-DoYRXWHQ.cjs.js} +10 -11
- package/dist/cjs/chunk-DoYRXWHQ.cjs.js.map +1 -0
- package/dist/cjs/{chunk-DNpQGCaK.cjs.js → chunk-DpqV12Vi.cjs.js} +10 -11
- package/dist/cjs/chunk-DpqV12Vi.cjs.js.map +1 -0
- package/dist/cjs/{chunk-eyfbjfPH.cjs.js → chunk-NqciyXN3.cjs.js} +312 -147
- package/dist/cjs/chunk-NqciyXN3.cjs.js.map +1 -0
- package/dist/cjs/index.cjs.js +9 -10
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/utils.cjs.js +5 -5
- package/dist/cjs/v2/Editor.cjs.js +94 -79
- package/dist/cjs/v2/Editor.cjs.js.map +1 -1
- package/dist/cjs/v2/EditorContent.cjs.js +3 -3
- package/dist/cjs/v2/FormikEditor.cjs.js +7 -8
- package/dist/cjs/v2/FormikEditor.cjs.js.map +1 -1
- package/dist/cjs/v2/Menu.cjs.js +4 -6
- package/dist/cjs/v2/Menu.cjs.js.map +1 -1
- package/dist/cjs/v2/index.cjs.js +10 -11
- package/dist/cjs/v2/index.cjs.js.map +1 -1
- package/dist/cjs/v2/utils.cjs.js +5 -5
- package/dist/editor-stats.html +1 -1
- package/dist/index.js +9 -10
- package/dist/index.js.map +1 -1
- package/dist/utils.js +5 -5
- package/dist/v2/Editor.js +60 -45
- package/dist/v2/Editor.js.map +1 -1
- package/dist/v2/EditorContent.js +3 -3
- package/dist/v2/FormikEditor.js +7 -8
- package/dist/v2/FormikEditor.js.map +1 -1
- package/dist/v2/Menu.js +4 -6
- package/dist/v2/Menu.js.map +1 -1
- package/dist/v2/index.js +10 -11
- package/dist/v2/index.js.map +1 -1
- package/dist/v2/utils.js +5 -5
- package/package.json +24 -31
- package/dist/chunk-B0_4S6ol.js.map +0 -1
- package/dist/chunk-BLXUWWgi.js +0 -15671
- package/dist/chunk-BLXUWWgi.js.map +0 -1
- package/dist/chunk-BmY70WOK.js.map +0 -1
- package/dist/chunk-CBN5naeP.js.map +0 -1
- package/dist/chunk-Dj7lS7Cs.js +0 -16980
- package/dist/chunk-Dj7lS7Cs.js.map +0 -1
- package/dist/cjs/chunk-BFfrwCXy.cjs.js.map +0 -1
- package/dist/cjs/chunk-Cv0ocaVh.cjs.js +0 -15726
- package/dist/cjs/chunk-Cv0ocaVh.cjs.js.map +0 -1
- package/dist/cjs/chunk-DNpQGCaK.cjs.js.map +0 -1
- package/dist/cjs/chunk-DOxH3Agq.cjs.js +0 -17048
- package/dist/cjs/chunk-DOxH3Agq.cjs.js.map +0 -1
- package/dist/cjs/chunk-eyfbjfPH.cjs.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk-Bmhz4YEy.js","sources":["../src/components/Editor/CustomExtensions/LinkKbArticles/constants.js","../src/components/Editor/CustomExtensions/LinkKbArticles/utils.js","../src/hooks/constants/query.js","../src/apis/neeto_kb.js","../src/hooks/reactQuery/kbArticle/useArticleFetching.js","../src/hooks/reactQuery/kbArticle/useDeletedArticles.js","../src/hooks/useEditorWarnings.js","../node_modules/@tiptap/extension-code/dist/index.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/mutex.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/math.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/trait/equality.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/object.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/set.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/array.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/function.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/diff.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/error.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/binary.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/webcrypto.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/random.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/map.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/string.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/conditions.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/storage.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/environment.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/number.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/encoding.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/buffer.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/prng.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/schema.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/dom.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/eventloop.js","../node_modules/@tiptap/y-tiptap/node_modules/lib0/hash/sha256.js","../node_modules/@tiptap/y-tiptap/dist/y-tiptap.js","../node_modules/@tiptap/extension-collaboration/dist/index.js","../node_modules/@tiptap/extension-collaboration-caret/dist/index.js","../node_modules/@tiptap/extension-document/dist/index.js","../node_modules/@tiptap/extension-highlight/dist/index.js","../node_modules/@tiptap/extension-list/dist/index.js","../node_modules/@tiptap/extension-table/dist/index.js","../node_modules/@tiptap/extension-text-style/dist/index.js","../node_modules/@tiptap/extension-underline/dist/index.js","../node_modules/prosemirror-dropcursor/dist/index.js","../node_modules/prosemirror-gapcursor/dist/index.js","../node_modules/rope-sequence/dist/index.js","../node_modules/prosemirror-history/dist/index.js","../node_modules/@tiptap/extensions/dist/index.js","../node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js","../node_modules/@tiptap/extension-blockquote/dist/index.js","../node_modules/@tiptap/extension-bold/dist/index.js","../node_modules/@tiptap/extension-code-block/dist/index.js","../node_modules/@tiptap/extension-hard-break/dist/index.js","../node_modules/@tiptap/extension-heading/dist/index.js","../node_modules/@tiptap/extension-horizontal-rule/dist/index.js","../node_modules/@tiptap/extension-italic/dist/index.js","../node_modules/linkifyjs/dist/linkify.mjs","../node_modules/@tiptap/extension-link/dist/index.js","../node_modules/@tiptap/extension-paragraph/dist/index.js","../node_modules/@tiptap/extension-strike/dist/index.js","../node_modules/@tiptap/extension-text/dist/index.js","../node_modules/@tiptap/starter-kit/dist/index.js","../node_modules/@tiptap/extension-code-block-lowlight/dist/index.js","../node_modules/@tiptap/suggestion/dist/index.js","../node_modules/re-resizable/lib/resizer.js","../node_modules/re-resizable/lib/index.js","../node_modules/@tiptap/extension-mention/dist/index.js","../src/utils/scrollhandler.js","../src/utils/fuzzySearch.js"],"sourcesContent":["import { globalProps } from \"neetocommons/initializers\";\n\nexport const NEETO_KB_ENDPOINT = globalProps?.kbUrl;\nexport const NEETO_KB_ARTICLES_URL = \"/api/v1/articles\";\nexport const NEETO_KB_CATEGORIES_URL = \"/api/v1/categories\";\n\nexport const MODE = { MODAL: \"modal\", SELECT: \"select\" };\n\nexport const MODAL_BOTTOM_MARGIN = 50;\nexport const MODAL_LEFT_OFFSET = 50;\nexport const MODAL_TOP_OFFSET = 22;\nexport const MODAL_TRANSFORM_Y = 52;\nexport const MODAL_TRANSFORM_X = 8;\n","import { decodeHtmlEntities } from \"src/utils/common\";\n\nimport { NEETO_KB_ENDPOINT } from \"./constants\";\n\nexport const buildArticleFullUrl = slug =>\n slug ? `${NEETO_KB_ENDPOINT}/articles/${slug}` : null;\n\nexport const createArticleOptions = articles =>\n articles.map(article => ({\n label: decodeHtmlEntities(article.title),\n value: article.id,\n data: { type: \"article\", ...article },\n }));\n\nexport const extractKbArticleIds = editor => {\n if (!editor) return [];\n\n const articleIds = [];\n const { doc } = editor.state;\n\n doc.descendants(node => {\n if (node.marks) {\n node.marks.forEach(mark => {\n if (\n mark.type.name === \"link\" &&\n mark.attrs[\"data-neeto-kb-article\"] === \"true\" &&\n mark.attrs[\"data-article-id\"]\n ) {\n articleIds.push(mark.attrs[\"data-article-id\"]);\n }\n });\n }\n });\n\n return [...new Set(articleIds)];\n};\n","export const QUERY_KEYS = { KB_ARTICLES: \"KB_ARTICLES\" };\n","import axios from \"axios\";\nimport { globalProps } from \"neetocommons/initializers\";\n\nimport {\n NEETO_KB_ENDPOINT,\n NEETO_KB_ARTICLES_URL,\n} from \"../components/Editor/CustomExtensions/LinkKbArticles/constants\";\n\nconst apiConfig = {\n baseURL: NEETO_KB_ENDPOINT,\n headers: { \"X-Neeto-API-Key\": globalProps?.organization?.apiKey },\n transformResponseCase: false,\n transformRequestCase: false,\n};\n\nconst fetchArticles = params =>\n axios.get(NEETO_KB_ARTICLES_URL, { ...apiConfig, params });\n\nconst neetoKbApi = { fetchArticles };\n\nexport default neetoKbApi;\n","import { useQuery } from \"@tanstack/react-query\";\n\nimport { QUERY_KEYS } from \"hooks/constants/query\";\nimport neetoKbApi from \"src/apis/neeto_kb\";\n\nconst useFetchKbArticles = ({\n searchTerm = \"\",\n reactQueryOptions = {},\n} = {}) => {\n const queryParams = searchTerm ? { search_term: searchTerm } : {};\n\n return useQuery({\n queryKey: [QUERY_KEYS.KB_ARTICLES, queryParams],\n queryFn: async () => {\n const response = await neetoKbApi.fetchArticles(queryParams);\n\n return response.articles || response.data?.articles || [];\n },\n ...reactQueryOptions,\n });\n};\n\nexport { useFetchKbArticles };\n","import { useState, useEffect } from \"react\";\n\nimport { isEmpty, pluck } from \"ramda\";\n\nimport { extractKbArticleIds } from \"src/components/Editor/CustomExtensions/LinkKbArticles/utils\";\n\nimport { useFetchKbArticles } from \"./useArticleFetching\";\n\nexport const useDeletedArticles = editor => {\n const [deletedArticleIds, setDeletedArticleIds] = useState(new Set());\n\n const { data: allArticles = [], isLoading: isCheckingDeleted } =\n useFetchKbArticles({\n searchTerm: \"\",\n reactQueryOptions: { enabled: !!editor },\n });\n\n const checkAllArticles = () => {\n if (!editor) return;\n\n const articleIdsInEditor = extractKbArticleIds(editor);\n if (isEmpty(articleIdsInEditor)) {\n setDeletedArticleIds(new Set());\n\n return;\n }\n\n const existingArticleIds = new Set(pluck(\"id\", allArticles));\n\n const deletedIds = new Set(\n articleIdsInEditor.filter(id => !existingArticleIds.has(id))\n );\n\n setDeletedArticleIds(deletedIds);\n };\n\n useEffect(() => {\n if (!editor || isEmpty(allArticles)) return;\n\n checkAllArticles();\n }, [allArticles, editor]);\n\n return {\n deletedArticleIds,\n isCheckingDeleted,\n isArticleDeleted: deletedArticleIds.has.bind(deletedArticleIds),\n checkAllArticles,\n };\n};\n","import { useEffect } from \"react\";\n\nimport { isNotPresent } from \"neetocist\";\n\nconst useEditorWarnings = ({ initialValue }) => {\n useEffect(() => {\n const isProduction = [process.env.RAILS_ENV, process.env.NODE_ENV].includes(\n \"production\"\n );\n if (!isProduction && isNotPresent(initialValue)) {\n // eslint-disable-next-line no-console\n console.warn(\n `[neeto-editor]: Empty value of \"initialValue\" in needtoEditor is expected to be \"<p></p>\" instead of \"${initialValue}\".`\n );\n }\n }, [initialValue]);\n};\n\nexport default useEditorWarnings;\n","// src/code.ts\nimport { Mark, markInputRule, markPasteRule, mergeAttributes } from \"@tiptap/core\";\nvar inputRegex = /(^|[^`])`([^`]+)`(?!`)$/;\nvar pasteRegex = /(^|[^`])`([^`]+)`(?!`)/g;\nvar inputRegexMatch = (text) => {\n const match = /`([^`]+)`(?!`)$/.exec(text);\n if (!match) {\n return null;\n }\n if (match.index > 0 && text[match.index - 1] === \"`\") {\n return null;\n }\n return {\n index: match.index,\n text: match[0],\n replaceWith: match[1]\n };\n};\nvar pasteRegexMatch = (text) => {\n const regex = /`([^`]+)`(?!`)/g;\n const matches = [];\n let match;\n while ((match = regex.exec(text)) !== null) {\n if (match.index > 0 && text[match.index - 1] === \"`\") {\n continue;\n }\n matches.push({\n index: match.index,\n text: match[0],\n replaceWith: match[1]\n });\n }\n return matches;\n};\nvar Code = Mark.create({\n name: \"code\",\n addOptions() {\n return {\n HTMLAttributes: {}\n };\n },\n excludes: \"_\",\n code: true,\n exitable: true,\n parseHTML() {\n return [{ tag: \"code\" }];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"code\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n markdownTokenName: \"codespan\",\n parseMarkdown: (token, helpers) => {\n return helpers.applyMark(\"code\", [{ type: \"text\", text: token.text || \"\" }]);\n },\n renderMarkdown: (node, h) => {\n if (!node.content) {\n return \"\";\n }\n return `\\`${h.renderChildren(node.content)}\\``;\n },\n addCommands() {\n return {\n setCode: () => ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleCode: () => ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n unsetCode: () => ({ commands }) => {\n return commands.unsetMark(this.name);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-e\": () => this.editor.commands.toggleCode()\n };\n },\n addInputRules() {\n return [\n markInputRule({\n find: inputRegexMatch,\n type: this.type\n })\n ];\n },\n addPasteRules() {\n return [\n markPasteRule({\n find: pasteRegexMatch,\n type: this.type\n })\n ];\n }\n});\n\n// src/index.ts\nvar index_default = Code;\nexport {\n Code,\n index_default as default,\n inputRegex,\n inputRegexMatch,\n pasteRegex,\n pasteRegexMatch\n};\n//# sourceMappingURL=index.js.map","/**\n * Mutual exclude for JavaScript.\n *\n * @module mutex\n */\n\n/**\n * @callback mutex\n * @param {function():void} cb Only executed when this mutex is not in the current stack\n * @param {function():void} [elseCb] Executed when this mutex is in the current stack\n */\n\n/**\n * Creates a mutual exclude function with the following property:\n *\n * ```js\n * const mutex = createMutex()\n * mutex(() => {\n * // This function is immediately executed\n * mutex(() => {\n * // This function is not executed, as the mutex is already active.\n * })\n * })\n * ```\n *\n * @return {mutex} A mutual exclude function\n * @public\n */\nexport const createMutex = () => {\n let token = true\n return (f, g) => {\n if (token) {\n token = false\n try {\n f()\n } finally {\n token = true\n }\n } else if (g !== undefined) {\n g()\n }\n }\n}\n","/**\n * Common Math expressions.\n *\n * @module math\n */\n\nexport const floor = Math.floor\nexport const ceil = Math.ceil\nexport const abs = Math.abs\nexport const imul = Math.imul\nexport const round = Math.round\nexport const log10 = Math.log10\nexport const log2 = Math.log2\nexport const log = Math.log\nexport const sqrt = Math.sqrt\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The sum of a and b\n */\nexport const add = (a, b) => a + b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The smaller element of a and b\n */\nexport const min = (a, b) => a < b ? a : b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The bigger element of a and b\n */\nexport const max = (a, b) => a > b ? a : b\n\nexport const isNaN = Number.isNaN\n\nexport const pow = Math.pow\n/**\n * Base 10 exponential function. Returns the value of 10 raised to the power of pow.\n *\n * @param {number} exp\n * @return {number}\n */\nexport const exp10 = exp => Math.pow(10, exp)\n\nexport const sign = Math.sign\n\n/**\n * Check whether n is negative, while considering the -0 edge case. While `-0 < 0` is false, this\n * function returns true for -0,-1,,.. and returns false for 0,1,2,...\n * @param {number} n\n * @return {boolean} Wether n is negative. This function also distinguishes between -0 and +0\n */\nexport const isNegativeZero = n => n !== 0 ? n < 0 : 1 / n < 0\n","export const EqualityTraitSymbol = Symbol('Equality')\n\n/**\n * @typedef {{ [EqualityTraitSymbol]:(other:EqualityTrait)=>boolean }} EqualityTrait\n */\n\n/**\n *\n * Utility function to compare any two objects.\n *\n * Note that it is expected that the first parameter is more specific than the latter one.\n *\n * @example js\n * class X { [traits.EqualityTraitSymbol] (other) { return other === this } }\n * class X2 { [traits.EqualityTraitSymbol] (other) { return other === this }, x2 () { return 2 } }\n * // this is fine\n * traits.equals(new X2(), new X())\n * // this is not, because the left type is less specific than the right one\n * traits.equals(new X(), new X2())\n *\n * @template {EqualityTrait} T\n * @param {NoInfer<T>} a\n * @param {T} b\n * @return {boolean}\n */\nexport const equals = (a, b) => a === b || !!a?.[EqualityTraitSymbol]?.(b) || false\n","import * as equalityTrait from './trait/equality.js'\n\n/**\n * Utility functions for working with EcmaScript objects.\n *\n * @module object\n */\n\n/**\n * @return {Object<string,any>} obj\n */\nexport const create = () => Object.create(null)\n\n/**\n * @param {any} o\n * @return {o is { [k:string]:any }}\n */\nexport const isObject = o => typeof o === 'object'\n\n/**\n * Object.assign\n */\nexport const assign = Object.assign\n\n/**\n * @param {Object<string,any>} obj\n */\nexport const keys = Object.keys\n\n/**\n * @template V\n * @param {{[key:string]: V}} obj\n * @return {Array<V>}\n */\nexport const values = Object.values\n\n/**\n * @template V\n * @param {{[k:string]:V}} obj\n * @param {function(V,string):any} f\n */\nexport const forEach = (obj, f) => {\n for (const key in obj) {\n f(obj[key], key)\n }\n}\n\n/**\n * @todo implement mapToArray & map\n *\n * @template R\n * @param {Object<string,any>} obj\n * @param {function(any,string):R} f\n * @return {Array<R>}\n */\nexport const map = (obj, f) => {\n const results = []\n for (const key in obj) {\n results.push(f(obj[key], key))\n }\n return results\n}\n\n/**\n * @deprecated use object.size instead\n * @param {Object<string,any>} obj\n * @return {number}\n */\nexport const length = obj => keys(obj).length\n\n/**\n * @param {Object<string,any>} obj\n * @return {number}\n */\nexport const size = obj => keys(obj).length\n\n/**\n * @template {{ [key:string|number|symbol]: any }} T\n * @param {T} obj\n * @param {(v:T[keyof T],k:keyof T)=>boolean} f\n * @return {boolean}\n */\nexport const some = (obj, f) => {\n for (const key in obj) {\n if (f(obj[key], key)) {\n return true\n }\n }\n return false\n}\n\n/**\n * @param {Object|null|undefined} obj\n */\nexport const isEmpty = obj => {\n // eslint-disable-next-line no-unreachable-loop\n for (const _k in obj) {\n return false\n }\n return true\n}\n\n/**\n * @template {{ [key:string|number|symbol]: any }} T\n * @param {T} obj\n * @param {(v:T[keyof T],k:keyof T)=>boolean} f\n * @return {boolean}\n */\nexport const every = (obj, f) => {\n for (const key in obj) {\n if (!f(obj[key], key)) {\n return false\n }\n }\n return true\n}\n\n/**\n * Calls `Object.prototype.hasOwnProperty`.\n *\n * @param {any} obj\n * @param {string|number|symbol} key\n * @return {boolean}\n */\nexport const hasProperty = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key)\n\n/**\n * @param {Object<string,any>} a\n * @param {Object<string,any>} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a === b || (size(a) === size(b) && every(a, (val, key) => (val !== undefined || hasProperty(b, key)) && equalityTrait.equals(b[key], val)))\n\n/**\n * Make an object immutable. This hurts performance and is usually not needed if you perform good\n * coding practices.\n */\nexport const freeze = Object.freeze\n\n/**\n * Make an object and all its children immutable.\n * This *really* hurts performance and is usually not needed if you perform good coding practices.\n *\n * @template {any} T\n * @param {T} o\n * @return {Readonly<T>}\n */\nexport const deepFreeze = (o) => {\n for (const key in o) {\n const c = o[key]\n if (typeof c === 'object' || typeof c === 'function') {\n deepFreeze(o[key])\n }\n }\n return freeze(o)\n}\n\n/**\n * Get object property. Create T if property is undefined and set T on object.\n *\n * @function\n * @template {object} KV\n * @template {keyof KV} [K=keyof KV]\n * @param {KV} o\n * @param {K} key\n * @param {() => KV[K]} createT\n * @return {KV[K]}\n */\nexport const setIfUndefined = (o, key, createT) => hasProperty(o, key) ? o[key] : (o[key] = createT())\n","/**\n * Utility module to work with sets.\n *\n * @module set\n */\n\nexport const create = () => new Set()\n\n/**\n * @template T\n * @param {Set<T>} set\n * @return {Array<T>}\n */\nexport const toArray = set => Array.from(set)\n\n/**\n * @template T\n * @param {Set<T>} set\n * @return {T|undefined}\n */\nexport const first = set => set.values().next().value\n\n/**\n * @template T\n * @param {Iterable<T>} entries\n * @return {Set<T>}\n */\nexport const from = entries => new Set(entries)\n","/**\n * Utility module to work with Arrays.\n *\n * @module array\n */\n\nimport * as set from './set.js'\n\n/**\n * Return the last element of an array. The element must exist\n *\n * @template L\n * @param {ArrayLike<L>} arr\n * @return {L}\n */\nexport const last = arr => arr[arr.length - 1]\n\n/**\n * @template C\n * @return {Array<C>}\n */\nexport const create = () => /** @type {Array<C>} */ ([])\n\n/**\n * @template D\n * @param {Array<D>} a\n * @return {Array<D>}\n */\nexport const copy = a => /** @type {Array<D>} */ (a.slice())\n\n/**\n * Append elements from src to dest\n *\n * @template M\n * @param {Array<M>} dest\n * @param {Array<M>} src\n */\nexport const appendTo = (dest, src) => {\n for (let i = 0; i < src.length; i++) {\n dest.push(src[i])\n }\n}\n\n/**\n * Transforms something array-like to an actual Array.\n *\n * @function\n * @template T\n * @param {ArrayLike<T>|Iterable<T>} arraylike\n * @return {T}\n */\nexport const from = Array.from\n\n/**\n * True iff condition holds on every element in the Array.\n *\n * @function\n * @template {ArrayLike<any>} ARR\n *\n * @param {ARR} arr\n * @param {ARR extends ArrayLike<infer S> ? ((value:S, index:number, arr:ARR) => boolean) : any} f\n * @return {boolean}\n */\nexport const every = (arr, f) => {\n for (let i = 0; i < arr.length; i++) {\n if (!f(arr[i], i, arr)) {\n return false\n }\n }\n return true\n}\n\n/**\n * True iff condition holds on some element in the Array.\n *\n * @function\n * @template {ArrayLike<any>} ARR\n *\n * @param {ARR} arr\n * @param {ARR extends ArrayLike<infer S> ? ((value:S, index:number, arr:ARR) => boolean) : never} f\n * @return {boolean}\n */\nexport const some = (arr, f) => {\n for (let i = 0; i < arr.length; i++) {\n if (f(arr[i], i, arr)) {\n return true\n }\n }\n return false\n}\n\n/**\n * @template ELEM\n *\n * @param {ArrayLike<ELEM>} a\n * @param {ArrayLike<ELEM>} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a.length === b.length && every(a, (item, index) => item === b[index])\n\n/**\n * @template ELEM\n * @param {Array<Array<ELEM>>} arr\n * @return {Array<ELEM>}\n */\nexport const flatten = arr => fold(arr, /** @type {Array<ELEM>} */ ([]), (acc, val) => acc.concat(val))\n\n/**\n * @template T\n * @param {number} len\n * @param {function(number, Array<T>):T} f\n * @return {Array<T>}\n */\nexport const unfold = (len, f) => {\n const array = new Array(len)\n for (let i = 0; i < len; i++) {\n array[i] = f(i, array)\n }\n return array\n}\n\n/**\n * @template T\n * @template RESULT\n * @param {Array<T>} arr\n * @param {RESULT} seed\n * @param {function(RESULT, T, number):RESULT} folder\n */\nexport const fold = (arr, seed, folder) => arr.reduce(folder, seed)\n\nexport const isArray = Array.isArray\n\n/**\n * @template T\n * @param {Array<T>} arr\n * @return {Array<T>}\n */\nexport const unique = arr => from(set.from(arr))\n\n/**\n * @template T\n * @template M\n * @param {ArrayLike<T>} arr\n * @param {function(T):M} mapper\n * @return {Array<T>}\n */\nexport const uniqueBy = (arr, mapper) => {\n /**\n * @type {Set<M>}\n */\n const happened = set.create()\n /**\n * @type {Array<T>}\n */\n const result = []\n for (let i = 0; i < arr.length; i++) {\n const el = arr[i]\n const mapped = mapper(el)\n if (!happened.has(mapped)) {\n happened.add(mapped)\n result.push(el)\n }\n }\n return result\n}\n\n/**\n * @template {ArrayLike<any>} ARR\n * @template {function(ARR extends ArrayLike<infer T> ? T : never, number, ARR):any} MAPPER\n * @param {ARR} arr\n * @param {MAPPER} mapper\n * @return {Array<MAPPER extends function(...any): infer M ? M : never>}\n */\nexport const map = (arr, mapper) => {\n /**\n * @type {Array<any>}\n */\n const res = Array(arr.length)\n for (let i = 0; i < arr.length; i++) {\n res[i] = mapper(/** @type {any} */ (arr[i]), i, /** @type {any} */ (arr))\n }\n return /** @type {any} */ (res)\n}\n\n/**\n * This function bubble-sorts a single item to the correct position. The sort happens in-place and\n * might be useful to ensure that a single item is at the correct position in an otherwise sorted\n * array.\n *\n * @example\n * const arr = [3, 2, 5]\n * arr.sort((a, b) => a - b)\n * arr // => [2, 3, 5]\n * arr.splice(1, 0, 7)\n * array.bubbleSortItem(arr, 1, (a, b) => a - b)\n * arr // => [2, 3, 5, 7]\n *\n * @template T\n * @param {Array<T>} arr\n * @param {number} i\n * @param {(a:T,b:T) => number} compareFn\n */\nexport const bubblesortItem = (arr, i, compareFn) => {\n const n = arr[i]\n let j = i\n // try to sort to the right\n while (j + 1 < arr.length && compareFn(n, arr[j + 1]) > 0) {\n arr[j] = arr[j + 1]\n arr[++j] = n\n }\n if (i === j && j > 0) { // no change yet\n // sort to the left\n while (j > 0 && compareFn(arr[j - 1], n) > 0) {\n arr[j] = arr[j - 1]\n arr[--j] = n\n }\n }\n return j\n}\n","/**\n * Common functions and function call helpers.\n *\n * @module function\n */\n\nimport * as array from './array.js'\nimport * as object from './object.js'\nimport * as equalityTrait from './trait/equality.js'\n\n/**\n * Calls all functions in `fs` with args. Only throws after all functions were called.\n *\n * @param {Array<function>} fs\n * @param {Array<any>} args\n */\nexport const callAll = (fs, args, i = 0) => {\n try {\n for (; i < fs.length; i++) {\n fs[i](...args)\n }\n } finally {\n if (i < fs.length) {\n callAll(fs, args, i + 1)\n }\n }\n}\n\nexport const nop = () => {}\n\n/**\n * @template T\n * @param {function():T} f\n * @return {T}\n */\nexport const apply = f => f()\n\n/**\n * @template A\n *\n * @param {A} a\n * @return {A}\n */\nexport const id = a => a\n\n/**\n * @template T\n *\n * @param {T} a\n * @param {T} b\n * @return {boolean}\n */\nexport const equalityStrict = (a, b) => a === b\n\n/**\n * @template T\n *\n * @param {Array<T>|object} a\n * @param {Array<T>|object} b\n * @return {boolean}\n */\nexport const equalityFlat = (a, b) => a === b || (a != null && b != null && a.constructor === b.constructor && ((array.isArray(a) && array.equalFlat(a, /** @type {Array<T>} */ (b))) || (typeof a === 'object' && object.equalFlat(a, b))))\n\n/* c8 ignore start */\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nexport const equalityDeep = (a, b) => {\n if (a === b) {\n return true\n }\n if (a == null || b == null || (a.constructor !== b.constructor && (a.constructor || Object) !== (b.constructor || Object))) {\n return false\n }\n if (a[equalityTrait.EqualityTraitSymbol] != null) {\n return a[equalityTrait.EqualityTraitSymbol](b)\n }\n switch (a.constructor) {\n case ArrayBuffer:\n a = new Uint8Array(a)\n b = new Uint8Array(b)\n // eslint-disable-next-line no-fallthrough\n case Uint8Array: {\n if (a.byteLength !== b.byteLength) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false\n }\n }\n break\n }\n case Set: {\n if (a.size !== b.size) {\n return false\n }\n for (const value of a) {\n if (!b.has(value)) {\n return false\n }\n }\n break\n }\n case Map: {\n if (a.size !== b.size) {\n return false\n }\n for (const key of a.keys()) {\n if (!b.has(key) || !equalityDeep(a.get(key), b.get(key))) {\n return false\n }\n }\n break\n }\n case undefined:\n case Object:\n if (object.size(a) !== object.size(b)) {\n return false\n }\n for (const key in a) {\n if (!object.hasProperty(a, key) || !equalityDeep(a[key], b[key])) {\n return false\n }\n }\n break\n case Array:\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i < a.length; i++) {\n if (!equalityDeep(a[i], b[i])) {\n return false\n }\n }\n break\n default:\n return false\n }\n return true\n}\n\n/**\n * @template V\n * @template {V} OPTS\n *\n * @param {V} value\n * @param {Array<OPTS>} options\n */\n// @ts-ignore\nexport const isOneOf = (value, options) => options.includes(value)\n/* c8 ignore stop */\n\nexport const isArray = array.isArray\n\n/**\n * @param {any} s\n * @return {s is String}\n */\nexport const isString = (s) => s && s.constructor === String\n\n/**\n * @param {any} n\n * @return {n is Number}\n */\nexport const isNumber = n => n != null && n.constructor === Number\n\n/**\n * @template {abstract new (...args: any) => any} TYPE\n * @param {any} n\n * @param {TYPE} T\n * @return {n is InstanceType<TYPE>}\n */\nexport const is = (n, T) => n && n.constructor === T\n\n/**\n * @template {abstract new (...args: any) => any} TYPE\n * @param {TYPE} T\n */\nexport const isTemplate = (T) =>\n /**\n * @param {any} n\n * @return {n is InstanceType<TYPE>}\n **/\n n => n && n.constructor === T\n","/**\n * Efficient diffs.\n *\n * @module diff\n */\n\nimport { equalityStrict } from './function.js'\n\n/**\n * A SimpleDiff describes a change on a String.\n *\n * ```js\n * console.log(a) // the old value\n * console.log(b) // the updated value\n * // Apply changes of diff (pseudocode)\n * a.remove(diff.index, diff.remove) // Remove `diff.remove` characters\n * a.insert(diff.index, diff.insert) // Insert `diff.insert`\n * a === b // values match\n * ```\n *\n * @template {string|Array<any>} T\n * @typedef {Object} SimpleDiff\n * @property {Number} index The index where changes were applied\n * @property {Number} remove The number of characters to delete starting\n * at `index`.\n * @property {T} insert The new text to insert at `index` after applying\n */\n\nconst highSurrogateRegex = /[\\uD800-\\uDBFF]/\nconst lowSurrogateRegex = /[\\uDC00-\\uDFFF]/\n\n/**\n * Create a diff between two strings. This diff implementation is highly\n * efficient, but not very sophisticated.\n *\n * @function\n *\n * @param {string} a The old version of the string\n * @param {string} b The updated version of the string\n * @return {SimpleDiff<string>} The diff description.\n */\nexport const simpleDiffString = (a, b) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n while (left < a.length && left < b.length && a[left] === b[left]) {\n left++\n }\n // If the last same character is a high surrogate, we need to rollback to the previous character\n if (left > 0 && highSurrogateRegex.test(a[left - 1])) left--\n while (right + left < a.length && right + left < b.length && a[a.length - right - 1] === b[b.length - right - 1]) {\n right++\n }\n // If the last same character is a low surrogate, we need to rollback to the previous character\n if (right > 0 && lowSurrogateRegex.test(a[a.length - right])) right--\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n\n/**\n * @todo Remove in favor of simpleDiffString\n * @deprecated\n */\nexport const simpleDiff = simpleDiffString\n\n/**\n * Create a diff between two arrays. This diff implementation is highly\n * efficient, but not very sophisticated.\n *\n * Note: This is basically the same function as above. Another function was created so that the runtime\n * can better optimize these function calls.\n *\n * @function\n * @template T\n *\n * @param {Array<T>} a The old version of the array\n * @param {Array<T>} b The updated version of the array\n * @param {function(T, T):boolean} [compare]\n * @return {SimpleDiff<Array<T>>} The diff description.\n */\nexport const simpleDiffArray = (a, b, compare = equalityStrict) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n while (left < a.length && left < b.length && compare(a[left], b[left])) {\n left++\n }\n while (right + left < a.length && right + left < b.length && compare(a[a.length - right - 1], b[b.length - right - 1])) {\n right++\n }\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n\n/**\n * Diff text and try to diff at the current cursor position.\n *\n * @param {string} a\n * @param {string} b\n * @param {number} cursor This should refer to the current left cursor-range position\n */\nexport const simpleDiffStringWithCursor = (a, b, cursor) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n // Iterate left to the right until we find a changed character\n // First iteration considers the current cursor position\n while (\n left < a.length &&\n left < b.length &&\n a[left] === b[left] &&\n left < cursor\n ) {\n left++\n }\n // If the last same character is a high surrogate, we need to rollback to the previous character\n if (left > 0 && highSurrogateRegex.test(a[left - 1])) left--\n // Iterate right to the left until we find a changed character\n while (\n right + left < a.length &&\n right + left < b.length &&\n a[a.length - right - 1] === b[b.length - right - 1]\n ) {\n right++\n }\n // If the last same character is a low surrogate, we need to rollback to the previous character\n if (right > 0 && lowSurrogateRegex.test(a[a.length - right])) right--\n // Try to iterate left further to the right without caring about the current cursor position\n while (\n right + left < a.length &&\n right + left < b.length &&\n a[left] === b[left]\n ) {\n left++\n }\n if (left > 0 && highSurrogateRegex.test(a[left - 1])) left--\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n","/**\n * Error helpers.\n *\n * @module error\n */\n\n/**\n * @param {string} s\n * @return {Error}\n */\n/* c8 ignore next */\nexport const create = s => new Error(s)\n\n/**\n * @throws {Error}\n * @return {never}\n */\n/* c8 ignore next 3 */\nexport const methodUnimplemented = () => {\n throw create('Method unimplemented')\n}\n\n/**\n * @throws {Error}\n * @return {never}\n */\n/* c8 ignore next 3 */\nexport const unexpectedCase = () => {\n throw create('Unexpected case')\n}\n\n/**\n * @param {boolean} property\n * @return {asserts property is true}\n */\nexport const assert = property => { if (!property) throw create('Assert failed') }\n","/* eslint-env browser */\n\n/**\n * Binary data constants.\n *\n * @module binary\n */\n\n/**\n * n-th bit activated.\n *\n * @type {number}\n */\nexport const BIT1 = 1\nexport const BIT2 = 2\nexport const BIT3 = 4\nexport const BIT4 = 8\nexport const BIT5 = 16\nexport const BIT6 = 32\nexport const BIT7 = 64\nexport const BIT8 = 128\nexport const BIT9 = 256\nexport const BIT10 = 512\nexport const BIT11 = 1024\nexport const BIT12 = 2048\nexport const BIT13 = 4096\nexport const BIT14 = 8192\nexport const BIT15 = 16384\nexport const BIT16 = 32768\nexport const BIT17 = 65536\nexport const BIT18 = 1 << 17\nexport const BIT19 = 1 << 18\nexport const BIT20 = 1 << 19\nexport const BIT21 = 1 << 20\nexport const BIT22 = 1 << 21\nexport const BIT23 = 1 << 22\nexport const BIT24 = 1 << 23\nexport const BIT25 = 1 << 24\nexport const BIT26 = 1 << 25\nexport const BIT27 = 1 << 26\nexport const BIT28 = 1 << 27\nexport const BIT29 = 1 << 28\nexport const BIT30 = 1 << 29\nexport const BIT31 = 1 << 30\nexport const BIT32 = 1 << 31\n\n/**\n * First n bits activated.\n *\n * @type {number}\n */\nexport const BITS0 = 0\nexport const BITS1 = 1\nexport const BITS2 = 3\nexport const BITS3 = 7\nexport const BITS4 = 15\nexport const BITS5 = 31\nexport const BITS6 = 63\nexport const BITS7 = 127\nexport const BITS8 = 255\nexport const BITS9 = 511\nexport const BITS10 = 1023\nexport const BITS11 = 2047\nexport const BITS12 = 4095\nexport const BITS13 = 8191\nexport const BITS14 = 16383\nexport const BITS15 = 32767\nexport const BITS16 = 65535\nexport const BITS17 = BIT18 - 1\nexport const BITS18 = BIT19 - 1\nexport const BITS19 = BIT20 - 1\nexport const BITS20 = BIT21 - 1\nexport const BITS21 = BIT22 - 1\nexport const BITS22 = BIT23 - 1\nexport const BITS23 = BIT24 - 1\nexport const BITS24 = BIT25 - 1\nexport const BITS25 = BIT26 - 1\nexport const BITS26 = BIT27 - 1\nexport const BITS27 = BIT28 - 1\nexport const BITS28 = BIT29 - 1\nexport const BITS29 = BIT30 - 1\nexport const BITS30 = BIT31 - 1\n/**\n * @type {number}\n */\nexport const BITS31 = 0x7FFFFFFF\n/**\n * @type {number}\n */\nexport const BITS32 = 0xFFFFFFFF\n","/* eslint-env browser */\n\nexport const subtle = crypto.subtle\nexport const getRandomValues = crypto.getRandomValues.bind(crypto)\n","/**\n * Isomorphic module for true random numbers / buffers / uuids.\n *\n * Attention: falls back to Math.random if the browser does not support crypto.\n *\n * @module random\n */\n\nimport * as math from './math.js'\nimport * as binary from './binary.js'\nimport { getRandomValues } from 'lib0/webcrypto'\n\nexport const rand = Math.random\n\nexport const uint32 = () => getRandomValues(new Uint32Array(1))[0]\n\nexport const uint53 = () => {\n const arr = getRandomValues(new Uint32Array(8))\n return (arr[0] & binary.BITS21) * (binary.BITS32 + 1) + (arr[1] >>> 0)\n}\n\n/**\n * @template T\n * @param {Array<T>} arr\n * @return {T}\n */\nexport const oneOf = arr => arr[math.floor(rand() * arr.length)]\n\n// @ts-ignore\nconst uuidv4Template = [1e7] + -1e3 + -4e3 + -8e3 + -1e11\n\n/**\n * @return {string}\n */\nexport const uuidv4 = () => uuidv4Template.replace(/[018]/g, /** @param {number} c */ c =>\n (c ^ uint32() & 15 >> c / 4).toString(16)\n)\n","/**\n * Utility module to work with key-value stores.\n *\n * @module map\n */\n\n/**\n * @template K\n * @template V\n * @typedef {Map<K,V>} GlobalMap\n */\n\n/**\n * Creates a new Map instance.\n *\n * @function\n * @return {Map<any, any>}\n *\n * @function\n */\nexport const create = () => new Map()\n\n/**\n * Copy a Map object into a fresh Map object.\n *\n * @function\n * @template K,V\n * @param {Map<K,V>} m\n * @return {Map<K,V>}\n */\nexport const copy = m => {\n const r = create()\n m.forEach((v, k) => { r.set(k, v) })\n return r\n}\n\n/**\n * Get map property. Create T if property is undefined and set T on map.\n *\n * ```js\n * const listeners = map.setIfUndefined(events, 'eventName', set.create)\n * listeners.add(listener)\n * ```\n *\n * @function\n * @template {Map<any, any>} MAP\n * @template {MAP extends Map<any,infer V> ? function():V : unknown} CF\n * @param {MAP} map\n * @param {MAP extends Map<infer K,any> ? K : unknown} key\n * @param {CF} createT\n * @return {ReturnType<CF>}\n */\nexport const setIfUndefined = (map, key, createT) => {\n let set = map.get(key)\n if (set === undefined) {\n map.set(key, set = createT())\n }\n return set\n}\n\n/**\n * Creates an Array and populates it with the content of all key-value pairs using the `f(value, key)` function.\n *\n * @function\n * @template K\n * @template V\n * @template R\n * @param {Map<K,V>} m\n * @param {function(V,K):R} f\n * @return {Array<R>}\n */\nexport const map = (m, f) => {\n const res = []\n for (const [key, value] of m) {\n res.push(f(value, key))\n }\n return res\n}\n\n/**\n * Tests whether any key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @todo should rename to some - similarly to Array.some\n *\n * @function\n * @template K\n * @template V\n * @param {Map<K,V>} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const any = (m, f) => {\n for (const [key, value] of m) {\n if (f(value, key)) {\n return true\n }\n }\n return false\n}\n\n/**\n * Tests whether all key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @function\n * @template K\n * @template V\n * @param {Map<K,V>} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const all = (m, f) => {\n for (const [key, value] of m) {\n if (!f(value, key)) {\n return false\n }\n }\n return true\n}\n","import * as array from './array.js'\n\n/**\n * Utility module to work with strings.\n *\n * @module string\n */\n\nexport const fromCharCode = String.fromCharCode\nexport const fromCodePoint = String.fromCodePoint\n\n/**\n * The largest utf16 character.\n * Corresponds to Uint8Array([255, 255]) or charcodeof(2x2^8)\n */\nexport const MAX_UTF16_CHARACTER = fromCharCode(65535)\n\n/**\n * @param {string} s\n * @return {string}\n */\nconst toLowerCase = s => s.toLowerCase()\n\nconst trimLeftRegex = /^\\s*/g\n\n/**\n * @param {string} s\n * @return {string}\n */\nexport const trimLeft = s => s.replace(trimLeftRegex, '')\n\nconst fromCamelCaseRegex = /([A-Z])/g\n\n/**\n * @param {string} s\n * @param {string} separator\n * @return {string}\n */\nexport const fromCamelCase = (s, separator) => trimLeft(s.replace(fromCamelCaseRegex, match => `${separator}${toLowerCase(match)}`))\n\n/**\n * Compute the utf8ByteLength\n * @param {string} str\n * @return {number}\n */\nexport const utf8ByteLength = str => unescape(encodeURIComponent(str)).length\n\n/**\n * @param {string} str\n * @return {Uint8Array<ArrayBuffer>}\n */\nexport const _encodeUtf8Polyfill = str => {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n const buf = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n buf[i] = /** @type {number} */ (encodedString.codePointAt(i))\n }\n return buf\n}\n\n/* c8 ignore next */\nexport const utf8TextEncoder = /** @type {TextEncoder} */ (typeof TextEncoder !== 'undefined' ? new TextEncoder() : null)\n\n/**\n * @param {string} str\n * @return {Uint8Array<ArrayBuffer>}\n */\nexport const _encodeUtf8Native = str => utf8TextEncoder.encode(str)\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\n/* c8 ignore next */\nexport const encodeUtf8 = utf8TextEncoder ? _encodeUtf8Native : _encodeUtf8Polyfill\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Polyfill = buf => {\n let remainingLen = buf.length\n let encodedString = ''\n let bufPos = 0\n while (remainingLen > 0) {\n const nextLen = remainingLen < 10000 ? remainingLen : 10000\n const bytes = buf.subarray(bufPos, bufPos + nextLen)\n bufPos += nextLen\n // Starting with ES5.1 we can supply a generic array-like object as arguments\n encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes))\n remainingLen -= nextLen\n }\n return decodeURIComponent(escape(encodedString))\n}\n\n/* c8 ignore next */\nexport let utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8', { fatal: true, ignoreBOM: true })\n\n/* c8 ignore start */\nif (utf8TextDecoder && utf8TextDecoder.decode(new Uint8Array()).length === 1) {\n // Safari doesn't handle BOM correctly.\n // This fixes a bug in Safari 13.0.5 where it produces a BOM the first time it is called.\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the first call and\n // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the second call\n // Another issue is that from then on no BOM chars are recognized anymore\n /* c8 ignore next */\n utf8TextDecoder = null\n}\n/* c8 ignore stop */\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Native = buf => /** @type {TextDecoder} */ (utf8TextDecoder).decode(buf)\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\n/* c8 ignore next */\nexport const decodeUtf8 = utf8TextDecoder ? _decodeUtf8Native : _decodeUtf8Polyfill\n\n/**\n * @param {string} str The initial string\n * @param {number} index Starting position\n * @param {number} remove Number of characters to remove\n * @param {string} insert New content to insert\n */\nexport const splice = (str, index, remove, insert = '') => str.slice(0, index) + insert + str.slice(index + remove)\n\n/**\n * @param {string} source\n * @param {number} n\n */\nexport const repeat = (source, n) => array.unfold(n, () => source).join('')\n\n/**\n * Escape HTML characters &,<,>,',\" to their respective HTML entities &,<,>,',"\n *\n * @param {string} str\n */\nexport const escapeHTML = str =>\n str.replace(/[&<>'\"]/g, r => /** @type {string} */ ({\n '&': '&',\n '<': '<',\n '>': '>',\n \"'\": ''',\n '\"': '"'\n }[r]))\n\n/**\n * Reverse of `escapeHTML`\n *\n * @param {string} str\n */\nexport const unescapeHTML = str =>\n str.replace(/&|<|>|'|"/g, r => /** @type {string} */ ({\n '&': '&',\n '<': '<',\n '>': '>',\n ''': \"'\",\n '"': '\"'\n }[r]))\n","/**\n * Often used conditions.\n *\n * @module conditions\n */\n\n/**\n * @template T\n * @param {T|null|undefined} v\n * @return {T|null}\n */\n/* c8 ignore next */\nexport const undefinedToNull = v => v === undefined ? null : v\n","/* eslint-env browser */\n\n/**\n * Isomorphic variable storage.\n *\n * Uses LocalStorage in the browser and falls back to in-memory storage.\n *\n * @module storage\n */\n\n/* c8 ignore start */\nclass VarStoragePolyfill {\n constructor () {\n this.map = new Map()\n }\n\n /**\n * @param {string} key\n * @param {any} newValue\n */\n setItem (key, newValue) {\n this.map.set(key, newValue)\n }\n\n /**\n * @param {string} key\n */\n getItem (key) {\n return this.map.get(key)\n }\n}\n/* c8 ignore stop */\n\n/**\n * @type {any}\n */\nlet _localStorage = new VarStoragePolyfill()\nlet usePolyfill = true\n\n/* c8 ignore start */\ntry {\n // if the same-origin rule is violated, accessing localStorage might thrown an error\n if (typeof localStorage !== 'undefined' && localStorage) {\n _localStorage = localStorage\n usePolyfill = false\n }\n} catch (e) { }\n/* c8 ignore stop */\n\n/**\n * This is basically localStorage in browser, or a polyfill in nodejs\n */\n/* c8 ignore next */\nexport const varStorage = _localStorage\n\n/**\n * A polyfill for `addEventListener('storage', event => {..})` that does nothing if the polyfill is being used.\n *\n * @param {function({ key: string, newValue: string, oldValue: string }): void} eventHandler\n * @function\n */\n/* c8 ignore next */\nexport const onChange = eventHandler => usePolyfill || addEventListener('storage', /** @type {any} */ (eventHandler))\n\n/**\n * A polyfill for `removeEventListener('storage', event => {..})` that does nothing if the polyfill is being used.\n *\n * @param {function({ key: string, newValue: string, oldValue: string }): void} eventHandler\n * @function\n */\n/* c8 ignore next */\nexport const offChange = eventHandler => usePolyfill || removeEventListener('storage', /** @type {any} */ (eventHandler))\n","/**\n * Isomorphic module to work access the environment (query params, env variables).\n *\n * @module environment\n */\n\nimport * as map from './map.js'\nimport * as string from './string.js'\nimport * as conditions from './conditions.js'\nimport * as storage from './storage.js'\nimport * as f from './function.js'\n\n/* c8 ignore next 2 */\n// @ts-ignore\nexport const isNode = typeof process !== 'undefined' && process.release && /node|io\\.js/.test(process.release.name) && Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n\n/* c8 ignore next */\nexport const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && !isNode\n/* c8 ignore next 3 */\nexport const isMac = typeof navigator !== 'undefined'\n ? /Mac/.test(navigator.platform)\n : false\n\n/**\n * @type {Map<string,string>}\n */\nlet params\nconst args = []\n\n/* c8 ignore start */\nconst computeParams = () => {\n if (params === undefined) {\n if (isNode) {\n params = map.create()\n const pargs = process.argv\n let currParamName = null\n for (let i = 0; i < pargs.length; i++) {\n const parg = pargs[i]\n if (parg[0] === '-') {\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n currParamName = parg\n } else {\n if (currParamName !== null) {\n params.set(currParamName, parg)\n currParamName = null\n } else {\n args.push(parg)\n }\n }\n }\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n // in ReactNative for example this would not be true (unless connected to the Remote Debugger)\n } else if (typeof location === 'object') {\n params = map.create(); // eslint-disable-next-line no-undef\n (location.search || '?').slice(1).split('&').forEach((kv) => {\n if (kv.length !== 0) {\n const [key, value] = kv.split('=')\n params.set(`--${string.fromCamelCase(key, '-')}`, value)\n params.set(`-${string.fromCamelCase(key, '-')}`, value)\n }\n })\n } else {\n params = map.create()\n }\n }\n return params\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* c8 ignore next */\nexport const hasParam = (name) => computeParams().has(name)\n\n/**\n * @param {string} name\n * @param {string} defaultVal\n * @return {string}\n */\n/* c8 ignore next 2 */\nexport const getParam = (name, defaultVal) =>\n computeParams().get(name) || defaultVal\n\n/**\n * @param {string} name\n * @return {string|null}\n */\n/* c8 ignore next 4 */\nexport const getVariable = (name) =>\n isNode\n ? conditions.undefinedToNull(process.env[name.toUpperCase().replaceAll('-', '_')])\n : conditions.undefinedToNull(storage.varStorage.getItem(name))\n\n/**\n * @param {string} name\n * @return {string|null}\n */\n/* c8 ignore next 2 */\nexport const getConf = (name) =>\n computeParams().get('--' + name) || getVariable(name)\n\n/**\n * @param {string} name\n * @return {string}\n */\n/* c8 ignore next 5 */\nexport const ensureConf = (name) => {\n const c = getConf(name)\n if (c == null) throw new Error(`Expected configuration \"${name.toUpperCase().replaceAll('-', '_')}\"`)\n return c\n}\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* c8 ignore next 2 */\nexport const hasConf = (name) =>\n hasParam('--' + name) || getVariable(name) !== null\n\n/* c8 ignore next */\nexport const production = hasConf('production')\n\n/* c8 ignore next 2 */\nconst forceColor = isNode &&\n f.isOneOf(process.env.FORCE_COLOR, ['true', '1', '2'])\n\n/* c8 ignore start */\n/**\n * Color is enabled by default if the terminal supports it.\n *\n * Explicitly enable color using `--color` parameter\n * Disable color using `--no-color` parameter or using `NO_COLOR=1` environment variable.\n * `FORCE_COLOR=1` enables color and takes precedence over all.\n */\nexport const supportsColor = forceColor || (\n !hasParam('--no-colors') && // @todo deprecate --no-colors\n !hasConf('no-color') &&\n (!isNode || process.stdout.isTTY) && (\n !isNode ||\n hasParam('--color') ||\n getVariable('COLORTERM') !== null ||\n (getVariable('TERM') || '').includes('color')\n )\n)\n/* c8 ignore stop */\n","/**\n * Utility helpers for working with numbers.\n *\n * @module number\n */\n\nimport * as math from './math.js'\nimport * as binary from './binary.js'\n\nexport const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER\nexport const MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER\n\nexport const LOWEST_INT32 = 1 << 31\nexport const HIGHEST_INT32 = binary.BITS31\nexport const HIGHEST_UINT32 = binary.BITS32\n\n/* c8 ignore next */\nexport const isInteger = Number.isInteger || (num => typeof num === 'number' && isFinite(num) && math.floor(num) === num)\nexport const isNaN = Number.isNaN\nexport const parseInt = Number.parseInt\n\n/**\n * Count the number of \"1\" bits in an unsigned 32bit number.\n *\n * Super fun bitcount algorithm by Brian Kernighan.\n *\n * @param {number} n\n */\nexport const countBits = n => {\n n &= binary.BITS32\n let count = 0\n while (n) {\n n &= (n - 1)\n count++\n }\n return count\n}\n","/**\n * Efficient schema-less binary encoding with support for variable length encoding.\n *\n * Use [lib0/encoding] with [lib0/decoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module encoding\n */\n\nimport * as math from './math.js'\nimport * as number from './number.js'\nimport * as binary from './binary.js'\nimport * as string from './string.js'\nimport * as array from './array.js'\n\n/**\n * A BinaryEncoder handles the encoding to an Uint8Array.\n */\nexport class Encoder {\n constructor () {\n this.cpos = 0\n this.cbuf = new Uint8Array(100)\n /**\n * @type {Array<Uint8Array>}\n */\n this.bufs = []\n }\n}\n\n/**\n * @function\n * @return {Encoder}\n */\nexport const createEncoder = () => new Encoder()\n\n/**\n * @param {function(Encoder):void} f\n */\nexport const encode = (f) => {\n const encoder = createEncoder()\n f(encoder)\n return toUint8Array(encoder)\n}\n\n/**\n * The current length of the encoded data.\n *\n * @function\n * @param {Encoder} encoder\n * @return {number}\n */\nexport const length = encoder => {\n let len = encoder.cpos\n for (let i = 0; i < encoder.bufs.length; i++) {\n len += encoder.bufs[i].length\n }\n return len\n}\n\n/**\n * Check whether encoder is empty.\n *\n * @function\n * @param {Encoder} encoder\n * @return {boolean}\n */\nexport const hasContent = encoder => encoder.cpos > 0 || encoder.bufs.length > 0\n\n/**\n * Transform to Uint8Array.\n *\n * @function\n * @param {Encoder} encoder\n * @return {Uint8Array<ArrayBuffer>} The created ArrayBuffer.\n */\nexport const toUint8Array = encoder => {\n const uint8arr = new Uint8Array(length(encoder))\n let curPos = 0\n for (let i = 0; i < encoder.bufs.length; i++) {\n const d = encoder.bufs[i]\n uint8arr.set(d, curPos)\n curPos += d.length\n }\n uint8arr.set(new Uint8Array(encoder.cbuf.buffer, 0, encoder.cpos), curPos)\n return uint8arr\n}\n\n/**\n * Verify that it is possible to write `len` bytes wtihout checking. If\n * necessary, a new Buffer with the required length is attached.\n *\n * @param {Encoder} encoder\n * @param {number} len\n */\nexport const verifyLen = (encoder, len) => {\n const bufferLen = encoder.cbuf.length\n if (bufferLen - encoder.cpos < len) {\n encoder.bufs.push(new Uint8Array(encoder.cbuf.buffer, 0, encoder.cpos))\n encoder.cbuf = new Uint8Array(math.max(bufferLen, len) * 2)\n encoder.cpos = 0\n }\n}\n\n/**\n * Write one byte to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The byte that is to be encoded.\n */\nexport const write = (encoder, num) => {\n const bufferLen = encoder.cbuf.length\n if (encoder.cpos === bufferLen) {\n encoder.bufs.push(encoder.cbuf)\n encoder.cbuf = new Uint8Array(bufferLen * 2)\n encoder.cpos = 0\n }\n encoder.cbuf[encoder.cpos++] = num\n}\n\n/**\n * Write one byte at a specific position.\n * Position must already be written (i.e. encoder.length > pos)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos Position to which to write data\n * @param {number} num Unsigned 8-bit integer\n */\nexport const set = (encoder, pos, num) => {\n let buffer = null\n // iterate all buffers and adjust position\n for (let i = 0; i < encoder.bufs.length && buffer === null; i++) {\n const b = encoder.bufs[i]\n if (pos < b.length) {\n buffer = b // found buffer\n } else {\n pos -= b.length\n }\n }\n if (buffer === null) {\n // use current buffer\n buffer = encoder.cbuf\n }\n buffer[pos] = num\n}\n\n/**\n * Write one byte as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint8 = write\n\n/**\n * Write one byte as an unsigned Integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint8 = set\n\n/**\n * Write two bytes as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint16 = (encoder, num) => {\n write(encoder, num & binary.BITS8)\n write(encoder, (num >>> 8) & binary.BITS8)\n}\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint16 = (encoder, pos, num) => {\n set(encoder, pos, num & binary.BITS8)\n set(encoder, pos + 1, (num >>> 8) & binary.BITS8)\n}\n\n/**\n * Write two bytes as an unsigned integer\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32 = (encoder, num) => {\n for (let i = 0; i < 4; i++) {\n write(encoder, num & binary.BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write two bytes as an unsigned integer in big endian order.\n * (most significant byte first)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32BigEndian = (encoder, num) => {\n for (let i = 3; i >= 0; i--) {\n write(encoder, (num >>> (8 * i)) & binary.BITS8)\n }\n}\n\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint32 = (encoder, pos, num) => {\n for (let i = 0; i < 4; i++) {\n set(encoder, pos + i, num & binary.BITS8)\n num >>>= 8\n }\n}\n\n/**\n * Write a variable length unsigned integer. Max encodable integer is 2^53.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarUint = (encoder, num) => {\n while (num > binary.BITS7) {\n write(encoder, binary.BIT8 | (binary.BITS7 & num))\n num = math.floor(num / 128) // shift >>> 7\n }\n write(encoder, binary.BITS7 & num)\n}\n\n/**\n * Write a variable length integer.\n *\n * We use the 7th bit instead for signaling that this is a negative number.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarInt = (encoder, num) => {\n const isNegative = math.isNegativeZero(num)\n if (isNegative) {\n num = -num\n }\n // |- whether to continue reading |- whether is negative |- number\n write(encoder, (num > binary.BITS6 ? binary.BIT8 : 0) | (isNegative ? binary.BIT7 : 0) | (binary.BITS6 & num))\n num = math.floor(num / 64) // shift >>> 6\n // We don't need to consider the case of num === 0 so we can use a different\n // pattern here than above.\n while (num > 0) {\n write(encoder, (num > binary.BITS7 ? binary.BIT8 : 0) | (binary.BITS7 & num))\n num = math.floor(num / 128) // shift >>> 7\n }\n}\n\n/**\n * A cache to store strings temporarily\n */\nconst _strBuffer = new Uint8Array(30000)\nconst _maxStrBSize = _strBuffer.length / 3\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const _writeVarStringNative = (encoder, str) => {\n if (str.length < _maxStrBSize) {\n // We can encode the string into the existing buffer\n /* c8 ignore next */\n const written = string.utf8TextEncoder.encodeInto(str, _strBuffer).written || 0\n writeVarUint(encoder, written)\n for (let i = 0; i < written; i++) {\n write(encoder, _strBuffer[i])\n }\n } else {\n writeVarUint8Array(encoder, string.encodeUtf8(str))\n }\n}\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const _writeVarStringPolyfill = (encoder, str) => {\n const encodedString = unescape(encodeURIComponent(str))\n const len = encodedString.length\n writeVarUint(encoder, len)\n for (let i = 0; i < len; i++) {\n write(encoder, /** @type {number} */ (encodedString.codePointAt(i)))\n }\n}\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\n/* c8 ignore next */\nexport const writeVarString = (string.utf8TextEncoder && /** @type {any} */ (string.utf8TextEncoder).encodeInto) ? _writeVarStringNative : _writeVarStringPolyfill\n\n/**\n * Write a string terminated by a special byte sequence. This is not very performant and is\n * generally discouraged. However, the resulting byte arrays are lexiographically ordered which\n * makes this a nice feature for databases.\n *\n * The string will be encoded using utf8 and then terminated and escaped using writeTerminatingUint8Array.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const writeTerminatedString = (encoder, str) =>\n writeTerminatedUint8Array(encoder, string.encodeUtf8(str))\n\n/**\n * Write a terminating Uint8Array. Note that this is not performant and is generally\n * discouraged. There are few situations when this is needed.\n *\n * We use 0x0 as a terminating character. 0x1 serves as an escape character for 0x0 and 0x1.\n *\n * Example: [0,1,2] is encoded to [1,0,1,1,2,0]. 0x0, and 0x1 needed to be escaped using 0x1. Then\n * the result is terminated using the 0x0 character.\n *\n * This is basically how many systems implement null terminated strings. However, we use an escape\n * character 0x1 to avoid issues and potenial attacks on our database (if this is used as a key\n * encoder for NoSql databases).\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} buf The string that is to be encoded.\n */\nexport const writeTerminatedUint8Array = (encoder, buf) => {\n for (let i = 0; i < buf.length; i++) {\n const b = buf[i]\n if (b === 0 || b === 1) {\n write(encoder, 1)\n }\n write(encoder, buf[i])\n }\n write(encoder, 0)\n}\n\n/**\n * Write the content of another Encoder.\n *\n * @TODO: can be improved!\n * - Note: Should consider that when appending a lot of small Encoders, we should rather clone than referencing the old structure.\n * Encoders start with a rather big initial buffer.\n *\n * @function\n * @param {Encoder} encoder The enUint8Arr\n * @param {Encoder} append The BinaryEncoder to be written.\n */\nexport const writeBinaryEncoder = (encoder, append) => writeUint8Array(encoder, toUint8Array(append))\n\n/**\n * Append fixed-length Uint8Array to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeUint8Array = (encoder, uint8Array) => {\n const bufferLen = encoder.cbuf.length\n const cpos = encoder.cpos\n const leftCopyLen = math.min(bufferLen - cpos, uint8Array.length)\n const rightCopyLen = uint8Array.length - leftCopyLen\n encoder.cbuf.set(uint8Array.subarray(0, leftCopyLen), cpos)\n encoder.cpos += leftCopyLen\n if (rightCopyLen > 0) {\n // Still something to write, write right half..\n // Append new buffer\n encoder.bufs.push(encoder.cbuf)\n // must have at least size of remaining buffer\n encoder.cbuf = new Uint8Array(math.max(bufferLen * 2, rightCopyLen))\n // copy array\n encoder.cbuf.set(uint8Array.subarray(leftCopyLen))\n encoder.cpos = rightCopyLen\n }\n}\n\n/**\n * Append an Uint8Array to Encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeVarUint8Array = (encoder, uint8Array) => {\n writeVarUint(encoder, uint8Array.byteLength)\n writeUint8Array(encoder, uint8Array)\n}\n\n/**\n * Create an DataView of the next `len` bytes. Use it to write data after\n * calling this function.\n *\n * ```js\n * // write float32 using DataView\n * const dv = writeOnDataView(encoder, 4)\n * dv.setFloat32(0, 1.1)\n * // read float32 using DataView\n * const dv = readFromDataView(encoder, 4)\n * dv.getFloat32(0) // => 1.100000023841858 (leaving it to the reader to find out why this is the correct result)\n * ```\n *\n * @param {Encoder} encoder\n * @param {number} len\n * @return {DataView}\n */\nexport const writeOnDataView = (encoder, len) => {\n verifyLen(encoder, len)\n const dview = new DataView(encoder.cbuf.buffer, encoder.cpos, len)\n encoder.cpos += len\n return dview\n}\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat32 = (encoder, num) => writeOnDataView(encoder, 4).setFloat32(0, num, false)\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat64 = (encoder, num) => writeOnDataView(encoder, 8).setFloat64(0, num, false)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigInt64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigInt64(0, num, false)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigUint64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigUint64(0, num, false)\n\nconst floatTestBed = new DataView(new ArrayBuffer(4))\n/**\n * Check if a number can be encoded as a 32 bit float.\n *\n * @param {number} num\n * @return {boolean}\n */\nconst isFloat32 = num => {\n floatTestBed.setFloat32(0, num)\n return floatTestBed.getFloat32(0) === num\n}\n\n/**\n * @typedef {Array<AnyEncodable>} AnyEncodableArray\n */\n\n/**\n * @typedef {undefined|null|number|bigint|boolean|string|{[k:string]:AnyEncodable}|AnyEncodableArray|Uint8Array} AnyEncodable\n */\n\n/**\n * Encode data with efficient binary format.\n *\n * Differences to JSON:\n * • Transforms data to a binary format (not to a string)\n * • Encodes undefined, NaN, and ArrayBuffer (these can't be represented in JSON)\n * • Numbers are efficiently encoded either as a variable length integer, as a\n * 32 bit float, as a 64 bit float, or as a 64 bit bigint.\n *\n * Encoding table:\n *\n * | Data Type | Prefix | Encoding Method | Comment |\n * | ------------------- | -------- | ------------------ | ------- |\n * | undefined | 127 | | Functions, symbol, and everything that cannot be identified is encoded as undefined |\n * | null | 126 | | |\n * | integer | 125 | writeVarInt | Only encodes 32 bit signed integers |\n * | float32 | 124 | writeFloat32 | |\n * | float64 | 123 | writeFloat64 | |\n * | bigint | 122 | writeBigInt64 | |\n * | boolean (false) | 121 | | True and false are different data types so we save the following byte |\n * | boolean (true) | 120 | | - 0b01111000 so the last bit determines whether true or false |\n * | string | 119 | writeVarString | |\n * | object<string,any> | 118 | custom | Writes {length} then {length} key-value pairs |\n * | array<any> | 117 | custom | Writes {length} then {length} json values |\n * | Uint8Array | 116 | writeVarUint8Array | We use Uint8Array for any kind of binary data |\n *\n * Reasons for the decreasing prefix:\n * We need the first bit for extendability (later we may want to encode the\n * prefix with writeVarUint). The remaining 7 bits are divided as follows:\n * [0-30] the beginning of the data range is used for custom purposes\n * (defined by the function that uses this library)\n * [31-127] the end of the data range is used for data encoding by\n * lib0/encoding.js\n *\n * @param {Encoder} encoder\n * @param {AnyEncodable} data\n */\nexport const writeAny = (encoder, data) => {\n switch (typeof data) {\n case 'string':\n // TYPE 119: STRING\n write(encoder, 119)\n writeVarString(encoder, data)\n break\n case 'number':\n if (number.isInteger(data) && math.abs(data) <= binary.BITS31) {\n // TYPE 125: INTEGER\n write(encoder, 125)\n writeVarInt(encoder, data)\n } else if (isFloat32(data)) {\n // TYPE 124: FLOAT32\n write(encoder, 124)\n writeFloat32(encoder, data)\n } else {\n // TYPE 123: FLOAT64\n write(encoder, 123)\n writeFloat64(encoder, data)\n }\n break\n case 'bigint':\n // TYPE 122: BigInt\n write(encoder, 122)\n writeBigInt64(encoder, data)\n break\n case 'object':\n if (data === null) {\n // TYPE 126: null\n write(encoder, 126)\n } else if (array.isArray(data)) {\n // TYPE 117: Array\n write(encoder, 117)\n writeVarUint(encoder, data.length)\n for (let i = 0; i < data.length; i++) {\n writeAny(encoder, data[i])\n }\n } else if (data instanceof Uint8Array) {\n // TYPE 116: ArrayBuffer\n write(encoder, 116)\n writeVarUint8Array(encoder, data)\n } else {\n // TYPE 118: Object\n write(encoder, 118)\n const keys = Object.keys(data)\n writeVarUint(encoder, keys.length)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n writeVarString(encoder, key)\n writeAny(encoder, data[key])\n }\n }\n break\n case 'boolean':\n // TYPE 120/121: boolean (true/false)\n write(encoder, data ? 120 : 121)\n break\n default:\n // TYPE 127: undefined\n write(encoder, 127)\n }\n}\n\n/**\n * Now come a few stateful encoder that have their own classes.\n */\n\n/**\n * Basic Run Length Encoder - a basic compression implementation.\n *\n * Encodes [1,1,1,7] to [1,3,7,1] (3 times 1, 1 time 7). This encoder might do more harm than good if there are a lot of values that are not repeated.\n *\n * It was originally used for image compression. Cool .. article http://csbruce.com/cbm/transactor/pdfs/trans_v7_i06.pdf\n *\n * @note T must not be null!\n *\n * @template T\n */\nexport class RleEncoder extends Encoder {\n /**\n * @param {function(Encoder, T):void} writer\n */\n constructor (writer) {\n super()\n /**\n * The writer\n */\n this.w = writer\n /**\n * Current state\n * @type {T|null}\n */\n this.s = null\n this.count = 0\n }\n\n /**\n * @param {T} v\n */\n write (v) {\n if (this.s === v) {\n this.count++\n } else {\n if (this.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n }\n this.count = 1\n // write first value\n this.w(this, v)\n this.s = v\n }\n }\n}\n\n/**\n * Basic diff decoder using variable length encoding.\n *\n * Encodes the values [3, 1100, 1101, 1050, 0] to [3, 1097, 1, -51, -1050] using writeVarInt.\n */\nexport class IntDiffEncoder extends Encoder {\n /**\n * @param {number} start\n */\n constructor (start) {\n super()\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n writeVarInt(this, v - this.s)\n this.s = v\n }\n}\n\n/**\n * A combination of IntDiffEncoder and RleEncoder.\n *\n * Basically first writes the IntDiffEncoder and then counts duplicate diffs using RleEncoding.\n *\n * Encodes the values [1,1,1,2,3,4,5,6] as [1,1,0,2,1,5] (RLE([1,0,0,1,1,1,1,1]) ⇒ RleIntDiff[1,1,0,2,1,5])\n */\nexport class RleIntDiffEncoder extends Encoder {\n /**\n * @param {number} start\n */\n constructor (start) {\n super()\n /**\n * Current state\n * @type {number}\n */\n this.s = start\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s === v && this.count > 0) {\n this.count++\n } else {\n if (this.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n }\n this.count = 1\n // write first value\n writeVarInt(this, v - this.s)\n this.s = v\n }\n }\n}\n\n/**\n * @param {UintOptRleEncoder} encoder\n */\nconst flushUintOptRleEncoder = encoder => {\n if (encoder.count > 0) {\n // flush counter, unless this is the first value (count = 0)\n // case 1: just a single value. set sign to positive\n // case 2: write several values. set sign to negative to indicate that there is a length coming\n writeVarInt(encoder.encoder, encoder.count === 1 ? encoder.s : -encoder.s)\n if (encoder.count > 1) {\n writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n }\n }\n}\n\n/**\n * Optimized Rle encoder that does not suffer from the mentioned problem of the basic Rle encoder.\n *\n * Internally uses VarInt encoder to write unsigned integers. If the input occurs multiple times, we write\n * write it as a negative number. The UintOptRleDecoder then understands that it needs to read a count.\n *\n * Encodes [1,2,3,3,3] as [1,2,-3,3] (once 1, once 2, three times 3)\n */\nexport class UintOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s === v) {\n this.count++\n } else {\n flushUintOptRleEncoder(this)\n this.count = 1\n this.s = v\n }\n }\n\n /**\n * Flush the encoded state and transform this to a Uint8Array.\n *\n * Note that this should only be called once.\n */\n toUint8Array () {\n flushUintOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * Increasing Uint Optimized RLE Encoder\n *\n * The RLE encoder counts the number of same occurences of the same value.\n * The IncUintOptRle encoder counts if the value increases.\n * I.e. 7, 8, 9, 10 will be encoded as [-7, 4]. 1, 3, 5 will be encoded\n * as [1, 3, 5].\n */\nexport class IncUintOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.s + this.count === v) {\n this.count++\n } else {\n flushUintOptRleEncoder(this)\n this.count = 1\n this.s = v\n }\n }\n\n /**\n * Flush the encoded state and transform this to a Uint8Array.\n *\n * Note that this should only be called once.\n */\n toUint8Array () {\n flushUintOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * @param {IntDiffOptRleEncoder} encoder\n */\nconst flushIntDiffOptRleEncoder = encoder => {\n if (encoder.count > 0) {\n // 31 bit making up the diff | wether to write the counter\n // const encodedDiff = encoder.diff << 1 | (encoder.count === 1 ? 0 : 1)\n const encodedDiff = encoder.diff * 2 + (encoder.count === 1 ? 0 : 1)\n // flush counter, unless this is the first value (count = 0)\n // case 1: just a single value. set first bit to positive\n // case 2: write several values. set first bit to negative to indicate that there is a length coming\n writeVarInt(encoder.encoder, encodedDiff)\n if (encoder.count > 1) {\n writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n }\n }\n}\n\n/**\n * A combination of the IntDiffEncoder and the UintOptRleEncoder.\n *\n * The count approach is similar to the UintDiffOptRleEncoder, but instead of using the negative bitflag, it encodes\n * in the LSB whether a count is to be read. Therefore this Encoder only supports 31 bit integers!\n *\n * Encodes [1, 2, 3, 2] as [3, 1, 6, -1] (more specifically [(1 << 1) | 1, (3 << 0) | 0, -1])\n *\n * Internally uses variable length encoding. Contrary to normal UintVar encoding, the first byte contains:\n * * 1 bit that denotes whether the next value is a count (LSB)\n * * 1 bit that denotes whether this value is negative (MSB - 1)\n * * 1 bit that denotes whether to continue reading the variable length integer (MSB)\n *\n * Therefore, only five bits remain to encode diff ranges.\n *\n * Use this Encoder only when appropriate. In most cases, this is probably a bad idea.\n */\nexport class IntDiffOptRleEncoder {\n constructor () {\n this.encoder = new Encoder()\n /**\n * @type {number}\n */\n this.s = 0\n this.count = 0\n this.diff = 0\n }\n\n /**\n * @param {number} v\n */\n write (v) {\n if (this.diff === v - this.s) {\n this.s = v\n this.count++\n } else {\n flushIntDiffOptRleEncoder(this)\n this.count = 1\n this.diff = v - this.s\n this.s = v\n }\n }\n\n /**\n * Flush the encoded state and transform this to a Uint8Array.\n *\n * Note that this should only be called once.\n */\n toUint8Array () {\n flushIntDiffOptRleEncoder(this)\n return toUint8Array(this.encoder)\n }\n}\n\n/**\n * Optimized String Encoder.\n *\n * Encoding many small strings in a simple Encoder is not very efficient. The function call to decode a string takes some time and creates references that must be eventually deleted.\n * In practice, when decoding several million small strings, the GC will kick in more and more often to collect orphaned string objects (or maybe there is another reason?).\n *\n * This string encoder solves the above problem. All strings are concatenated and written as a single string using a single encoding call.\n *\n * The lengths are encoded using a UintOptRleEncoder.\n */\nexport class StringEncoder {\n constructor () {\n /**\n * @type {Array<string>}\n */\n this.sarr = []\n this.s = ''\n this.lensE = new UintOptRleEncoder()\n }\n\n /**\n * @param {string} string\n */\n write (string) {\n this.s += string\n if (this.s.length > 19) {\n this.sarr.push(this.s)\n this.s = ''\n }\n this.lensE.write(string.length)\n }\n\n toUint8Array () {\n const encoder = new Encoder()\n this.sarr.push(this.s)\n this.s = ''\n writeVarString(encoder, this.sarr.join(''))\n writeUint8Array(encoder, this.lensE.toUint8Array())\n return toUint8Array(encoder)\n }\n}\n","/**\n * Utility functions to work with buffers (Uint8Array).\n *\n * @module buffer\n */\n\nimport * as string from './string.js'\nimport * as env from './environment.js'\nimport * as array from './array.js'\nimport * as math from './math.js'\nimport * as encoding from './encoding.js'\nimport * as decoding from './decoding.js'\n\n/**\n * @param {number} len\n */\nexport const createUint8ArrayFromLen = len => new Uint8Array(len)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n * @param {number} byteOffset\n * @param {number} length\n */\nexport const createUint8ArrayViewFromArrayBuffer = (buffer, byteOffset, length) => new Uint8Array(buffer, byteOffset, length)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n */\nexport const createUint8ArrayFromArrayBuffer = buffer => new Uint8Array(buffer)\n\n/* c8 ignore start */\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Browser = bytes => {\n let s = ''\n for (let i = 0; i < bytes.byteLength; i++) {\n s += string.fromCharCode(bytes[i])\n }\n // eslint-disable-next-line no-undef\n return btoa(s)\n}\n/* c8 ignore stop */\n\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Node = bytes => Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString('base64')\n\n/* c8 ignore start */\n/**\n * @param {string} s\n * @return {Uint8Array<ArrayBuffer>}\n */\nconst fromBase64Browser = s => {\n // eslint-disable-next-line no-undef\n const a = atob(s)\n const bytes = createUint8ArrayFromLen(a.length)\n for (let i = 0; i < a.length; i++) {\n bytes[i] = a.charCodeAt(i)\n }\n return bytes\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} s\n */\nconst fromBase64Node = s => {\n const buf = Buffer.from(s, 'base64')\n return createUint8ArrayViewFromArrayBuffer(buf.buffer, buf.byteOffset, buf.byteLength)\n}\n\n/* c8 ignore next */\nexport const toBase64 = env.isBrowser ? toBase64Browser : toBase64Node\n\n/* c8 ignore next */\nexport const fromBase64 = env.isBrowser ? fromBase64Browser : fromBase64Node\n\n/**\n * Implements base64url - see https://datatracker.ietf.org/doc/html/rfc4648#section-5\n * @param {Uint8Array} buf\n */\nexport const toBase64UrlEncoded = buf => toBase64(buf).replaceAll('+', '-').replaceAll('/', '_').replaceAll('=', '')\n\n/**\n * @param {string} base64\n */\nexport const fromBase64UrlEncoded = base64 => fromBase64(base64.replaceAll('-', '+').replaceAll('_', '/'))\n\n/**\n * Base64 is always a more efficient choice. This exists for utility purposes only.\n *\n * @param {Uint8Array} buf\n */\nexport const toHexString = buf => array.map(buf, b => b.toString(16).padStart(2, '0')).join('')\n\n/**\n * Note: This function expects that the hex doesn't start with 0x..\n *\n * @param {string} hex\n */\nexport const fromHexString = hex => {\n const hlen = hex.length\n const buf = new Uint8Array(math.ceil(hlen / 2))\n for (let i = 0; i < hlen; i += 2) {\n buf[buf.length - i / 2 - 1] = Number.parseInt(hex.slice(hlen - i - 2, hlen - i), 16)\n }\n return buf\n}\n\n/**\n * Copy the content of an Uint8Array view to a new ArrayBuffer.\n *\n * @param {Uint8Array} uint8Array\n * @return {Uint8Array}\n */\nexport const copyUint8Array = uint8Array => {\n const newBuf = createUint8ArrayFromLen(uint8Array.byteLength)\n newBuf.set(uint8Array)\n return newBuf\n}\n\n/**\n * Encode anything as a UInt8Array. It's a pun on typescripts's `any` type.\n * See encoding.writeAny for more information.\n *\n * @param {any} data\n * @return {Uint8Array}\n */\nexport const encodeAny = data =>\n encoding.encode(encoder => encoding.writeAny(encoder, data))\n\n/**\n * Decode an any-encoded value.\n *\n * @param {Uint8Array} buf\n * @return {any}\n */\nexport const decodeAny = buf => decoding.readAny(decoding.createDecoder(buf))\n\n/**\n * Shift Byte Array {N} bits to the left. Does not expand byte array.\n *\n * @param {Uint8Array} bs\n * @param {number} N should be in the range of [0-7]\n */\nexport const shiftNBitsLeft = (bs, N) => {\n if (N === 0) return bs\n bs = new Uint8Array(bs)\n bs[0] <<= N\n for (let i = 1; i < bs.length; i++) {\n bs[i - 1] |= bs[i] >>> (8 - N)\n bs[i] <<= N\n }\n return bs\n}\n","/**\n * Fast Pseudo Random Number Generators.\n *\n * Given a seed a PRNG generates a sequence of numbers that cannot be reasonably predicted.\n * Two PRNGs must generate the same random sequence of numbers if given the same seed.\n *\n * @module prng\n */\n\nimport * as binary from './binary.js'\nimport { fromCharCode, fromCodePoint } from './string.js'\nimport * as math from './math.js'\nimport { Xoroshiro128plus } from './prng/Xoroshiro128plus.js'\nimport * as buffer from './buffer.js'\n\n/**\n * Description of the function\n * @callback generatorNext\n * @return {number} A random float in the cange of [0,1)\n */\n\n/**\n * A random type generator.\n *\n * @typedef {Object} PRNG\n * @property {generatorNext} next Generate new number\n */\nexport const DefaultPRNG = Xoroshiro128plus\n\n/**\n * Create a Xoroshiro128plus Pseudo-Random-Number-Generator.\n * This is the fastest full-period generator passing BigCrush without systematic failures.\n * But there are more PRNGs available in ./PRNG/.\n *\n * @param {number} seed A positive 32bit integer. Do not use negative numbers.\n * @return {PRNG}\n */\nexport const create = seed => new DefaultPRNG(seed)\n\n/**\n * Generates a single random bool.\n *\n * @param {PRNG} gen A random number generator.\n * @return {Boolean} A random boolean\n */\nexport const bool = gen => (gen.next() >= 0.5)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const int53 = (gen, min, max) => math.floor(gen.next() * (max + 1 - min) + min)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const uint53 = (gen, min, max) => math.abs(int53(gen, min, max))\n\n/**\n * Generates a random integer with 32 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const int32 = (gen, min, max) => math.floor(gen.next() * (max + 1 - min) + min)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const uint32 = (gen, min, max) => int32(gen, min, max) >>> 0\n\n/**\n * @deprecated\n * Optimized version of prng.int32. It has the same precision as prng.int32, but should be preferred when\n * openaring on smaller ranges.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive). The max inclusive number is `binary.BITS31-1`\n * @return {Number} A random integer on [min, max]\n */\nexport const int31 = (gen, min, max) => int32(gen, min, max)\n\n/**\n * Generates a random real on [0, 1) with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @return {Number} A random real number on [0, 1).\n */\nexport const real53 = gen => gen.next() // (((gen.next() >>> 5) * binary.BIT26) + (gen.next() >>> 6)) / MAX_SAFE_INTEGER\n\n/**\n * Generates a random character from char code 32 - 126. I.e. Characters, Numbers, special characters, and Space:\n *\n * @param {PRNG} gen A random number generator.\n * @return {string}\n *\n * (Space)!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[/]^_`abcdefghijklmnopqrstuvwxyz{|}~\n */\nexport const char = gen => fromCharCode(int31(gen, 32, 126))\n\n/**\n * @param {PRNG} gen\n * @return {string} A single letter (a-z)\n */\nexport const letter = gen => fromCharCode(int31(gen, 97, 122))\n\n/**\n * @param {PRNG} gen\n * @param {number} [minLen=0]\n * @param {number} [maxLen=20]\n * @return {string} A random word (0-20 characters) without spaces consisting of letters (a-z)\n */\nexport const word = (gen, minLen = 0, maxLen = 20) => {\n const len = int31(gen, minLen, maxLen)\n let str = ''\n for (let i = 0; i < len; i++) {\n str += letter(gen)\n }\n return str\n}\n\n/**\n * TODO: this function produces invalid runes. Does not cover all of utf16!!\n *\n * @param {PRNG} gen\n * @return {string}\n */\nexport const utf16Rune = gen => {\n const codepoint = int31(gen, 0, 256)\n return fromCodePoint(codepoint)\n}\n\n/**\n * @param {PRNG} gen\n * @param {number} [maxlen = 20]\n */\nexport const utf16String = (gen, maxlen = 20) => {\n const len = int31(gen, 0, maxlen)\n let str = ''\n for (let i = 0; i < len; i++) {\n str += utf16Rune(gen)\n }\n return str\n}\n\n/**\n * Returns one element of a given array.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Array<T>} array Non empty Array of possible values.\n * @return {T} One of the values of the supplied Array.\n * @template T\n */\nexport const oneOf = (gen, array) => array[int31(gen, 0, array.length - 1)]\n\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint8Array<ArrayBuffer>}\n */\nexport const uint8Array = (gen, len) => {\n const buf = buffer.createUint8ArrayFromLen(len)\n for (let i = 0; i < buf.length; i++) {\n buf[i] = int32(gen, 0, binary.BITS8)\n }\n return buf\n}\n\n/* c8 ignore start */\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint16Array}\n */\nexport const uint16Array = (gen, len) => new Uint16Array(uint8Array(gen, len * 2).buffer)\n\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint32Array}\n */\nexport const uint32Array = (gen, len) => new Uint32Array(uint8Array(gen, len * 4).buffer)\n/* c8 ignore stop */\n","/**\n * @experimental WIP\n *\n * Simple & efficient schemas for your data.\n */\n\nimport * as obj from './object.js'\nimport * as arr from './array.js'\nimport * as error from './error.js'\nimport * as env from './environment.js'\nimport * as equalityTraits from './trait/equality.js'\nimport * as fun from './function.js'\nimport * as string from './string.js'\nimport * as prng from './prng.js'\nimport * as number from './number.js'\n\n/**\n * @typedef {string|number|bigint|boolean|null|undefined|symbol} Primitive\n */\n\n/**\n * @typedef {{ [k:string|number|symbol]: any }} AnyObject\n */\n\n/**\n * @template T\n * @typedef {T extends Schema<infer X> ? X : T} Unwrap\n */\n\n/**\n * @template T\n * @typedef {T extends Schema<infer X> ? X : T} TypeOf\n */\n\n/**\n * @template {readonly unknown[]} T\n * @typedef {T extends readonly [Schema<infer First>, ...infer Rest] ? [First, ...UnwrapArray<Rest>] : [] } UnwrapArray\n */\n\n/**\n * @template T\n * @typedef {T extends Schema<infer S> ? Schema<S> : never} CastToSchema\n */\n\n/**\n * @template {unknown[]} Arr\n * @typedef {Arr extends [...unknown[], infer L] ? L : never} TupleLast\n */\n\n/**\n * @template {unknown[]} Arr\n * @typedef {Arr extends [...infer Fs, unknown] ? Fs : never} TuplePop\n */\n\n/**\n * @template {readonly unknown[]} T\n * @typedef {T extends []\n * ? {}\n * : T extends [infer First]\n * ? First\n * : T extends [infer First, ...infer Rest]\n * ? First & Intersect<Rest>\n * : never\n * } Intersect\n */\n\nconst schemaSymbol = Symbol('0schema')\n\nexport class ValidationError {\n constructor () {\n /**\n * Reverse errors\n * @type {Array<{ path: string?, expected: string, has: string, message: string? }>}\n */\n this._rerrs = []\n }\n\n /**\n * @param {string?} path\n * @param {string} expected\n * @param {string} has\n * @param {string?} message\n */\n extend (path, expected, has, message = null) {\n this._rerrs.push({ path, expected, has, message })\n }\n\n toString () {\n const s = []\n for (let i = this._rerrs.length - 1; i > 0; i--) {\n const r = this._rerrs[i]\n /* c8 ignore next */\n s.push(string.repeat(' ', (this._rerrs.length - i) * 2) + `${r.path != null ? `[${r.path}] ` : ''}${r.has} doesn't match ${r.expected}. ${r.message}`)\n }\n return s.join('\\n')\n }\n}\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nconst shapeExtends = (a, b) => {\n if (a === b) return true\n if (a == null || b == null || a.constructor !== b.constructor) return false\n if (a[equalityTraits.EqualityTraitSymbol]) return equalityTraits.equals(a, b) // last resort: check equality (do this before array and obj check which don't implement the equality trait)\n if (arr.isArray(a)) {\n return arr.every(a, aitem =>\n arr.some(b, bitem => shapeExtends(aitem, bitem))\n )\n } else if (obj.isObject(a)) {\n return obj.every(a, (aitem, akey) =>\n shapeExtends(aitem, b[akey])\n )\n }\n /* c8 ignore next */\n return false\n}\n\n/**\n * @template T\n * @implements {equalityTraits.EqualityTrait}\n */\nexport class Schema {\n // this.shape must not be defined on Schema. Otherwise typecheck on metatypes (e.g. $$object) won't work as expected anymore\n /**\n * If true, the more things are added to the shape the more objects this schema will accept (e.g.\n * union). By default, the more objects are added, the the fewer objects this schema will accept.\n * @protected\n */\n static _dilutes = false\n\n /**\n * @param {Schema<any>} other\n */\n extends (other) {\n let [a, b] = [/** @type {any} */(this).shape, /** @type {any} */ (other).shape]\n if (/** @type {typeof Schema<any>} */ (this.constructor)._dilutes) [b, a] = [a, b]\n return shapeExtends(a, b)\n }\n\n /**\n * Overwrite this when necessary. By default, we only check the `shape` property which every shape\n * should have.\n * @param {Schema<any>} other\n */\n equals (other) {\n // @ts-ignore\n return this.constructor === other.constructor && fun.equalityDeep(this.shape, other.shape)\n }\n\n [schemaSymbol] () { return true }\n\n /**\n * @param {object} other\n */\n [equalityTraits.EqualityTraitSymbol] (other) {\n return this.equals(/** @type {any} */ (other))\n }\n\n /**\n * Use `schema.validate(obj)` with a typed parameter that is already of typed to be an instance of\n * Schema. Validate will check the structure of the parameter and return true iff the instance\n * really is an instance of Schema.\n *\n * @param {T} o\n * @return {boolean}\n */\n validate (o) {\n return this.check(o)\n }\n\n /* c8 ignore start */\n /**\n * Similar to validate, but this method accepts untyped parameters.\n *\n * @param {any} _o\n * @param {ValidationError} [_err]\n * @return {_o is T}\n */\n check (_o, _err) {\n error.methodUnimplemented()\n }\n /* c8 ignore stop */\n\n /**\n * @type {Schema<T?>}\n */\n get nullable () {\n // @ts-ignore\n return $union(this, $null)\n }\n\n /**\n * @type {$Optional<Schema<T>>}\n */\n get optional () {\n return new $Optional(/** @type {Schema<T>} */ (this))\n }\n\n /**\n * Cast a variable to a specific type. Returns the casted value, or throws an exception otherwise.\n * Use this if you know that the type is of a specific type and you just want to convince the type\n * system.\n *\n * **Do not rely on these error messages!**\n * Performs an assertion check only if not in a production environment.\n *\n * @template OO\n * @param {OO} o\n * @return {Extract<OO, T> extends never ? T : (OO extends Array<never> ? T : Extract<OO,T>)}\n */\n cast (o) {\n assert(o, this)\n return /** @type {any} */ (o)\n }\n\n /**\n * EXPECTO PATRONUM!! 🪄\n * This function protects against type errors. Though it may not work in the real world.\n *\n * \"After all this time?\"\n * \"Always.\" - Snape, talking about type safety\n *\n * Ensures that a variable is a a specific type. Returns the value, or throws an exception if the assertion check failed.\n * Use this if you know that the type is of a specific type and you just want to convince the type\n * system.\n *\n * Can be useful when defining lambdas: `s.lambda(s.$number, s.$void).expect((n) => n + 1)`\n *\n * **Do not rely on these error messages!**\n * Performs an assertion check if not in a production environment.\n *\n * @param {T} o\n * @return {o extends T ? T : never}\n */\n expect (o) {\n assert(o, this)\n return o\n }\n}\n\n/**\n * @template {(new (...args:any[]) => any) | ((...args:any[]) => any)} Constr\n * @typedef {Constr extends ((...args:any[]) => infer T) ? T : (Constr extends (new (...args:any[]) => any) ? InstanceType<Constr> : never)} Instance\n */\n\n/**\n * @template {(new (...args:any[]) => any) | ((...args:any[]) => any)} C\n * @extends {Schema<Instance<C>>}\n */\nexport class $ConstructedBy extends Schema {\n /**\n * @param {C} c\n * @param {((o:Instance<C>)=>boolean)|null} check\n */\n constructor (c, check) {\n super()\n this.shape = c\n this._c = check\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} [err]\n * @return {o is C extends ((...args:any[]) => infer T) ? T : (C extends (new (...args:any[]) => any) ? InstanceType<C> : never)} o\n */\n check (o, err = undefined) {\n const c = o?.constructor === this.shape && (this._c == null || this._c(o))\n /* c8 ignore next */\n !c && err?.extend(null, this.shape.name, o?.constructor.name, o?.constructor !== this.shape ? 'Constructor match failed' : 'Check failed')\n return c\n }\n}\n\n/**\n * @template {(new (...args:any[]) => any) | ((...args:any[]) => any)} C\n * @param {C} c\n * @param {((o:Instance<C>) => boolean)|null} check\n * @return {CastToSchema<$ConstructedBy<C>>}\n */\nexport const $constructedBy = (c, check = null) => new $ConstructedBy(c, check)\nexport const $$constructedBy = $constructedBy($ConstructedBy)\n\n/**\n * Check custom properties on any object. You may want to overwrite the generated Schema<any>.\n *\n * @extends {Schema<any>}\n */\nexport class $Custom extends Schema {\n /**\n * @param {(o:any) => boolean} check\n */\n constructor (check) {\n super()\n /**\n * @type {(o:any) => boolean}\n */\n this.shape = check\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} err\n * @return {o is any}\n */\n check (o, err) {\n const c = this.shape(o)\n /* c8 ignore next */\n !c && err?.extend(null, 'custom prop', o?.constructor.name, 'failed to check custom prop')\n return c\n }\n}\n\n/**\n * @param {(o:any) => boolean} check\n * @return {Schema<any>}\n */\nexport const $custom = (check) => new $Custom(check)\nexport const $$custom = $constructedBy($Custom)\n\n/**\n * @template {Primitive} T\n * @extends {Schema<T>}\n */\nexport class $Literal extends Schema {\n /**\n * @param {Array<T>} literals\n */\n constructor (literals) {\n super()\n this.shape = literals\n }\n\n /**\n *\n * @param {any} o\n * @param {ValidationError} [err]\n * @return {o is T}\n */\n check (o, err) {\n const c = this.shape.some(a => a === o)\n /* c8 ignore next */\n !c && err?.extend(null, this.shape.join(' | '), o.toString())\n return c\n }\n}\n\n/**\n * @template {Primitive[]} T\n * @param {T} literals\n * @return {CastToSchema<$Literal<T[number]>>}\n */\nexport const $literal = (...literals) => new $Literal(literals)\nexport const $$literal = $constructedBy($Literal)\n\n/**\n * @template {Array<string|Schema<string|number>>} Ts\n * @typedef {Ts extends [] ? `` : (Ts extends [infer T] ? (Unwrap<T> extends (string|number) ? Unwrap<T> : never) : (Ts extends [infer T1, ...infer Rest] ? `${Unwrap<T1> extends (string|number) ? Unwrap<T1> : never}${Rest extends Array<string|Schema<string|number>> ? CastStringTemplateArgsToTemplate<Rest> : never}` : never))} CastStringTemplateArgsToTemplate\n */\n\n/**\n * @param {string} str\n * @return {string}\n */\nconst _regexEscape = /** @type {any} */ (RegExp).escape || /** @type {(str:string) => string} */ (str =>\n str.replace(/[().|&,$^[\\]]/g, s => '\\\\' + s)\n)\n\n/**\n * @param {string|Schema<any>} s\n * @return {string[]}\n */\nconst _schemaStringTemplateToRegex = s => {\n if ($string.check(s)) {\n return [_regexEscape(s)]\n }\n if ($$literal.check(s)) {\n return /** @type {Array<string|number>} */ (s.shape).map(v => v + '')\n }\n if ($$number.check(s)) {\n return ['[+-]?\\\\d+.?\\\\d*']\n }\n if ($$string.check(s)) {\n return ['.*']\n }\n if ($$union.check(s)) {\n return s.shape.map(_schemaStringTemplateToRegex).flat(1)\n }\n /* c8 ignore next 2 */\n // unexpected schema structure (only supports unions and string in literal types)\n error.unexpectedCase()\n}\n\n/**\n * @template {Array<string|Schema<string|number>>} T\n * @extends {Schema<CastStringTemplateArgsToTemplate<T>>}\n */\nexport class $StringTemplate extends Schema {\n /**\n * @param {T} shape\n */\n constructor (shape) {\n super()\n this.shape = shape\n this._r = new RegExp('^' + shape.map(_schemaStringTemplateToRegex).map(opts => `(${opts.join('|')})`).join('') + '$')\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} [err]\n * @return {o is CastStringTemplateArgsToTemplate<T>}\n */\n check (o, err) {\n const c = this._r.exec(o) != null\n /* c8 ignore next */\n !c && err?.extend(null, this._r.toString(), o.toString(), 'String doesn\\'t match string template.')\n return c\n }\n}\n\n/**\n * @template {Array<string|Schema<string|number>>} T\n * @param {T} literals\n * @return {CastToSchema<$StringTemplate<T>>}\n */\nexport const $stringTemplate = (...literals) => new $StringTemplate(literals)\nexport const $$stringTemplate = $constructedBy($StringTemplate)\n\nconst isOptionalSymbol = Symbol('optional')\n/**\n * @template {Schema<any>} S\n * @extends Schema<Unwrap<S>|undefined>\n */\nclass $Optional extends Schema {\n /**\n * @param {S} shape\n */\n constructor (shape) {\n super()\n this.shape = shape\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} [err]\n * @return {o is (Unwrap<S>|undefined)}\n */\n check (o, err) {\n const c = o === undefined || this.shape.check(o)\n /* c8 ignore next */\n !c && err?.extend(null, 'undefined (optional)', '()')\n return c\n }\n\n get [isOptionalSymbol] () { return true }\n}\nexport const $$optional = $constructedBy($Optional)\n\n/**\n * @extends Schema<never>\n */\nclass $Never extends Schema {\n /**\n * @param {any} _o\n * @param {ValidationError} [err]\n * @return {_o is never}\n */\n check (_o, err) {\n /* c8 ignore next */\n err?.extend(null, 'never', typeof _o)\n return false\n }\n}\n\n/**\n * @type {Schema<never>}\n */\nexport const $never = new $Never()\nexport const $$never = $constructedBy($Never)\n\n/**\n * @template {{ [key: string|symbol|number]: Schema<any> }} S\n * @typedef {{ [Key in keyof S as S[Key] extends $Optional<Schema<any>> ? Key : never]?: S[Key] extends $Optional<Schema<infer Type>> ? Type : never } & { [Key in keyof S as S[Key] extends $Optional<Schema<any>> ? never : Key]: S[Key] extends Schema<infer Type> ? Type : never }} $ObjectToType\n */\n\n/**\n * @template {{[key:string|symbol|number]: Schema<any>}} S\n * @extends {Schema<$ObjectToType<S>>}\n */\nexport class $Object extends Schema {\n /**\n * @param {S} shape\n * @param {boolean} partial\n */\n constructor (shape, partial = false) {\n super()\n /**\n * @type {S}\n */\n this.shape = shape\n this._isPartial = partial\n }\n\n static _dilutes = true\n\n /**\n * @type {Schema<Partial<$ObjectToType<S>>>}\n */\n get partial () {\n return new $Object(this.shape, true)\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} err\n * @return {o is $ObjectToType<S>}\n */\n check (o, err) {\n if (o == null) {\n /* c8 ignore next */\n err?.extend(null, 'object', 'null')\n return false\n }\n return obj.every(this.shape, (vv, vk) => {\n const c = (this._isPartial && !obj.hasProperty(o, vk)) || vv.check(o[vk], err)\n !c && err?.extend(vk.toString(), vv.toString(), typeof o[vk], 'Object property does not match')\n return c\n })\n }\n}\n\n/**\n * @template S\n * @typedef {Schema<{ [Key in keyof S as S[Key] extends $Optional<Schema<any>> ? Key : never]?: S[Key] extends $Optional<Schema<infer Type>> ? Type : never } & { [Key in keyof S as S[Key] extends $Optional<Schema<any>> ? never : Key]: S[Key] extends Schema<infer Type> ? Type : never }>} _ObjectDefToSchema\n */\n\n// I used an explicit type annotation instead of $ObjectToType, so that the user doesn't see the\n// weird type definitions when inspecting type definions.\n/**\n * @template {{ [key:string|symbol|number]: Schema<any> }} S\n * @param {S} def\n * @return {_ObjectDefToSchema<S> extends Schema<infer S> ? Schema<{ [K in keyof S]: S[K] }> : never}\n */\nexport const $object = def => /** @type {any} */ (new $Object(def))\nexport const $$object = $constructedBy($Object)\n/**\n * @type {Schema<{[key:string]: any}>}\n */\nexport const $objectAny = $custom(o => o != null && (o.constructor === Object || o.constructor == null))\n\n/**\n * @template {Schema<string|number|symbol>} Keys\n * @template {Schema<any>} Values\n * @extends {Schema<{ [key in Unwrap<Keys>]: Unwrap<Values> }>}\n */\nexport class $Record extends Schema {\n /**\n * @param {Keys} keys\n * @param {Values} values\n */\n constructor (keys, values) {\n super()\n this.shape = {\n keys, values\n }\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} err\n * @return {o is { [key in Unwrap<Keys>]: Unwrap<Values> }}\n */\n check (o, err) {\n return o != null && obj.every(o, (vv, vk) => {\n const ck = this.shape.keys.check(vk, err)\n /* c8 ignore next */\n !ck && err?.extend(vk + '', 'Record', typeof o, ck ? 'Key doesn\\'t match schema' : 'Value doesn\\'t match value')\n return ck && this.shape.values.check(vv, err)\n })\n }\n}\n\n/**\n * @template {Schema<string|number|symbol>} Keys\n * @template {Schema<any>} Values\n * @param {Keys} keys\n * @param {Values} values\n * @return {CastToSchema<$Record<Keys,Values>>}\n */\nexport const $record = (keys, values) => new $Record(keys, values)\nexport const $$record = $constructedBy($Record)\n\n/**\n * @template {Schema<any>[]} S\n * @extends {Schema<{ [Key in keyof S]: S[Key] extends Schema<infer Type> ? Type : never }>}\n */\nexport class $Tuple extends Schema {\n /**\n * @param {S} shape\n */\n constructor (shape) {\n super()\n this.shape = shape\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} err\n * @return {o is { [K in keyof S]: S[K] extends Schema<infer Type> ? Type : never }}\n */\n check (o, err) {\n return o != null && obj.every(this.shape, (vv, vk) => {\n const c = /** @type {Schema<any>} */ (vv).check(o[vk], err)\n /* c8 ignore next */\n !c && err?.extend(vk.toString(), 'Tuple', typeof vv)\n return c\n })\n }\n}\n\n/**\n * @template {Array<Schema<any>>} T\n * @param {T} def\n * @return {CastToSchema<$Tuple<T>>}\n */\nexport const $tuple = (...def) => new $Tuple(def)\nexport const $$tuple = $constructedBy($Tuple)\n\n/**\n * @template {Schema<any>} S\n * @extends {Schema<Array<S extends Schema<infer T> ? T : never>>}\n */\nexport class $Array extends Schema {\n /**\n * @param {Array<S>} v\n */\n constructor (v) {\n super()\n /**\n * @type {Schema<S extends Schema<infer T> ? T : never>}\n */\n this.shape = v.length === 1 ? v[0] : new $Union(v)\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} [err]\n * @return {o is Array<S extends Schema<infer T> ? T : never>} o\n */\n check (o, err) {\n const c = arr.isArray(o) && arr.every(o, oi => this.shape.check(oi))\n /* c8 ignore next */\n !c && err?.extend(null, 'Array', '')\n return c\n }\n}\n\n/**\n * @template {Array<Schema<any>>} T\n * @param {T} def\n * @return {Schema<Array<T extends Array<Schema<infer S>> ? S : never>>}\n */\nexport const $array = (...def) => new $Array(def)\nexport const $$array = $constructedBy($Array)\n/**\n * @type {Schema<Array<any>>}\n */\nexport const $arrayAny = $custom(o => arr.isArray(o))\n\n/**\n * @template T\n * @extends {Schema<T>}\n */\nexport class $InstanceOf extends Schema {\n /**\n * @param {new (...args:any) => T} constructor\n * @param {((o:T) => boolean)|null} check\n */\n constructor (constructor, check) {\n super()\n this.shape = constructor\n this._c = check\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} err\n * @return {o is T}\n */\n check (o, err) {\n const c = o instanceof this.shape && (this._c == null || this._c(o))\n /* c8 ignore next */\n !c && err?.extend(null, this.shape.name, o?.constructor.name)\n return c\n }\n}\n\n/**\n * @template T\n * @param {new (...args:any) => T} c\n * @param {((o:T) => boolean)|null} check\n * @return {Schema<T>}\n */\nexport const $instanceOf = (c, check = null) => new $InstanceOf(c, check)\nexport const $$instanceOf = $constructedBy($InstanceOf)\n\nexport const $$schema = $instanceOf(Schema)\n\n/**\n * @template {Schema<any>[]} Args\n * @typedef {(...args:UnwrapArray<TuplePop<Args>>)=>Unwrap<TupleLast<Args>>} _LArgsToLambdaDef\n */\n\n/**\n * @template {Array<Schema<any>>} Args\n * @extends {Schema<_LArgsToLambdaDef<Args>>}\n */\nexport class $Lambda extends Schema {\n /**\n * @param {Args} args\n */\n constructor (args) {\n super()\n this.len = args.length - 1\n this.args = $tuple(...args.slice(-1))\n this.res = args[this.len]\n }\n\n /**\n * @param {any} f\n * @param {ValidationError} err\n * @return {f is _LArgsToLambdaDef<Args>}\n */\n check (f, err) {\n const c = f.constructor === Function && f.length <= this.len\n /* c8 ignore next */\n !c && err?.extend(null, 'function', typeof f)\n return c\n }\n}\n\n/**\n * @template {Schema<any>[]} Args\n * @param {Args} args\n * @return {Schema<(...args:UnwrapArray<TuplePop<Args>>)=>Unwrap<TupleLast<Args>>>}\n */\nexport const $lambda = (...args) => new $Lambda(args.length > 0 ? args : [$void])\nexport const $$lambda = $constructedBy($Lambda)\n\n/**\n * @type {Schema<Function>}\n */\nexport const $function = $custom(o => typeof o === 'function')\n\n/**\n * @template {Array<Schema<any>>} T\n * @extends {Schema<Intersect<UnwrapArray<T>>>}\n */\nexport class $Intersection extends Schema {\n /**\n * @param {T} v\n */\n constructor (v) {\n super()\n /**\n * @type {T}\n */\n this.shape = v\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} [err]\n * @return {o is Intersect<UnwrapArray<T>>}\n */\n check (o, err) {\n // @ts-ignore\n const c = arr.every(this.shape, check => check.check(o, err))\n /* c8 ignore next */\n !c && err?.extend(null, 'Intersectinon', typeof o)\n return c\n }\n}\n\n/**\n * @template {Schema<any>[]} T\n * @param {T} def\n * @return {CastToSchema<$Intersection<T>>}\n */\nexport const $intersect = (...def) => new $Intersection(def)\nexport const $$intersect = $constructedBy($Intersection, o => o.shape.length > 0) // Intersection with length=0 is considered \"any\"\n\n/**\n * @template S\n * @extends {Schema<S>}\n */\nexport class $Union extends Schema {\n static _dilutes = true\n\n /**\n * @param {Array<Schema<S>>} v\n */\n constructor (v) {\n super()\n this.shape = v\n }\n\n /**\n * @param {any} o\n * @param {ValidationError} [err]\n * @return {o is S}\n */\n check (o, err) {\n const c = arr.some(this.shape, (vv) => vv.check(o, err))\n err?.extend(null, 'Union', typeof o)\n return c\n }\n}\n\n/**\n * @template {Array<any>} T\n * @param {T} schemas\n * @return {CastToSchema<$Union<Unwrap<ReadSchema<T>>>>}\n */\nexport const $union = (...schemas) => schemas.findIndex($s => $$union.check($s)) >= 0\n ? $union(...schemas.map($s => $($s)).map($s => $$union.check($s) ? $s.shape : [$s]).flat(1))\n : (schemas.length === 1\n ? schemas[0]\n : new $Union(schemas))\nexport const $$union = /** @type {Schema<$Union<any>>} */ ($constructedBy($Union))\n\nconst _t = () => true\n/**\n * @type {Schema<any>}\n */\nexport const $any = $custom(_t)\nexport const $$any = /** @type {Schema<Schema<any>>} */ ($constructedBy($Custom, o => o.shape === _t))\n\n/**\n * @type {Schema<bigint>}\n */\nexport const $bigint = $custom(o => typeof o === 'bigint')\nexport const $$bigint = /** @type {Schema<Schema<BigInt>>} */ ($custom(o => o === $bigint))\n\n/**\n * @type {Schema<symbol>}\n */\nexport const $symbol = $custom(o => typeof o === 'symbol')\nexport const $$symbol = /** @type {Schema<Schema<Symbol>>} */ ($custom(o => o === $symbol))\n\n/**\n * @type {Schema<number>}\n */\nexport const $number = $custom(o => typeof o === 'number')\nexport const $$number = /** @type {Schema<Schema<number>>} */ ($custom(o => o === $number))\n\n/**\n * @type {Schema<string>}\n */\nexport const $string = $custom(o => typeof o === 'string')\nexport const $$string = /** @type {Schema<Schema<string>>} */ ($custom(o => o === $string))\n\n/**\n * @type {Schema<boolean>}\n */\nexport const $boolean = $custom(o => typeof o === 'boolean')\nexport const $$boolean = /** @type {Schema<Schema<Boolean>>} */ ($custom(o => o === $boolean))\n\n/**\n * @type {Schema<undefined>}\n */\nexport const $undefined = $literal(undefined)\nexport const $$undefined = /** @type {Schema<Schema<undefined>>} */ ($constructedBy($Literal, o => o.shape.length === 1 && o.shape[0] === undefined))\n\n/**\n * @type {Schema<void>}\n */\nexport const $void = $literal(undefined)\nexport const $$void = /** @type {Schema<Schema<void>>} */ ($$undefined)\n\nexport const $null = $literal(null)\nexport const $$null = /** @type {Schema<Schema<null>>} */ ($constructedBy($Literal, o => o.shape.length === 1 && o.shape[0] === null))\n\nexport const $uint8Array = $constructedBy(Uint8Array)\nexport const $$uint8Array = /** @type {Schema<Schema<Uint8Array>>} */ ($constructedBy($ConstructedBy, o => o.shape === Uint8Array))\n\n/**\n * @type {Schema<Primitive>}\n */\nexport const $primitive = $union($number, $string, $null, $undefined, $bigint, $boolean, $symbol)\n\n/**\n * @typedef {JSON[]} JSONArray\n */\n/**\n * @typedef {Primitive|JSONArray|{ [key:string]:JSON }} JSON\n */\n/**\n * @type {Schema<null|number|string|boolean|JSON[]|{[key:string]:JSON}>}\n */\nexport const $json = (() => {\n const $jsonArr = /** @type {$Array<$any>} */ ($array($any))\n const $jsonRecord = /** @type {$Record<$string,$any>} */ ($record($string, $any))\n const $json = $union($number, $string, $null, $boolean, $jsonArr, $jsonRecord)\n $jsonArr.shape = $json\n $jsonRecord.shape.values = $json\n return $json\n})()\n\n/**\n * @template {any} IN\n * @typedef {IN extends Schema<any> ? IN\n * : (IN extends string|number|boolean|null ? Schema<IN>\n * : (IN extends new (...args:any[])=>any ? Schema<InstanceType<IN>>\n * : (IN extends any[] ? Schema<{ [K in keyof IN]: Unwrap<ReadSchema<IN[K]>> }[number]>\n * : (IN extends object ? (_ObjectDefToSchema<{[K in keyof IN]:ReadSchema<IN[K]>}> extends Schema<infer S> ? Schema<{ [K in keyof S]: S[K] }> : never)\n * : never)\n * )\n * )\n * )\n * } ReadSchemaOld\n */\n\n/**\n * @template {any} IN\n * @typedef {[Extract<IN,Schema<any>>,Extract<IN,string|number|boolean|null>,Extract<IN,new (...args:any[])=>any>,Extract<IN,any[]>,Extract<Exclude<IN,Schema<any>|string|number|boolean|null|(new (...args:any[])=>any)|any[]>,object>] extends [infer Schemas, infer Primitives, infer Constructors, infer Arrs, infer Obj]\n * ? Schema<\n * (Schemas extends Schema<infer S> ? S : never)\n * | Primitives\n * | (Constructors extends new (...args:any[])=>any ? InstanceType<Constructors> : never)\n * | (Arrs extends any[] ? { [K in keyof Arrs]: Unwrap<ReadSchema<Arrs[K]>> }[number] : never)\n * | (Obj extends object ? Unwrap<(_ObjectDefToSchema<{[K in keyof Obj]:ReadSchema<Obj[K]>}> extends Schema<infer S> ? Schema<{ [K in keyof S]: S[K] }> : never)> : never)>\n * : never\n * } ReadSchema\n */\n\n/**\n * @typedef {ReadSchema<{x:42}|{y:99}|Schema<string>|[1,2,{}]>} Q\n */\n\n/**\n * @template IN\n * @param {IN} o\n * @return {ReadSchema<IN>}\n */\nexport const $ = o => {\n if ($$schema.check(o)) {\n return /** @type {any} */ (o)\n } else if ($objectAny.check(o)) {\n /**\n * @type {any}\n */\n const o2 = {}\n for (const k in o) {\n o2[k] = $(o[k])\n }\n return /** @type {any} */ ($object(o2))\n } else if ($arrayAny.check(o)) {\n return /** @type {any} */ ($union(...o.map($)))\n } else if ($primitive.check(o)) {\n return /** @type {any} */ ($literal(o))\n } else if ($function.check(o)) {\n return /** @type {any} */ ($constructedBy(/** @type {any} */ (o)))\n }\n /* c8 ignore next */\n error.unexpectedCase()\n}\n\n/* c8 ignore start */\n/**\n * Assert that a variable is of this specific type.\n * The assertion check is only performed in non-production environments.\n *\n * @type {<T>(o:any,schema:Schema<T>) => asserts o is T}\n */\nexport const assert = env.production\n ? () => {}\n : (o, schema) => {\n const err = new ValidationError()\n if (!schema.check(o, err)) {\n throw error.create(`Expected value to be of type ${schema.constructor.name}.\\n${err.toString()}`)\n }\n }\n/* c8 ignore end */\n\n/**\n * @template In\n * @template Out\n * @typedef {{ if: Schema<In>, h: (o:In,state?:any)=>Out }} Pattern\n */\n\n/**\n * @template {Pattern<any,any>} P\n * @template In\n * @typedef {ReturnType<Extract<P,Pattern<In extends number ? number : (In extends string ? string : In),any>>['h']>} PatternMatchResult\n */\n\n/**\n * @todo move this to separate library\n * @template {any} [State=undefined]\n * @template {Pattern<any,any>} [Patterns=never]\n */\nexport class PatternMatcher {\n /**\n * @param {Schema<State>} [$state]\n */\n constructor ($state) {\n /**\n * @type {Array<Patterns>}\n */\n this.patterns = []\n this.$state = $state\n }\n\n /**\n * @template P\n * @template R\n * @param {P} pattern\n * @param {(o:NoInfer<Unwrap<ReadSchema<P>>>,s:State)=>R} handler\n * @return {PatternMatcher<State,Patterns|Pattern<Unwrap<ReadSchema<P>>,R>>}\n */\n if (pattern, handler) {\n // @ts-ignore\n this.patterns.push({ if: $(pattern), h: handler })\n // @ts-ignore\n return this\n }\n\n /**\n * @template R\n * @param {(o:any,s:State)=>R} h\n */\n else (h) {\n return this.if($any, h)\n }\n\n /**\n * @return {State extends undefined\n * ? <In extends Unwrap<Patterns['if']>>(o:In,state?:undefined)=>PatternMatchResult<Patterns,In>\n * : <In extends Unwrap<Patterns['if']>>(o:In,state:State)=>PatternMatchResult<Patterns,In>}\n */\n done () {\n // @ts-ignore\n return /** @type {any} */ (o, s) => {\n for (let i = 0; i < this.patterns.length; i++) {\n const p = this.patterns[i]\n if (p.if.check(o)) {\n // @ts-ignore\n return p.h(o, s)\n }\n }\n throw error.create('Unhandled pattern')\n }\n }\n}\n\n/**\n * @template [State=undefined]\n * @param {State} [state]\n * @return {PatternMatcher<State extends undefined ? undefined : Unwrap<ReadSchema<State>>>}\n */\nexport const match = state => new PatternMatcher(/** @type {any} */ (state))\n\n/**\n * Helper function to generate a (non-exhaustive) sample set from a gives schema.\n *\n * @type {<T>(o:T,gen:prng.PRNG)=>T}\n */\nconst _random = /** @type {any} */ (match(/** @type {Schema<prng.PRNG>} */ ($any))\n .if($$number, (_o, gen) => prng.int53(gen, number.MIN_SAFE_INTEGER, number.MAX_SAFE_INTEGER))\n .if($$string, (_o, gen) => prng.word(gen))\n .if($$boolean, (_o, gen) => prng.bool(gen))\n .if($$bigint, (_o, gen) => BigInt(prng.int53(gen, number.MIN_SAFE_INTEGER, number.MAX_SAFE_INTEGER)))\n .if($$union, (o, gen) => random(gen, prng.oneOf(gen, o.shape)))\n .if($$object, (o, gen) => {\n /**\n * @type {any}\n */\n const res = {}\n for (const k in o.shape) {\n let prop = o.shape[k]\n if ($$optional.check(prop)) {\n if (prng.bool(gen)) { continue }\n prop = prop.shape\n }\n res[k] = _random(prop, gen)\n }\n return res\n })\n .if($$array, (o, gen) => {\n const arr = []\n const n = prng.int32(gen, 0, 42)\n for (let i = 0; i < n; i++) {\n arr.push(random(gen, o.shape))\n }\n return arr\n })\n .if($$literal, (o, gen) => {\n return prng.oneOf(gen, o.shape)\n })\n .if($$null, (o, gen) => {\n return null\n })\n .if($$lambda, (o, gen) => {\n const res = random(gen, o.res)\n return () => res\n })\n .if($$any, (o, gen) => random(gen, prng.oneOf(gen, [\n $number, $string, $null, $undefined, $bigint, $boolean,\n $array($number),\n $record($union('a', 'b', 'c'), $number)\n ])))\n .if($$record, (o, gen) => {\n /**\n * @type {any}\n */\n const res = {}\n const keysN = prng.int53(gen, 0, 3)\n for (let i = 0; i < keysN; i++) {\n const key = random(gen, o.shape.keys)\n const val = random(gen, o.shape.values)\n res[key] = val\n }\n return res\n })\n .done())\n\n/**\n * @template S\n * @param {prng.PRNG} gen\n * @param {S} schema\n * @return {Unwrap<ReadSchema<S>>}\n */\nexport const random = (gen, schema) => /** @type {any} */ (_random($(schema), gen))\n","/* eslint-env browser */\n\n/**\n * Utility module to work with the DOM.\n *\n * @module dom\n */\n\nimport * as pair from './pair.js'\nimport * as map from './map.js'\nimport * as $ from './schema.js'\n\n/* c8 ignore start */\n/**\n * @type {Document}\n */\nexport const doc = /** @type {Document} */ (typeof document !== 'undefined' ? document : {})\n\n/**\n * @param {string} name\n * @return {HTMLElement}\n */\nexport const createElement = name => doc.createElement(name)\n\n/**\n * @return {DocumentFragment}\n */\nexport const createDocumentFragment = () => doc.createDocumentFragment()\n\n/**\n * @type {$.Schema<DocumentFragment>}\n */\nexport const $fragment = $.$custom(el => el.nodeType === DOCUMENT_FRAGMENT_NODE)\n\n/**\n * @param {string} text\n * @return {Text}\n */\nexport const createTextNode = text => doc.createTextNode(text)\n\nexport const domParser = /** @type {DOMParser} */ (typeof DOMParser !== 'undefined' ? new DOMParser() : null)\n\n/**\n * @param {HTMLElement} el\n * @param {string} name\n * @param {Object} opts\n */\nexport const emitCustomEvent = (el, name, opts) => el.dispatchEvent(new CustomEvent(name, opts))\n\n/**\n * @param {Element} el\n * @param {Array<pair.Pair<string,string|boolean>>} attrs Array of key-value pairs\n * @return {Element}\n */\nexport const setAttributes = (el, attrs) => {\n pair.forEach(attrs, (key, value) => {\n if (value === false) {\n el.removeAttribute(key)\n } else if (value === true) {\n el.setAttribute(key, '')\n } else {\n // @ts-ignore\n el.setAttribute(key, value)\n }\n })\n return el\n}\n\n/**\n * @param {Element} el\n * @param {Map<string, string>} attrs Array of key-value pairs\n * @return {Element}\n */\nexport const setAttributesMap = (el, attrs) => {\n attrs.forEach((value, key) => { el.setAttribute(key, value) })\n return el\n}\n\n/**\n * @param {Array<Node>|HTMLCollection} children\n * @return {DocumentFragment}\n */\nexport const fragment = children => {\n const fragment = createDocumentFragment()\n for (let i = 0; i < children.length; i++) {\n appendChild(fragment, children[i])\n }\n return fragment\n}\n\n/**\n * @param {Element} parent\n * @param {Array<Node>} nodes\n * @return {Element}\n */\nexport const append = (parent, nodes) => {\n appendChild(parent, fragment(nodes))\n return parent\n}\n\n/**\n * @param {HTMLElement} el\n */\nexport const remove = el => el.remove()\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\nexport const addEventListener = (el, name, f) => el.addEventListener(name, f)\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\nexport const removeEventListener = (el, name, f) => el.removeEventListener(name, f)\n\n/**\n * @param {Node} node\n * @param {Array<pair.Pair<string,EventListener>>} listeners\n * @return {Node}\n */\nexport const addEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => addEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {Node} node\n * @param {Array<pair.Pair<string,EventListener>>} listeners\n * @return {Node}\n */\nexport const removeEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => removeEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {string} name\n * @param {Array<pair.Pair<string,string>|pair.Pair<string,boolean>>} attrs Array of key-value pairs\n * @param {Array<Node>} children\n * @return {Element}\n */\nexport const element = (name, attrs = [], children = []) =>\n append(setAttributes(createElement(name), attrs), children)\n\n/**\n * @type {$.Schema<Element>}\n */\nexport const $element = $.$custom(el => el.nodeType === ELEMENT_NODE)\n\n/**\n * @param {number} width\n * @param {number} height\n */\nexport const canvas = (width, height) => {\n const c = /** @type {HTMLCanvasElement} */ (createElement('canvas'))\n c.height = height\n c.width = width\n return c\n}\n\n/**\n * @param {string} t\n * @return {Text}\n */\nexport const text = createTextNode\n\n/**\n * @type {$.Schema<Text>}\n */\nexport const $text = $.$custom(el => el.nodeType === TEXT_NODE)\n\n/**\n * @param {pair.Pair<string,string>} pair\n */\nexport const pairToStyleString = pair => `${pair.left}:${pair.right};`\n\n/**\n * @param {Array<pair.Pair<string,string>>} pairs\n * @return {string}\n */\nexport const pairsToStyleString = pairs => pairs.map(pairToStyleString).join('')\n\n/**\n * @param {Map<string,string>} m\n * @return {string}\n */\nexport const mapToStyleString = m => map.map(m, (value, key) => `${key}:${value};`).join('')\n\n/**\n * @todo should always query on a dom element\n *\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {HTMLElement | null}\n */\nexport const querySelector = (el, query) => el.querySelector(query)\n\n/**\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {NodeListOf<HTMLElement>}\n */\nexport const querySelectorAll = (el, query) => el.querySelectorAll(query)\n\n/**\n * @param {string} id\n * @return {HTMLElement}\n */\nexport const getElementById = id => /** @type {HTMLElement} */ (doc.getElementById(id))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\nconst _parse = html => domParser.parseFromString(`<html><body>${html}</body></html>`, 'text/html').body\n\n/**\n * @param {string} html\n * @return {DocumentFragment}\n */\nexport const parseFragment = html => fragment(/** @type {any} */ (_parse(html).childNodes))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\nexport const parseElement = html => /** @type HTMLElement */ (_parse(html).firstElementChild)\n\n/**\n * @param {HTMLElement} oldEl\n * @param {HTMLElement|DocumentFragment} newEl\n */\nexport const replaceWith = (oldEl, newEl) => oldEl.replaceWith(newEl)\n\n/**\n * @param {HTMLElement} parent\n * @param {HTMLElement} el\n * @param {Node|null} ref\n * @return {HTMLElement}\n */\nexport const insertBefore = (parent, el, ref) => parent.insertBefore(el, ref)\n\n/**\n * @param {Node} parent\n * @param {Node} child\n * @return {Node}\n */\nexport const appendChild = (parent, child) => parent.appendChild(child)\n\nexport const ELEMENT_NODE = doc.ELEMENT_NODE\nexport const TEXT_NODE = doc.TEXT_NODE\nexport const CDATA_SECTION_NODE = doc.CDATA_SECTION_NODE\nexport const COMMENT_NODE = doc.COMMENT_NODE\nexport const DOCUMENT_NODE = doc.DOCUMENT_NODE\nexport const DOCUMENT_TYPE_NODE = doc.DOCUMENT_TYPE_NODE\nexport const DOCUMENT_FRAGMENT_NODE = doc.DOCUMENT_FRAGMENT_NODE\n\n/**\n * @type {$.Schema<Node>}\n */\nexport const $node = $.$custom(el => el.nodeType === DOCUMENT_NODE)\n\n/**\n * @param {any} node\n * @param {number} type\n */\nexport const checkNodeType = (node, type) => node.nodeType === type\n\n/**\n * @param {Node} parent\n * @param {HTMLElement} child\n */\nexport const isParentOf = (parent, child) => {\n let p = child.parentNode\n while (p && p !== parent) {\n p = p.parentNode\n }\n return p === parent\n}\n/* c8 ignore stop */\n","/* global requestIdleCallback, requestAnimationFrame, cancelIdleCallback, cancelAnimationFrame */\n\nimport * as time from './time.js'\n\n/**\n * Utility module to work with EcmaScript's event loop.\n *\n * @module eventloop\n */\n\n/**\n * @type {Array<function>}\n */\nlet queue = []\n\nconst _runQueue = () => {\n for (let i = 0; i < queue.length; i++) {\n queue[i]()\n }\n queue = []\n}\n\n/**\n * @param {function():void} f\n */\nexport const enqueue = f => {\n queue.push(f)\n if (queue.length === 1) {\n setTimeout(_runQueue, 0)\n }\n}\n\n/**\n * @typedef {Object} TimeoutObject\n * @property {function} TimeoutObject.destroy\n */\n\n/**\n * @param {function(number):void} clearFunction\n */\nconst createTimeoutClass = clearFunction => class TT {\n /**\n * @param {number} timeoutId\n */\n constructor (timeoutId) {\n this._ = timeoutId\n }\n\n destroy () {\n clearFunction(this._)\n }\n}\n\nconst Timeout = createTimeoutClass(clearTimeout)\n\n/**\n * @param {number} timeout\n * @param {function} callback\n * @return {TimeoutObject}\n */\nexport const timeout = (timeout, callback) => new Timeout(setTimeout(callback, timeout))\n\nconst Interval = createTimeoutClass(clearInterval)\n\n/**\n * @param {number} timeout\n * @param {function} callback\n * @return {TimeoutObject}\n */\nexport const interval = (timeout, callback) => new Interval(setInterval(callback, timeout))\n\n/* c8 ignore next */\nexport const Animation = createTimeoutClass(arg => typeof requestAnimationFrame !== 'undefined' && cancelAnimationFrame(arg))\n\n/**\n * @param {function(number):void} cb\n * @return {TimeoutObject}\n */\n/* c8 ignore next */\nexport const animationFrame = cb => typeof requestAnimationFrame === 'undefined' ? timeout(0, cb) : new Animation(requestAnimationFrame(cb))\n\n/* c8 ignore next */\n// @ts-ignore\nconst Idle = createTimeoutClass(arg => typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(arg))\n\n/**\n * Note: this is experimental and is probably only useful in browsers.\n *\n * @param {function} cb\n * @return {TimeoutObject}\n */\n/* c8 ignore next 2 */\n// @ts-ignore\nexport const idleCallback = cb => typeof requestIdleCallback !== 'undefined' ? new Idle(requestIdleCallback(cb)) : timeout(1000, cb)\n\n/**\n * @param {number} timeout Timeout of the debounce action\n * @param {number} triggerAfter Optional. Trigger callback after a certain amount of time\n * without waiting for debounce.\n */\nexport const createDebouncer = (timeout, triggerAfter = -1) => {\n let timer = -1\n /**\n * @type {number?}\n */\n let lastCall = null\n /**\n * @param {((...args: any)=>void)?} cb function to trigger after debounce. If null, it will reset the\n * debounce.\n */\n return cb => {\n clearTimeout(timer)\n if (cb) {\n if (triggerAfter >= 0) {\n const now = time.getUnixTime()\n if (lastCall === null) lastCall = now\n if (now - lastCall > triggerAfter) {\n lastCall = null\n timer = /** @type {any} */ (setTimeout(cb, 0))\n return\n }\n }\n timer = /** @type {any} */ (setTimeout(() => { lastCall = null; cb() }, timeout))\n } else {\n lastCall = null\n }\n }\n}\n","/**\n * @module sha256\n * Spec: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\n * Resources:\n * - https://web.archive.org/web/20150315061807/http://csrc.nist.gov/groups/STM/cavp/documents/shs/sha256-384-512.pdf\n */\n\nimport * as binary from '../binary.js'\n\n/**\n * @param {number} w - a 32bit uint\n * @param {number} shift\n */\nconst rotr = (w, shift) => (w >>> shift) | (w << (32 - shift))\n\n/**\n * Helper for SHA-224 & SHA-256. See 4.1.2.\n * @param {number} x\n */\nconst sum0to256 = x => rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22)\n\n/**\n * Helper for SHA-224 & SHA-256. See 4.1.2.\n * @param {number} x\n */\nconst sum1to256 = x => rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25)\n\n/**\n * Helper for SHA-224 & SHA-256. See 4.1.2.\n * @param {number} x\n */\nconst sigma0to256 = x => rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3\n\n/**\n * Helper for SHA-224 & SHA-256. See 4.1.2.\n * @param {number} x\n */\nconst sigma1to256 = x => rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10\n\n// @todo don't init these variables globally\n\n/**\n * See 4.2.2: Constant for sha256 & sha224\n * These words represent the first thirty-two bits of the fractional parts of\n * the cube roots of the first sixty-four prime numbers. In hex, these constant words are (from left to\n * right)\n */\nconst K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n])\n\n/**\n * See 5.3.3. Initial hash value.\n *\n * These words were obtained by taking the first thirty-two bits of the fractional parts of the\n * square roots of the first eight prime numbers.\n *\n * @todo shouldn't be a global variable\n */\nconst HINIT = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n])\n\n// time to beat: (large value < 4.35s)\n\nclass Hasher {\n constructor () {\n const buf = new ArrayBuffer(64 + 64 * 4)\n // Init working variables using a single arraybuffer\n this._H = new Uint32Array(buf, 0, 8)\n this._H.set(HINIT)\n // \"Message schedule\" - a working variable\n this._W = new Uint32Array(buf, 64, 64)\n }\n\n _updateHash () {\n const H = this._H\n const W = this._W\n for (let t = 16; t < 64; t++) {\n W[t] = sigma1to256(W[t - 2]) + W[t - 7] + sigma0to256(W[t - 15]) + W[t - 16]\n }\n let a = H[0]\n let b = H[1]\n let c = H[2]\n let d = H[3]\n let e = H[4]\n let f = H[5]\n let g = H[6]\n let h = H[7]\n for (let tt = 0, T1, T2; tt < 64; tt++) {\n T1 = (h + sum1to256(e) + ((e & f) ^ (~e & g)) + K[tt] + W[tt]) >>> 0\n T2 = (sum0to256(a) + ((a & b) ^ (a & c) ^ (b & c))) >>> 0\n h = g\n g = f\n f = e\n e = (d + T1) >>> 0\n d = c\n c = b\n b = a\n a = (T1 + T2) >>> 0\n }\n H[0] += a\n H[1] += b\n H[2] += c\n H[3] += d\n H[4] += e\n H[5] += f\n H[6] += g\n H[7] += h\n }\n\n /**\n * Returns a 32-byte hash.\n *\n * @param {Uint8Array} data\n */\n digest (data) {\n let i = 0\n for (; i + 56 <= data.length;) {\n // write data in big endianess\n let j = 0\n for (; j < 16 && i + 3 < data.length; j++) {\n this._W[j] = data[i++] << 24 | data[i++] << 16 | data[i++] << 8 | data[i++]\n }\n if (i % 64 !== 0) { // there is still room to write partial content and the ending bit.\n this._W.fill(0, j, 16)\n while (i < data.length) {\n this._W[j] |= data[i] << ((3 - (i % 4)) * 8)\n i++\n }\n this._W[j] |= binary.BIT8 << ((3 - (i % 4)) * 8)\n }\n this._updateHash()\n }\n // same check as earlier - the ending bit has been written\n const isPaddedWith1 = i % 64 !== 0\n this._W.fill(0, 0, 16)\n let j = 0\n for (; i < data.length; j++) {\n for (let ci = 3; ci >= 0 && i < data.length; ci--) {\n this._W[j] |= data[i++] << (ci * 8)\n }\n }\n // Write padding of the message. See 5.1.2.\n if (!isPaddedWith1) {\n this._W[j - (i % 4 === 0 ? 0 : 1)] |= binary.BIT8 << ((3 - (i % 4)) * 8)\n }\n // write length of message (size in bits) as 64 bit uint\n // @todo test that this works correctly\n this._W[14] = data.byteLength / binary.BIT30 // same as data.byteLength >>> 30 - but works on floats\n this._W[15] = data.byteLength * 8\n this._updateHash()\n // correct H endianness to use big endiannes and return a Uint8Array\n const dv = new Uint8Array(32)\n for (let i = 0; i < this._H.length; i++) {\n for (let ci = 0; ci < 4; ci++) {\n dv[i * 4 + ci] = this._H[i] >>> (3 - ci) * 8\n }\n }\n return dv\n }\n}\n\n/**\n * Returns a 32-byte hash.\n *\n * @param {Uint8Array} data\n */\nexport const digest = data => new Hasher().digest(data)\n","import * as Y from 'yjs';\nimport { Item, ContentType, Text, XmlElement, UndoManager } from 'yjs';\nimport { DecorationSet, Decoration } from 'prosemirror-view';\nimport { PluginKey, Plugin, TextSelection, AllSelection, NodeSelection, Selection } from 'prosemirror-state';\nimport 'y-protocols/awareness';\nimport { createMutex } from 'lib0/mutex';\nimport * as PModel from 'prosemirror-model';\nimport { Fragment, Node } from 'prosemirror-model';\nimport * as math from 'lib0/math';\nimport * as object from 'lib0/object';\nimport * as set from 'lib0/set';\nimport { simpleDiff } from 'lib0/diff';\nimport * as error from 'lib0/error';\nimport * as random from 'lib0/random';\nimport * as environment from 'lib0/environment';\nimport * as dom from 'lib0/dom';\nimport * as eventloop from 'lib0/eventloop';\nimport * as map from 'lib0/map';\nimport * as sha256 from 'lib0/hash/sha256';\nimport * as buf from 'lib0/buffer';\nimport { ReplaceStep } from 'prosemirror-transform';\n\n/**\n * The unique prosemirror plugin key for syncPlugin\n *\n * @public\n */\nconst ySyncPluginKey = new PluginKey('y-sync');\n\n/**\n * The unique prosemirror plugin key for undoPlugin\n *\n * @public\n */\nconst yUndoPluginKey = new PluginKey('y-undo');\n\n/**\n * The unique prosemirror plugin key for cursorPlugin\n *\n * @public\n */\nconst yCursorPluginKey = new PluginKey('yjs-cursor');\n\n/**\n * Custom function to transform sha256 hash to N byte\n *\n * @param {Uint8Array} digest\n */\nconst _convolute = digest => {\n const N = 6;\n for (let i = N; i < digest.length; i++) {\n digest[i % N] = digest[i % N] ^ digest[i];\n }\n return digest.slice(0, N)\n};\n\n/**\n * @param {any} json\n */\nconst hashOfJSON = (json) => buf.toBase64(_convolute(sha256.digest(buf.encodeAny(json))));\n\n/**\n * @module bindings/prosemirror\n */\n\n/**\n * @typedef {Object} BindingMetadata\n * @property {ProsemirrorMapping} BindingMetadata.mapping\n * @property {Map<import('prosemirror-model').MarkType, boolean>} BindingMetadata.isOMark - is overlapping mark\n */\n\n/**\n * @return BindingMetadata\n */\nconst createEmptyMeta = () => ({\n mapping: new Map(),\n isOMark: new Map()\n});\n\n/**\n * @param {Y.Item} item\n * @param {Y.Snapshot} [snapshot]\n */\nconst isVisible = (item, snapshot) =>\n snapshot === undefined\n ? !item.deleted\n : (snapshot.sv.has(item.id.client) && /** @type {number} */\n (snapshot.sv.get(item.id.client)) > item.id.clock &&\n !Y.isDeleted(snapshot.ds, item.id));\n\n/**\n * Either a node if type is YXmlElement or an Array of text nodes if YXmlText\n * @typedef {Map<Y.AbstractType<any>, PModel.Node | Array<PModel.Node>>} ProsemirrorMapping\n */\n\n/**\n * @typedef {Object} ColorDef\n * @property {string} ColorDef.light\n * @property {string} ColorDef.dark\n */\n\n/**\n * @typedef {Object} YSyncOpts\n * @property {Array<ColorDef>} [YSyncOpts.colors]\n * @property {Map<string,ColorDef>} [YSyncOpts.colorMapping]\n * @property {Y.PermanentUserData|null} [YSyncOpts.permanentUserData]\n * @property {ProsemirrorMapping} [YSyncOpts.mapping]\n * @property {function} [YSyncOpts.onFirstRender] Fired when the content from Yjs is initially rendered to ProseMirror\n */\n\n/**\n * @type {Array<ColorDef>}\n */\nconst defaultColors = [{ light: '#ecd44433', dark: '#ecd444' }];\n\n/**\n * @param {Map<string,ColorDef>} colorMapping\n * @param {Array<ColorDef>} colors\n * @param {string} user\n * @return {ColorDef}\n */\nconst getUserColor = (colorMapping, colors, user) => {\n // @todo do not hit the same color twice if possible\n if (!colorMapping.has(user)) {\n if (colorMapping.size < colors.length) {\n const usedColors = set.create();\n colorMapping.forEach((color) => usedColors.add(color));\n colors = colors.filter((color) => !usedColors.has(color));\n }\n colorMapping.set(user, random.oneOf(colors));\n }\n return /** @type {ColorDef} */ (colorMapping.get(user))\n};\n\n/**\n * This plugin listens to changes in prosemirror view and keeps yXmlState and view in sync.\n *\n * This plugin also keeps references to the type and the shared document so other plugins can access it.\n * @param {Y.XmlFragment} yXmlFragment\n * @param {YSyncOpts} opts\n * @return {any} Returns a prosemirror plugin that binds to this type\n */\nconst ySyncPlugin = (yXmlFragment, {\n colors = defaultColors,\n colorMapping = new Map(),\n permanentUserData = null,\n onFirstRender = () => {},\n mapping\n} = {}) => {\n let initialContentChanged = false;\n const binding = new ProsemirrorBinding(yXmlFragment, mapping);\n const plugin = new Plugin({\n props: {\n editable: (state) => {\n const syncState = ySyncPluginKey.getState(state);\n return syncState.snapshot == null && syncState.prevSnapshot == null\n }\n },\n key: ySyncPluginKey,\n state: {\n /**\n * @returns {any}\n */\n init: (_initargs, _state) => {\n return {\n type: yXmlFragment,\n doc: yXmlFragment.doc,\n binding,\n snapshot: null,\n prevSnapshot: null,\n isChangeOrigin: false,\n isUndoRedoOperation: false,\n addToHistory: true,\n colors,\n colorMapping,\n permanentUserData\n }\n },\n apply: (tr, pluginState) => {\n const change = tr.getMeta(ySyncPluginKey);\n if (change !== undefined) {\n pluginState = Object.assign({}, pluginState);\n for (const key in change) {\n pluginState[key] = change[key];\n }\n }\n pluginState.addToHistory = tr.getMeta('addToHistory') !== false;\n // always set isChangeOrigin. If undefined, this is not change origin.\n pluginState.isChangeOrigin = change !== undefined &&\n !!change.isChangeOrigin;\n pluginState.isUndoRedoOperation = change !== undefined && !!change.isChangeOrigin && !!change.isUndoRedoOperation;\n if (binding.prosemirrorView !== null) {\n if (\n change !== undefined &&\n (change.snapshot != null || change.prevSnapshot != null)\n ) {\n // snapshot changed, rerender next\n eventloop.timeout(0, () => {\n if (binding.prosemirrorView == null) {\n return\n }\n if (change.restore == null) {\n binding._renderSnapshot(\n change.snapshot,\n change.prevSnapshot,\n pluginState\n );\n } else {\n binding._renderSnapshot(\n change.snapshot,\n change.snapshot,\n pluginState\n );\n // reset to current prosemirror state\n delete pluginState.restore;\n delete pluginState.snapshot;\n delete pluginState.prevSnapshot;\n binding.mux(() => {\n binding._prosemirrorChanged(\n binding.prosemirrorView.state.doc\n );\n });\n }\n });\n }\n }\n return pluginState\n }\n },\n view: (view) => {\n binding.initView(view);\n if (mapping == null) {\n // force rerender to update the bindings mapping\n binding._forceRerender();\n }\n onFirstRender();\n return {\n update: () => {\n const pluginState = plugin.getState(view.state);\n if (\n pluginState.snapshot == null && pluginState.prevSnapshot == null\n ) {\n if (\n // If the content doesn't change initially, we don't render anything to Yjs\n // If the content was cleared by a user action, we want to catch the change and\n // represent it in Yjs\n initialContentChanged ||\n view.state.doc.content.findDiffStart(\n view.state.doc.type.createAndFill().content\n ) !== null\n ) {\n initialContentChanged = true;\n if (\n pluginState.addToHistory === false &&\n !pluginState.isChangeOrigin\n ) {\n const yUndoPluginState = yUndoPluginKey.getState(view.state);\n /**\n * @type {Y.UndoManager}\n */\n const um = yUndoPluginState && yUndoPluginState.undoManager;\n if (um) {\n um.stopCapturing();\n }\n }\n binding.mux(() => {\n /** @type {Y.Doc} */ (pluginState.doc).transact((tr) => {\n tr.meta.set('addToHistory', pluginState.addToHistory);\n binding._prosemirrorChanged(view.state.doc);\n }, ySyncPluginKey);\n });\n }\n }\n },\n destroy: () => {\n binding.destroy();\n }\n }\n }\n });\n return plugin\n};\n\n/**\n * @param {import('prosemirror-state').Transaction} tr\n * @param {ReturnType<typeof getRelativeSelection>} relSel\n * @param {ProsemirrorBinding} binding\n * @param {import('prosemirror-model').Node} [oldDoc]\n */\nconst restoreRelativeSelection = (tr, relSel, binding, oldDoc) => {\n if (relSel !== null && relSel.anchor !== null && relSel.head !== null) {\n if (relSel.type === 'all') {\n tr.setSelection(new AllSelection(tr.doc));\n } else if (relSel.type === 'node') {\n const anchor = relativePositionToAbsolutePosition(\n binding.doc,\n binding.type,\n relSel.anchor,\n binding.mapping\n );\n // anchor is null when the referenced node was deleted or moved out of\n // binding.type by a remote update; resolving null would throw.\n if (anchor !== null) {\n tr.setSelection(createSafeNodeSelection(tr, anchor));\n }\n } else if (relSel.type === 'nodeRange') {\n const anchor = relativePositionToAbsolutePosition(\n binding.doc,\n binding.type,\n relSel.anchor,\n binding.mapping\n );\n const head = relativePositionToAbsolutePosition(\n binding.doc,\n binding.type,\n relSel.head,\n binding.mapping\n );\n const selection = createSafeNodeRangeSelection(tr, anchor, head, relSel.depth);\n if (selection !== null) {\n tr.setSelection(selection);\n }\n } else {\n let anchor = relativePositionToAbsolutePosition(\n binding.doc,\n binding.type,\n relSel.anchor,\n binding.mapping\n );\n let head = relativePositionToAbsolutePosition(\n binding.doc,\n binding.type,\n relSel.head,\n binding.mapping\n );\n const needsContentFallback = oldDoc != null &&\n relSel.absAnchor != null &&\n relSel.absHead != null &&\n (\n anchor === null ||\n head === null ||\n (relSel.absAnchor > 1 && anchor !== null && anchor <= 1) ||\n (relSel.absHead > 1 && head !== null && head <= 1) ||\n isMisresolvedAfterStructuralChange(oldDoc, tr.doc, relSel.absAnchor, anchor) ||\n isMisresolvedAfterStructuralChange(oldDoc, tr.doc, relSel.absHead, head)\n );\n if (needsContentFallback) {\n anchor = findAbsolutePositionAfterStructuralChange(\n oldDoc,\n tr.doc,\n relSel.absAnchor\n );\n head = findAbsolutePositionAfterStructuralChange(\n oldDoc,\n tr.doc,\n relSel.absHead\n );\n }\n if (anchor !== null && head !== null) {\n tr.setSelection(TextSelection.between(tr.doc.resolve(anchor), tr.doc.resolve(head)));\n }\n }\n }\n};\n\n/**\n * @param {import('prosemirror-state').Transaction} tr\n * @param {number} pos\n * @returns {import('prosemirror-state').Selection}\n *\n * Creates a NodeSelection if the position points to a valid node, otherwise\n * creates a TextSelection near the position.\n */\nconst createSafeNodeSelection = (tr, pos) => {\n const $pos = tr.doc.resolve(pos);\n if ($pos.nodeAfter) {\n return NodeSelection.create(tr.doc, pos)\n } else {\n return TextSelection.near($pos)\n }\n};\n\n/**\n * Safely reconstructs a NodeRangeSelection from resolved absolute positions.\n *\n * @param {import('prosemirror-state').Transaction} tr - The transaction whose document provides resolved positions.\n * @param {number|null} anchor - Absolute document position marking the start (boundary) of the node range.\n * Use `relativePositionToAbsolutePosition` before calling this function.\n * @param {number|null} head - Absolute document position marking the end (boundary) of the node range.\n * Use `relativePositionToAbsolutePosition` before calling this function.\n * @param {number|undefined} depth - The nesting depth at which the range operates (e.g. 0 for\n * top-level blocks, 1 for blocks nested inside a wrapper). Passed through to\n * `Selection.fromJSON`; ignored by `@tiptap/extension-node-range` < v2.29 but\n * properly stored starting from that version.\n * @returns {import('prosemirror-state').Selection|null} Reconstructed selection, or null if\n * anchor/head could not be resolved.\n */\nconst createSafeNodeRangeSelection = (tr, anchor, head, depth) => {\n if (anchor === null || head === null) {\n return null\n }\n const clampedAnchor = Math.min(Math.max(anchor, 0), tr.doc.content.size);\n const clampedHead = Math.min(Math.max(head, 0), tr.doc.content.size);\n try {\n const selection = Selection.fromJSON(tr.doc, {\n type: 'nodeRange',\n anchor: clampedAnchor,\n head: clampedHead,\n depth\n });\n if (!selection.ranges.length) {\n return TextSelection.near(tr.doc.resolve(clampedAnchor))\n }\n return selection\n } catch (e) {\n return TextSelection.near(tr.doc.resolve(clampedAnchor))\n }\n};\n\n/**\n * @param {ProsemirrorBinding} pmbinding\n * @param {import('prosemirror-state').EditorState} state\n */\nconst getRelativeSelection = (pmbinding, state) => {\n const type = /** @type {any} */ (state.selection).jsonID;\n return {\n type,\n // `depth` is only meaningful for NodeRangeSelection; undefined for every other type.\n depth: type === 'nodeRange' ? /** @type {any} */ (state.selection).depth : undefined,\n anchor: absolutePositionToRelativePosition(\n state.selection.anchor,\n pmbinding.type,\n pmbinding.mapping\n ),\n head: absolutePositionToRelativePosition(\n state.selection.head,\n pmbinding.type,\n pmbinding.mapping\n ),\n absAnchor: state.selection.anchor,\n absHead: state.selection.head\n }\n};\n\n/**\n * Binding for prosemirror.\n *\n * @protected\n */\nclass ProsemirrorBinding {\n /**\n * @param {Y.XmlFragment} yXmlFragment The bind source\n * @param {ProsemirrorMapping} mapping\n */\n constructor (yXmlFragment, mapping = new Map()) {\n this.type = yXmlFragment;\n /**\n * this will be set once the view is created\n * @type {any}\n */\n this.prosemirrorView = null;\n this.mux = createMutex();\n this.mapping = mapping;\n /**\n * Is overlapping mark - i.e. mark does not exclude itself.\n *\n * @type {Map<import('prosemirror-model').MarkType, boolean>}\n */\n this.isOMark = new Map();\n this._observeFunction = this._typeChanged.bind(this);\n /**\n * @type {Y.Doc}\n */\n // @ts-ignore\n this.doc = yXmlFragment.doc;\n /**\n * current selection as relative positions in the Yjs model\n */\n this.beforeTransactionSelection = null;\n this.beforeAllTransactions = () => {\n if (this.beforeTransactionSelection === null && this.prosemirrorView != null) {\n this.beforeTransactionSelection = getRelativeSelection(\n this,\n this.prosemirrorView.state\n );\n }\n };\n this.afterAllTransactions = () => {\n this.beforeTransactionSelection = null;\n };\n this._domSelectionInView = null;\n }\n\n /**\n * Create a transaction for changing the prosemirror state.\n *\n * @returns\n */\n get _tr () {\n return this.prosemirrorView.state.tr.setMeta('addToHistory', false)\n }\n\n _isLocalCursorInView () {\n if (!this.prosemirrorView.hasFocus()) return false\n if (environment.isBrowser && this._domSelectionInView === null) {\n // Calculate the domSelectionInView and clear by next tick after all events are finished\n eventloop.timeout(0, () => {\n this._domSelectionInView = null;\n });\n this._domSelectionInView = this._isDomSelectionInView();\n }\n return this._domSelectionInView\n }\n\n _isDomSelectionInView () {\n const selection = this.prosemirrorView._root.getSelection();\n\n if (selection == null || selection.anchorNode == null) return false\n\n const range = this.prosemirrorView._root.createRange();\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n\n // This is a workaround for an edgecase where getBoundingClientRect will\n // return zero values if the selection is collapsed at the start of a newline\n // see reference here: https://stackoverflow.com/a/59780954\n const rects = range.getClientRects();\n if (rects.length === 0) {\n // probably buggy newline behavior, explicitly select the node contents\n if (range.startContainer && range.collapsed) {\n range.selectNodeContents(range.startContainer);\n }\n }\n\n const bounding = range.getBoundingClientRect();\n const documentElement = dom.doc.documentElement;\n\n return bounding.bottom >= 0 && bounding.right >= 0 &&\n bounding.left <=\n (window.innerWidth || documentElement.clientWidth || 0) &&\n bounding.top <= (window.innerHeight || documentElement.clientHeight || 0)\n }\n\n /**\n * @param {Y.Snapshot} snapshot\n * @param {Y.Snapshot} prevSnapshot\n */\n renderSnapshot (snapshot, prevSnapshot) {\n if (!prevSnapshot) {\n prevSnapshot = Y.createSnapshot(Y.createDeleteSet(), new Map());\n }\n this.prosemirrorView.dispatch(\n this._tr.setMeta(ySyncPluginKey, { snapshot, prevSnapshot })\n );\n }\n\n unrenderSnapshot () {\n this.mapping.clear();\n this.mux(() => {\n const fragmentContent = this.type.toArray().map((t) =>\n createNodeFromYElement(\n /** @type {Y.XmlElement} */ (t),\n this.prosemirrorView.state.schema,\n this\n )\n ).filter((n) => n !== null);\n // @ts-ignore\n const tr = this._tr.replace(\n 0,\n this.prosemirrorView.state.doc.content.size,\n new PModel.Slice(PModel.Fragment.from(fragmentContent), 0, 0)\n );\n tr.setMeta(ySyncPluginKey, { snapshot: null, prevSnapshot: null });\n this.prosemirrorView.dispatch(tr);\n });\n }\n\n _forceRerender () {\n this.mapping.clear();\n this.mux(() => {\n // If this is a forced rerender, this might neither happen as a pm change nor within a Yjs\n // transaction. Then the \"before selection\" doesn't exist. In this case, we need to create a\n // relative position before replacing content. Fixes #126\n const sel = this.beforeTransactionSelection !== null ? null : this.prosemirrorView.state.selection;\n const fragmentContent = this.type.toArray().map((t) =>\n createNodeFromYElement(\n /** @type {Y.XmlElement} */ (t),\n this.prosemirrorView.state.schema,\n this\n )\n ).filter((n) => n !== null);\n // @ts-ignore\n const tr = this._tr.replace(\n 0,\n this.prosemirrorView.state.doc.content.size,\n new PModel.Slice(PModel.Fragment.from(fragmentContent), 0, 0)\n );\n if (sel) {\n /**\n * If the Prosemirror document we just created from this.type is\n * smaller than the previous document, the selection might be\n * out of bound, which would make Prosemirror throw an error.\n */\n const clampedAnchor = math.min(math.max(sel.anchor, 0), tr.doc.content.size);\n const clampedHead = math.min(math.max(sel.head, 0), tr.doc.content.size);\n\n tr.setSelection(TextSelection.create(tr.doc, clampedAnchor, clampedHead));\n }\n this.prosemirrorView.dispatch(\n tr.setMeta(ySyncPluginKey, { isChangeOrigin: true, binding: this })\n );\n });\n }\n\n /**\n * @param {Y.Snapshot|Uint8Array} snapshot\n * @param {Y.Snapshot|Uint8Array} prevSnapshot\n * @param {Object} pluginState\n */\n _renderSnapshot (snapshot, prevSnapshot, pluginState) {\n /**\n * The document that contains the full history of this document.\n * @type {Y.Doc}\n */\n let historyDoc = this.doc;\n let historyType = this.type;\n if (!snapshot) {\n snapshot = Y.snapshot(this.doc);\n }\n if (snapshot instanceof Uint8Array || prevSnapshot instanceof Uint8Array) {\n if (!(snapshot instanceof Uint8Array) || !(prevSnapshot instanceof Uint8Array)) {\n // expected both snapshots to be v2 updates\n error.unexpectedCase();\n }\n historyDoc = new Y.Doc({ gc: false });\n Y.applyUpdateV2(historyDoc, prevSnapshot);\n prevSnapshot = Y.snapshot(historyDoc);\n Y.applyUpdateV2(historyDoc, snapshot);\n snapshot = Y.snapshot(historyDoc);\n if (historyType._item === null) {\n /**\n * If is a root type, we need to find the root key in the initial document\n * and use it to get the history type.\n */\n const rootKey = Array.from(this.doc.share.keys()).find(\n (key) => this.doc.share.get(key) === this.type\n );\n historyType = historyDoc.getXmlFragment(rootKey);\n } else {\n /**\n * If it is a sub type, we use the item id to find the history type.\n */\n const historyStructs =\n historyDoc.store.clients.get(historyType._item.id.client) ?? [];\n const itemIndex = Y.findIndexSS(\n historyStructs,\n historyType._item.id.clock\n );\n const item = /** @type {Y.Item} */ (historyStructs[itemIndex]);\n const content = /** @type {Y.ContentType} */ (item.content);\n historyType = /** @type {Y.XmlFragment} */ (content.type);\n }\n }\n // clear mapping because we are going to rerender\n this.mapping.clear();\n this.mux(() => {\n historyDoc.transact((transaction) => {\n // before rendering, we are going to sanitize ops and split deleted ops\n // if they were deleted by seperate users.\n /**\n * @type {Y.PermanentUserData}\n */\n const pud = pluginState.permanentUserData;\n if (pud) {\n pud.dss.forEach((ds) => {\n Y.iterateDeletedStructs(transaction, ds, (_item) => {});\n });\n }\n /**\n * @param {'removed'|'added'} type\n * @param {Y.ID} id\n */\n const computeYChange = (type, id) => {\n const user = type === 'added'\n ? pud.getUserByClientId(id.client)\n : pud.getUserByDeletedId(id);\n return {\n user,\n type,\n color: getUserColor(\n pluginState.colorMapping,\n pluginState.colors,\n user\n )\n }\n };\n // Create document fragment and render\n const fragmentContent = Y.typeListToArraySnapshot(\n historyType,\n new Y.Snapshot(prevSnapshot.ds, snapshot.sv)\n ).map((t) => {\n if (\n !t._item.deleted || isVisible(t._item, snapshot) ||\n isVisible(t._item, prevSnapshot)\n ) {\n return createNodeFromYElement(\n t,\n this.prosemirrorView.state.schema,\n { mapping: new Map(), isOMark: new Map() },\n snapshot,\n prevSnapshot,\n computeYChange\n )\n } else {\n // No need to render elements that are not visible by either snapshot.\n // If a client adds and deletes content in the same snapshot the element is not visible by either snapshot.\n return null\n }\n }).filter((n) => n !== null);\n // @ts-ignore\n const tr = this._tr.replace(\n 0,\n this.prosemirrorView.state.doc.content.size,\n new PModel.Slice(PModel.Fragment.from(fragmentContent), 0, 0)\n );\n this.prosemirrorView.dispatch(\n tr.setMeta(ySyncPluginKey, { isChangeOrigin: true })\n );\n }, ySyncPluginKey);\n });\n }\n\n /**\n * @param {Array<Y.YEvent<any>>} events\n * @param {Y.Transaction} transaction\n */\n _typeChanged (events, transaction) {\n if (this.prosemirrorView == null) return\n const syncState = ySyncPluginKey.getState(this.prosemirrorView.state);\n if (\n events.length === 0 || syncState.snapshot != null ||\n syncState.prevSnapshot != null\n ) {\n // drop out if snapshot is active\n this.renderSnapshot(syncState.snapshot, syncState.prevSnapshot);\n return\n }\n this.mux(() => {\n /**\n * @param {any} _\n * @param {Y.AbstractType<any>} type\n */\n const delType = (_, type) => this.mapping.delete(type);\n Y.iterateDeletedStructs(\n transaction,\n transaction.deleteSet,\n (struct) => {\n if (struct.constructor === Y.Item) {\n const type = /** @type {Y.ContentType} */ (/** @type {Y.Item} */ (struct).content).type;\n type && this.mapping.delete(type);\n }\n }\n );\n transaction.changed.forEach(delType);\n transaction.changedParentTypes.forEach(delType);\n // Rebuild the full Y↔PM mapping so relative cursor positions resolve against\n // current node sizes after structural changes (e.g. drag-and-drop block moves).\n this.mapping.clear();\n const fragmentContent = this.type.toArray().map((t) =>\n createNodeIfNotExists(\n /** @type {Y.XmlElement | Y.XmlHook} */ (t),\n this.prosemirrorView.state.schema,\n this\n )\n ).filter((n) => n !== null);\n const oldDoc = this.prosemirrorView.state.doc;\n // @ts-ignore\n let tr = this._tr.replace(\n 0,\n this.prosemirrorView.state.doc.content.size,\n new PModel.Slice(PModel.Fragment.from(fragmentContent), 0, 0)\n );\n restoreRelativeSelection(tr, this.beforeTransactionSelection, this, oldDoc);\n tr = tr.setMeta(ySyncPluginKey, { isChangeOrigin: true, isUndoRedoOperation: transaction.origin instanceof Y.UndoManager });\n if (\n this.beforeTransactionSelection !== null && this._isLocalCursorInView()\n ) {\n tr.scrollIntoView();\n }\n this.prosemirrorView.dispatch(tr);\n });\n }\n\n /**\n * @param {import('prosemirror-model').Node} doc\n */\n _prosemirrorChanged (doc) {\n this.doc.transact(() => {\n updateYFragment(this.doc, this.type, doc, this);\n this.beforeTransactionSelection = getRelativeSelection(\n this,\n this.prosemirrorView.state\n );\n }, ySyncPluginKey);\n }\n\n /**\n * View is ready to listen to changes. Register observers.\n * @param {any} prosemirrorView\n */\n initView (prosemirrorView) {\n if (this.prosemirrorView != null) this.destroy();\n this.prosemirrorView = prosemirrorView;\n this.doc.on('beforeAllTransactions', this.beforeAllTransactions);\n this.doc.on('afterAllTransactions', this.afterAllTransactions);\n this.type.observeDeep(this._observeFunction);\n }\n\n destroy () {\n if (this.prosemirrorView == null) return\n this.prosemirrorView = null;\n this.type.unobserveDeep(this._observeFunction);\n this.doc.off('beforeAllTransactions', this.beforeAllTransactions);\n this.doc.off('afterAllTransactions', this.afterAllTransactions);\n }\n}\n\n/**\n * @private\n * @param {Y.XmlElement | Y.XmlHook} el\n * @param {PModel.Schema} schema\n * @param {BindingMetadata} meta\n * @param {Y.Snapshot} [snapshot]\n * @param {Y.Snapshot} [prevSnapshot]\n * @param {function('removed' | 'added', Y.ID):any} [computeYChange]\n * @return {PModel.Node | null}\n */\nconst createNodeIfNotExists = (\n el,\n schema,\n meta,\n snapshot,\n prevSnapshot,\n computeYChange\n) => {\n const node = /** @type {PModel.Node} */ (meta.mapping.get(el));\n if (node === undefined) {\n if (el instanceof Y.XmlElement) {\n return createNodeFromYElement(\n el,\n schema,\n meta,\n snapshot,\n prevSnapshot,\n computeYChange\n )\n } else {\n throw error.methodUnimplemented() // we are currently not handling hooks\n }\n }\n return node\n};\n\n/**\n * @private\n * @param {Y.XmlElement} el\n * @param {any} schema\n * @param {BindingMetadata} meta\n * @param {Y.Snapshot} [snapshot]\n * @param {Y.Snapshot} [prevSnapshot]\n * @param {function('removed' | 'added', Y.ID):any} [computeYChange]\n * @return {PModel.Node | null} Returns node if node could be created. Otherwise it deletes the yjs type and returns null\n */\nconst createNodeFromYElement = (\n el,\n schema,\n meta,\n snapshot,\n prevSnapshot,\n computeYChange\n) => {\n const children = [];\n /**\n * @param {Y.XmlElement | Y.XmlText} type\n */\n const createChildren = (type) => {\n if (type instanceof Y.XmlElement) {\n const n = createNodeIfNotExists(\n type,\n schema,\n meta,\n snapshot,\n prevSnapshot,\n computeYChange\n );\n if (n !== null) {\n children.push(n);\n }\n } else {\n // If the next ytext exists and was created by us, move the content to the current ytext.\n // This is a fix for #160 -- duplication of characters when two Y.Text exist next to each\n // other.\n const nextytext = /** @type {Y.ContentType} */ (type._item.right?.content)?.type;\n if (nextytext instanceof Y.Text && !nextytext._item.deleted && nextytext._item.id.client === nextytext.doc.clientID) {\n type.applyDelta([\n { retain: type.length },\n ...nextytext.toDelta()\n ]);\n nextytext.doc.transact(tr => {\n nextytext._item.delete(tr);\n });\n }\n // now create the prosemirror text nodes\n const ns = createTextNodesFromYText(\n type,\n schema,\n meta,\n snapshot,\n prevSnapshot,\n computeYChange\n );\n if (ns !== null) {\n ns.forEach((textchild) => {\n if (textchild !== null) {\n children.push(textchild);\n }\n });\n }\n }\n };\n if (snapshot === undefined || prevSnapshot === undefined) {\n el.toArray().forEach(createChildren);\n } else {\n Y.typeListToArraySnapshot(el, new Y.Snapshot(prevSnapshot.ds, snapshot.sv))\n .forEach(createChildren);\n }\n try {\n const attrs = el.getAttributes(snapshot);\n if (snapshot !== undefined) {\n if (!isVisible(/** @type {Y.Item} */ (el._item), snapshot)) {\n attrs.ychange = computeYChange\n ? computeYChange('removed', /** @type {Y.Item} */ (el._item).id)\n : { type: 'removed' };\n } else if (!isVisible(/** @type {Y.Item} */ (el._item), prevSnapshot)) {\n attrs.ychange = computeYChange\n ? computeYChange('added', /** @type {Y.Item} */ (el._item).id)\n : { type: 'added' };\n }\n }\n const node = schema.node(el.nodeName, attrs, children);\n meta.mapping.set(el, node);\n return node\n } catch (e) {\n // an error occured while creating the node. This is probably a result of a concurrent action.\n /** @type {Y.Doc} */ (el.doc).transact((transaction) => {\n /** @type {Y.Item} */ (el._item).delete(transaction);\n }, ySyncPluginKey);\n meta.mapping.delete(el);\n return null\n }\n};\n\n/**\n * @private\n * @param {Y.XmlText} text\n * @param {import('prosemirror-model').Schema} schema\n * @param {BindingMetadata} _meta\n * @param {Y.Snapshot} [snapshot]\n * @param {Y.Snapshot} [prevSnapshot]\n * @param {function('removed' | 'added', Y.ID):any} [computeYChange]\n * @return {Array<PModel.Node>|null}\n */\nconst createTextNodesFromYText = (\n text,\n schema,\n _meta,\n snapshot,\n prevSnapshot,\n computeYChange\n) => {\n const nodes = [];\n const deltas = text.toDelta(snapshot, prevSnapshot, computeYChange);\n try {\n for (let i = 0; i < deltas.length; i++) {\n const delta = deltas[i];\n nodes.push(schema.text(delta.insert, attributesToMarks(delta.attributes, schema)));\n }\n } catch (e) {\n // an error occured while creating the node. This is probably a result of a concurrent action.\n /** @type {Y.Doc} */ (text.doc).transact((transaction) => {\n /** @type {Y.Item} */ (text._item).delete(transaction);\n }, ySyncPluginKey);\n return null\n }\n // @ts-ignore\n return nodes\n};\n\n/**\n * @private\n * @param {Array<any>} nodes prosemirror node\n * @param {BindingMetadata} meta\n * @return {Y.XmlText}\n */\nconst createTypeFromTextNodes = (nodes, meta) => {\n const type = new Y.XmlText();\n const delta = nodes.map((node) => ({\n // @ts-ignore\n insert: node.text,\n attributes: marksToAttributes(node.marks, meta)\n }));\n type.applyDelta(delta);\n meta.mapping.set(type, nodes);\n return type\n};\n\n/**\n * @private\n * @param {any} node prosemirror node\n * @param {BindingMetadata} meta\n * @return {Y.XmlElement}\n */\nconst createTypeFromElementNode = (node, meta) => {\n const type = new Y.XmlElement(node.type.name);\n for (const key in node.attrs) {\n const val = node.attrs[key];\n if (val !== null && key !== 'ychange') {\n type.setAttribute(key, val);\n }\n }\n type.insert(\n 0,\n normalizePNodeContent(node).map((n) =>\n createTypeFromTextOrElementNode(n, meta)\n )\n );\n meta.mapping.set(type, node);\n return type\n};\n\n/**\n * @private\n * @param {PModel.Node|Array<PModel.Node>} node prosemirror text node\n * @param {BindingMetadata} meta\n * @return {Y.XmlElement|Y.XmlText}\n */\nconst createTypeFromTextOrElementNode = (node, meta) =>\n node instanceof Array\n ? createTypeFromTextNodes(node, meta)\n : createTypeFromElementNode(node, meta);\n\n/**\n * @param {any} val\n */\nconst isObject = (val) => typeof val === 'object' && val !== null;\n\n/**\n * @param {any} pattrs\n * @param {any} yattrs\n */\nconst equalAttrs = (pattrs, yattrs) => {\n const keys = Object.keys(pattrs).filter((key) => pattrs[key] !== null);\n let eq =\n keys.length ===\n Object.keys(yattrs).filter((key) => yattrs[key] !== null).length;\n for (let i = 0; i < keys.length && eq; i++) {\n const key = keys[i];\n const l = pattrs[key];\n const r = yattrs[key];\n eq = key === 'ychange' || l === r ||\n (isObject(l) && isObject(r) && equalAttrs(l, r));\n }\n return eq\n};\n\n/**\n * @typedef {Array<Array<PModel.Node>|PModel.Node>} NormalizedPNodeContent\n */\n\n/**\n * @param {any} pnode\n * @return {NormalizedPNodeContent}\n */\nconst normalizePNodeContent = (pnode) => {\n const c = pnode.content.content;\n const res = [];\n for (let i = 0; i < c.length; i++) {\n const n = c[i];\n if (n.isText) {\n const textNodes = [];\n for (let tnode = c[i]; i < c.length && tnode.isText; tnode = c[++i]) {\n textNodes.push(tnode);\n }\n i--;\n res.push(textNodes);\n } else {\n res.push(n);\n }\n }\n return res\n};\n\n/**\n * @param {Y.XmlText} ytext\n * @param {Array<any>} ptexts\n */\nconst equalYTextPText = (ytext, ptexts) => {\n const delta = ytext.toDelta();\n return delta.length === ptexts.length &&\n delta.every(/** @type {(d:any,i:number) => boolean} */ (d, i) =>\n d.insert === /** @type {any} */ (ptexts[i]).text &&\n object.keys(d.attributes || {}).length === ptexts[i].marks.length &&\n object.every(d.attributes, (attr, /** @type {string} */ yattrname) => {\n const markname = yattr2markname(yattrname);\n const pmarks = ptexts[i].marks;\n\n const pmark = pmarks.find(/** @param {any} mark */ mark => mark.type.name === markname);\n\n // Ensure the pmark is present in the ptexts before checking equality. When replacing a mark with another mark\n // the pmark will be missing from the ptexts and the equalAttrs will throw an error.\n if (!pmark) {\n return false\n }\n\n return equalAttrs(attr, pmarks.find(/** @param {any} mark */ mark => mark.type.name === markname)?.attrs)\n })\n )\n};\n\n/**\n * @param {Y.XmlElement|Y.XmlText|Y.XmlHook} ytype\n * @param {any|Array<any>} pnode\n */\nconst equalYTypePNode = (ytype, pnode) => {\n if (\n ytype instanceof Y.XmlElement && !(pnode instanceof Array) &&\n matchNodeName(ytype, pnode)\n ) {\n const normalizedContent = normalizePNodeContent(pnode);\n return ytype._length === normalizedContent.length &&\n equalAttrs(ytype.getAttributes(), pnode.attrs) &&\n ytype.toArray().every((ychild, i) =>\n equalYTypePNode(ychild, normalizedContent[i])\n )\n }\n return ytype instanceof Y.XmlText && pnode instanceof Array &&\n equalYTextPText(ytype, pnode)\n};\n\n/**\n * @param {PModel.Node | Array<PModel.Node> | undefined} mapped\n * @param {PModel.Node | Array<PModel.Node>} pcontent\n */\nconst mappedIdentity = (mapped, pcontent) =>\n mapped === pcontent ||\n (mapped instanceof Array && pcontent instanceof Array &&\n mapped.length === pcontent.length && mapped.every((a, i) =>\n pcontent[i] === a\n ));\n\n/**\n * @param {Y.XmlElement} ytype\n * @param {PModel.Node} pnode\n * @param {BindingMetadata} meta\n * @return {{ foundMappedChild: boolean, equalityFactor: number }}\n */\nconst computeChildEqualityFactor = (ytype, pnode, meta) => {\n const yChildren = ytype.toArray();\n const pChildren = normalizePNodeContent(pnode);\n const pChildCnt = pChildren.length;\n const yChildCnt = yChildren.length;\n const minCnt = math.min(yChildCnt, pChildCnt);\n let left = 0;\n let right = 0;\n let foundMappedChild = false;\n for (; left < minCnt; left++) {\n const leftY = yChildren[left];\n const leftP = pChildren[left];\n if (mappedIdentity(meta.mapping.get(leftY), leftP)) {\n foundMappedChild = true; // definite (good) match!\n } else if (!equalYTypePNode(leftY, leftP)) {\n break\n }\n }\n for (; left + right < minCnt; right++) {\n const rightY = yChildren[yChildCnt - right - 1];\n const rightP = pChildren[pChildCnt - right - 1];\n if (mappedIdentity(meta.mapping.get(rightY), rightP)) {\n foundMappedChild = true;\n } else if (!equalYTypePNode(rightY, rightP)) {\n break\n }\n }\n return {\n equalityFactor: left + right,\n foundMappedChild\n }\n};\n\n/**\n * @param {Y.Text} ytext\n */\nconst ytextTrans = (ytext) => {\n let str = '';\n /**\n * @type {Y.Item|null}\n */\n let n = ytext._start;\n const nAttrs = {};\n while (n !== null) {\n if (!n.deleted) {\n if (n.countable && n.content instanceof Y.ContentString) {\n str += n.content.str;\n } else if (n.content instanceof Y.ContentFormat) {\n nAttrs[n.content.key] = null;\n }\n }\n n = n.right;\n }\n return {\n str,\n nAttrs\n }\n};\n\n/**\n * @todo test this more\n *\n * @param {Y.Text} ytext\n * @param {Array<any>} ptexts\n * @param {BindingMetadata} meta\n */\nconst updateYText = (ytext, ptexts, meta) => {\n meta.mapping.set(ytext, ptexts);\n const { nAttrs, str } = ytextTrans(ytext);\n const content = ptexts.map((p) => ({\n insert: /** @type {any} */ (p).text,\n attributes: Object.assign({}, nAttrs, marksToAttributes(p.marks, meta))\n }));\n const { insert, remove, index } = simpleDiff(\n str,\n content.map((c) => c.insert).join('')\n );\n ytext.delete(index, remove);\n ytext.insert(index, insert);\n ytext.applyDelta(\n content.map((c) => ({ retain: c.insert.length, attributes: c.attributes }))\n );\n};\n\nconst hashedMarkNameRegex = /(.*)(--[a-zA-Z0-9+/=]{8})$/;\n/**\n * @param {string} attrName\n */\nconst yattr2markname = attrName => hashedMarkNameRegex.exec(attrName)?.[1] ?? attrName;\n\n/**\n * @todo move this to markstoattributes\n *\n * @param {Object<string, any>} attrs\n * @param {import('prosemirror-model').Schema} schema\n */\nconst attributesToMarks = (attrs, schema) => {\n /**\n * @type {Array<import('prosemirror-model').Mark>}\n */\n const marks = [];\n for (const markName in attrs) {\n // remove hashes if necessary\n marks.push(schema.mark(yattr2markname(markName), attrs[markName]));\n }\n return marks\n};\n\n/**\n * @param {Array<import('prosemirror-model').Mark>} marks\n * @param {BindingMetadata} meta\n */\nconst marksToAttributes = (marks, meta) => {\n const pattrs = {};\n marks.forEach((mark) => {\n if (mark.type.name !== 'ychange') {\n const isOverlapping = map.setIfUndefined(meta.isOMark, mark.type, () => !mark.type.excludes(mark.type));\n pattrs[isOverlapping ? `${mark.type.name}--${hashOfJSON(mark.toJSON())}` : mark.type.name] = mark.attrs;\n }\n });\n return pattrs\n};\n\n/**\n * Update a yDom node by syncing the current content of the prosemirror node.\n *\n * This is a y-prosemirror internal feature that you can use at your own risk.\n *\n * @private\n * @unstable\n *\n * @param {{transact: Function}} y\n * @param {Y.XmlFragment} yDomFragment\n * @param {any} pNode\n * @param {BindingMetadata} meta\n */\nconst updateYFragment = (y, yDomFragment, pNode, meta) => {\n if (\n yDomFragment instanceof Y.XmlElement &&\n yDomFragment.nodeName !== pNode.type.name\n ) {\n throw new Error('node name mismatch!')\n }\n meta.mapping.set(yDomFragment, pNode);\n // update attributes\n if (yDomFragment instanceof Y.XmlElement) {\n const yDomAttrs = yDomFragment.getAttributes();\n const pAttrs = pNode.attrs;\n for (const key in pAttrs) {\n if (pAttrs[key] !== null) {\n if (yDomAttrs[key] !== pAttrs[key] && key !== 'ychange') {\n yDomFragment.setAttribute(key, pAttrs[key]);\n }\n } else {\n yDomFragment.removeAttribute(key);\n }\n }\n // remove all keys that are no longer in pAttrs\n for (const key in yDomAttrs) {\n if (pAttrs[key] === undefined) {\n yDomFragment.removeAttribute(key);\n }\n }\n }\n // update children\n const pChildren = normalizePNodeContent(pNode);\n const pChildCnt = pChildren.length;\n const yChildren = yDomFragment.toArray();\n const yChildCnt = yChildren.length;\n const minCnt = math.min(pChildCnt, yChildCnt);\n let left = 0;\n let right = 0;\n // find number of matching elements from left\n for (; left < minCnt; left++) {\n const leftY = yChildren[left];\n const leftP = pChildren[left];\n if (!mappedIdentity(meta.mapping.get(leftY), leftP)) {\n if (equalYTypePNode(leftY, leftP)) {\n // update mapping\n meta.mapping.set(leftY, leftP);\n } else {\n break\n }\n }\n }\n // find number of matching elements from right\n for (; right + left + 1 < minCnt; right++) {\n const rightY = yChildren[yChildCnt - right - 1];\n const rightP = pChildren[pChildCnt - right - 1];\n if (!mappedIdentity(meta.mapping.get(rightY), rightP)) {\n if (equalYTypePNode(rightY, rightP)) {\n // update mapping\n meta.mapping.set(rightY, rightP);\n } else {\n break\n }\n }\n }\n y.transact(() => {\n // try to compare and update\n while (yChildCnt - left - right > 0 && pChildCnt - left - right > 0) {\n const leftY = yChildren[left];\n const leftP = pChildren[left];\n const rightY = yChildren[yChildCnt - right - 1];\n const rightP = pChildren[pChildCnt - right - 1];\n if (leftY instanceof Y.XmlText && leftP instanceof Array) {\n if (!equalYTextPText(leftY, leftP)) {\n updateYText(leftY, leftP, meta);\n }\n left += 1;\n } else {\n let updateLeft = leftY instanceof Y.XmlElement &&\n matchNodeName(leftY, leftP);\n let updateRight = rightY instanceof Y.XmlElement &&\n matchNodeName(rightY, rightP);\n if (updateLeft && updateRight) {\n // decide which which element to update\n const equalityLeft = computeChildEqualityFactor(\n /** @type {Y.XmlElement} */ (leftY),\n /** @type {PModel.Node} */ (leftP),\n meta\n );\n const equalityRight = computeChildEqualityFactor(\n /** @type {Y.XmlElement} */ (rightY),\n /** @type {PModel.Node} */ (rightP),\n meta\n );\n if (\n equalityLeft.foundMappedChild && !equalityRight.foundMappedChild\n ) {\n updateRight = false;\n } else if (\n !equalityLeft.foundMappedChild && equalityRight.foundMappedChild\n ) {\n updateLeft = false;\n } else if (\n equalityLeft.equalityFactor < equalityRight.equalityFactor\n ) {\n updateLeft = false;\n } else {\n updateRight = false;\n }\n }\n if (updateLeft) {\n updateYFragment(\n y,\n /** @type {Y.XmlFragment} */ (leftY),\n /** @type {PModel.Node} */ (leftP),\n meta\n );\n left += 1;\n } else if (updateRight) {\n updateYFragment(\n y,\n /** @type {Y.XmlFragment} */ (rightY),\n /** @type {PModel.Node} */ (rightP),\n meta\n );\n right += 1;\n } else {\n meta.mapping.delete(yDomFragment.get(left));\n yDomFragment.delete(left, 1);\n yDomFragment.insert(left, [\n createTypeFromTextOrElementNode(leftP, meta)\n ]);\n left += 1;\n }\n }\n }\n const yDelLen = yChildCnt - left - right;\n if (\n yChildCnt === 1 && pChildCnt === 0 && yChildren[0] instanceof Y.XmlText\n ) {\n meta.mapping.delete(yChildren[0]);\n // Edge case handling https://github.com/yjs/y-prosemirror/issues/108\n // Only delete the content of the Y.Text to retain remote changes on the same Y.Text object\n yChildren[0].delete(0, yChildren[0].length);\n } else if (yDelLen > 0) {\n yDomFragment.slice(left, left + yDelLen).forEach(type => meta.mapping.delete(type));\n yDomFragment.delete(left, yDelLen);\n }\n if (left + right < pChildCnt) {\n const ins = [];\n for (let i = left; i < pChildCnt - right; i++) {\n ins.push(createTypeFromTextOrElementNode(pChildren[i], meta));\n }\n yDomFragment.insert(left, ins);\n }\n }, ySyncPluginKey);\n};\n\n/**\n * @function\n * @param {Y.XmlElement} yElement\n * @param {any} pNode Prosemirror Node\n */\nconst matchNodeName = (yElement, pNode) =>\n !(pNode instanceof Array) && yElement.nodeName === pNode.type.name;\n\n/**\n * Either a node if type is YXmlElement or an Array of text nodes if YXmlText\n * @typedef {Map<Y.AbstractType, Node | Array<Node>>} ProsemirrorMapping\n */\n\n/**\n * Is null if no timeout is in progress.\n * Is defined if a timeout is in progress.\n * Maps from view\n * @type {Map<EditorView, Map<any, any>>|null}\n */\nlet viewsToUpdate = null;\n\nclass MetaEntry {\n /**\n * @param {EditorView} view\n * @param {any} key\n * @param {any} value\n */\n constructor (view, key, value) {\n this.view = view;\n this.key = key;\n this.value = value;\n }\n\n apply () {\n const syncState = ySyncPluginKey.getState(this.view.state);\n if (syncState && syncState.binding && !syncState.binding.isDestroyed) {\n const tr = this.view.state.tr;\n tr.setMeta(this.key, this.value);\n this.view.dispatch(tr);\n }\n }\n}\n\nclass MetaEntriesQueue {\n /**\n * @param {Array<MetaEntry>} [entries=[]]\n */\n constructor (entries = []) {\n this.entries = entries;\n }\n\n /**\n * @return {MetaEntry|undefined}\n */\n getFirst () {\n return this.entries[0]\n }\n\n /**\n * @return {MetaEntry|undefined}\n */\n dequeueFirst () {\n return this.entries.shift()\n }\n\n /**\n * @return {boolean}\n */\n isEmpty () {\n return this.entries.length === 0\n }\n\n static fromViewsToUpdate () {\n const ups = /** @type {Map<EditorView, Map<any, any>>} */ (viewsToUpdate);\n viewsToUpdate = null;\n const entries = [];\n ups.forEach((metas, view) => {\n metas.forEach((value, key) => {\n entries.push(new MetaEntry(view, key, value));\n });\n });\n return new MetaEntriesQueue(entries)\n }\n}\n\n/**\n * Dispatch queued plugin metadata in order, retrying only the remaining\n * entries if a transaction becomes stale while the async queue is flushing.\n *\n * Cursor awareness updates are decoration-only refreshes. If a real document\n * transaction lands before one of these queued meta transactions is applied,\n * ProseMirror can reject it with a RangeError. In that case we reschedule the\n * remaining entries on the next tick. If the first remaining entry fails again\n * on retry, we drop that entry and continue with the rest of the queue instead\n * of retrying forever or crashing the editor.\n *\n * @param {MetaEntriesQueue} [metaEntries=MetaEntriesQueue.fromViewsToUpdate()]\n * @param {boolean} [isRetry=false]\n */\nconst updateMetas = (metaEntries = MetaEntriesQueue.fromViewsToUpdate(), isRetry = false) => {\n let isFirst = true;\n while (!metaEntries.isEmpty()) {\n const metaEntry = metaEntries.getFirst();\n try {\n metaEntry.apply();\n } catch (err) {\n // ProseMirror throws a RangeError when this transaction was created from\n // an older state and another transaction changed the document before this\n // meta-only dispatch was applied (\"Applying a mismatched transaction\").\n if (err instanceof RangeError) {\n if (isRetry && isFirst) {\n // Drop the repeatedly stale entry so the queue can continue flushing.\n metaEntries.dequeueFirst();\n }\n if (!metaEntries.isEmpty()) {\n eventloop.timeout(0, () => updateMetas(metaEntries, true));\n }\n return\n }\n throw err\n }\n isFirst = false;\n metaEntries.dequeueFirst();\n }\n};\n\nconst setMeta = (view, key, value) => {\n if (!viewsToUpdate) {\n viewsToUpdate = new Map();\n // Awareness listeners can fire in bursts, so batch them into one tick.\n eventloop.timeout(0, updateMetas);\n }\n map.setIfUndefined(viewsToUpdate, view, map.create).set(key, value);\n};\n\n/**\n * Transforms a Prosemirror based absolute position to a Yjs Cursor (relative position in the Yjs model).\n *\n * @param {number} pos\n * @param {Y.XmlFragment} type\n * @param {ProsemirrorMapping} mapping\n * @return {any} relative position\n */\nconst absolutePositionToRelativePosition = (pos, type, mapping) => {\n if (pos === 0) {\n return Y.createRelativePositionFromTypeIndex(type, 0, -1)\n }\n /**\n * @type {any}\n */\n let n = type._first === null ? null : /** @type {Y.ContentType} */ (type._first.content).type;\n while (n !== null && type !== n) {\n if (n instanceof Y.XmlText) {\n if (n._length >= pos) {\n return Y.createRelativePositionFromTypeIndex(n, pos, -1)\n } else {\n pos -= n._length;\n }\n if (n._item !== null && n._item.next !== null) {\n n = /** @type {Y.ContentType} */ (n._item.next.content).type;\n } else {\n do {\n n = n._item === null ? null : n._item.parent;\n pos--;\n } while (n !== type && n !== null && n._item !== null && n._item.next === null)\n if (n !== null && n !== type) {\n // @ts-gnore we know that n.next !== null because of above loop conditition\n n = n._item === null ? null : /** @type {Y.ContentType} */ (/** @type Y.Item */ (n._item.next).content).type;\n }\n }\n } else {\n const pNodeSize = /** @type {any} */ (mapping.get(n) || { nodeSize: 0 }).nodeSize;\n if (n._first !== null && pos < pNodeSize) {\n n = /** @type {Y.ContentType} */ (n._first.content).type;\n pos--;\n } else {\n if (pos === 1 && n._length === 0 && pNodeSize > 1) {\n // edge case, should end in this paragraph\n return new Y.RelativePosition(n._item === null ? null : n._item.id, n._item === null ? Y.findRootTypeKey(n) : null, null)\n }\n pos -= pNodeSize;\n if (n._item !== null && n._item.next !== null) {\n n = /** @type {Y.ContentType} */ (n._item.next.content).type;\n } else {\n if (pos === 0) {\n // set to end of n.parent\n n = n._item === null ? n : n._item.parent;\n return new Y.RelativePosition(n._item === null ? null : n._item.id, n._item === null ? Y.findRootTypeKey(n) : null, null)\n }\n do {\n n = /** @type {Y.Item} */ (n._item).parent;\n pos--;\n } while (n !== type && /** @type {Y.Item} */ (n._item).next === null)\n // if n is null at this point, we have an unexpected case\n if (n !== type) {\n // We know that n._item.next is defined because of above loop condition\n n = /** @type {Y.ContentType} */ (/** @type {Y.Item} */ (/** @type {Y.Item} */ (n._item).next).content).type;\n }\n }\n }\n }\n if (n === null) {\n throw error.unexpectedCase()\n }\n if (pos === 0 && n.constructor !== Y.XmlText && n !== type) { // TODO: set to <= 0\n return createRelativePosition(n._item.parent, n._item)\n }\n }\n return Y.createRelativePositionFromTypeIndex(type, type._length, -1)\n};\n\n/**\n * Item-id based relative positions can misresolve to the document start after\n * block reorder during collaborative drag-and-drop.\n *\n * @param {Y.Doc} y\n * @param {Y.RelativePosition} relPos\n * @param {number|null} absPos\n * @return {boolean}\n */\nconst isMisresolvedTextPosition = (y, relPos, absPos) => {\n if (absPos === null) {\n return false\n }\n const decoded = Y.createAbsolutePositionFromRelativePosition(relPos, y);\n return decoded !== null &&\n decoded.type instanceof Y.XmlText &&\n relPos.item !== null &&\n absPos <= 1\n};\n\nconst createRelativePosition = (type, item) => {\n let typeid = null;\n let tname = null;\n if (type._item === null) {\n tname = Y.findRootTypeKey(type);\n } else {\n typeid = Y.createID(type._item.id.client, type._item.id.clock);\n }\n return new Y.RelativePosition(typeid, tname, item.id)\n};\n\n/**\n * @param {Y.Doc} y\n * @param {Y.XmlFragment} documentType Top level type that is bound to pView\n * @param {any} relPos Encoded Yjs based relative position\n * @param {ProsemirrorMapping} mapping\n * @return {null|number}\n */\nconst relativePositionToAbsolutePosition = (y, documentType, relPos, mapping) => {\n const decodedPos = Y.createAbsolutePositionFromRelativePosition(relPos, y);\n if (decodedPos === null || (decodedPos.type !== documentType && !Y.isParentOf(documentType, decodedPos.type._item))) {\n return null\n }\n let type = decodedPos.type;\n let pos = 0;\n if (type.constructor === Y.XmlText) {\n pos = decodedPos.index;\n } else if (type._item === null || !type._item.deleted) {\n let n = type._first;\n let i = 0;\n while (i < type._length && i < decodedPos.index && n !== null) {\n if (!n.deleted) {\n const t = /** @type {Y.ContentType} */ (n.content).type;\n i++;\n if (t instanceof Y.XmlText) {\n pos += t._length;\n } else {\n const mapped = mapping.get(t);\n if (mapped == null) {\n return null\n }\n pos += /** @type {any} */ (mapped).nodeSize;\n }\n }\n n = /** @type {Y.Item} */ (n.right);\n }\n pos += 1; // increase because we go out of n\n }\n while (type !== documentType && type._item !== null) {\n // @ts-ignore\n const parent = type._item.parent;\n // @ts-ignore\n if (parent._item === null || !parent._item.deleted) {\n pos += 1; // the start tag\n let n = /** @type {Y.AbstractType} */ (parent)._first;\n // now iterate until we found type\n while (n !== null) {\n const contentType = /** @type {Y.ContentType} */ (n.content).type;\n if (contentType === type) {\n break\n }\n if (!n.deleted) {\n if (contentType instanceof Y.XmlText) {\n pos += contentType._length;\n } else {\n const mapped = mapping.get(contentType);\n if (mapped == null) {\n return null\n }\n pos += /** @type {any} */ (mapped).nodeSize;\n }\n }\n n = n.right;\n }\n }\n type = /** @type {Y.AbstractType} */ (parent);\n }\n const absPos = pos - 1; // we don't count the most outer tag, because it is a fragment\n if (isMisresolvedTextPosition(y, relPos, absPos)) {\n return null\n }\n return absPos\n};\n\n/**\n * @param {import('prosemirror-model').Node} oldDoc\n * @param {import('prosemirror-model').Node} newDoc\n * @param {number} absPos\n * @return {number|null}\n */\nconst findAbsolutePositionAfterStructuralChange = (oldDoc, newDoc, absPos) => {\n let pos = 0;\n let targetIdx = 0;\n for (; targetIdx < oldDoc.childCount; targetIdx++) {\n const child = oldDoc.child(targetIdx);\n if (pos + child.nodeSize > absPos) {\n break\n }\n pos += child.nodeSize;\n }\n if (targetIdx >= oldDoc.childCount) {\n return null\n }\n const targetChild = oldDoc.child(targetIdx);\n const offsetInChild = absPos - pos;\n\n let occurrence = 0;\n for (let i = 0; i <= targetIdx; i++) {\n const child = oldDoc.child(i);\n if (child.type === targetChild.type && child.textContent === targetChild.textContent) {\n occurrence++;\n }\n }\n\n let matchCount = 0;\n let newPos = 0;\n for (let i = 0; i < newDoc.childCount; i++) {\n const child = newDoc.child(i);\n if (child.type === targetChild.type && child.textContent === targetChild.textContent) {\n matchCount++;\n if (matchCount === occurrence) {\n const remapped = newPos + offsetInChild;\n const contentStart = newPos + 1;\n const contentEnd = newPos + child.nodeSize - 1;\n return Math.max(contentStart, Math.min(remapped, contentEnd))\n }\n }\n newPos += child.nodeSize;\n }\n return null\n};\n\n/**\n * Returns true when a transaction changes block structure rather than only\n * editing inline content inside existing blocks.\n *\n * @param {import('prosemirror-state').Transaction} tr\n * @param {import('prosemirror-model').Node} oldDoc\n * @return {boolean}\n */\nconst isStructuralTransaction = (tr, oldDoc) => {\n if (!tr.docChanged) {\n return false\n }\n if (tr.doc.childCount !== oldDoc.childCount) {\n return true\n }\n for (const step of tr.steps) {\n if (step instanceof ReplaceStep) {\n if (step.from === 0 && step.to === oldDoc.content.size) {\n return true\n }\n if (step.slice.content.size > 0) {\n let hasBlock = false;\n step.slice.content.forEach((node) => {\n if (node.isBlock) {\n hasBlock = true;\n }\n });\n if (hasBlock) {\n return true\n }\n } else if (step.to > step.from) {\n const $from = oldDoc.resolve(step.from);\n const $to = oldDoc.resolve(step.to);\n if ($from.depth === 0 && $to.depth === 0 && $from.index() !== $to.index()) {\n return true\n }\n }\n }\n }\n return false\n};\n\n/**\n * Detect stale relative positions after structural changes that resolve to the\n * wrong text block or to the start of the correct block.\n *\n * @param {import('prosemirror-model').Node} oldDoc\n * @param {import('prosemirror-model').Node} newDoc\n * @param {number} oldAbs\n * @param {number|null} resolvedAbs\n * @return {boolean}\n */\nconst isMisresolvedAfterStructuralChange = (oldDoc, newDoc, oldAbs, resolvedAbs) => {\n if (resolvedAbs === null) {\n return false\n }\n const $old = oldDoc.resolve(oldAbs);\n const $new = newDoc.resolve(resolvedAbs);\n if (!$old.parent.isTextblock || !$new.parent.isTextblock) {\n return false\n }\n if ($old.parent.textContent !== $new.parent.textContent) {\n return true\n }\n if ($old.parentOffset !== 0 && $new.parentOffset === 0) {\n return true\n }\n if ($old.parentOffset === 0 && $new.parentOffset === 0) {\n const expected = findAbsolutePositionAfterStructuralChange(oldDoc, newDoc, oldAbs);\n return expected !== null && expected !== resolvedAbs\n }\n return false\n};\n\n/**\n * Utility function for converting an Y.Fragment to a ProseMirror fragment.\n *\n * @param {Y.XmlFragment} yXmlFragment\n * @param {Schema} schema\n */\nconst yXmlFragmentToProseMirrorFragment = (yXmlFragment, schema) => {\n const fragmentContent = yXmlFragment.toArray().map((t) =>\n createNodeFromYElement(\n /** @type {Y.XmlElement} */ (t),\n schema,\n createEmptyMeta()\n )\n ).filter((n) => n !== null);\n return Fragment.fromArray(fragmentContent)\n};\n\n/**\n * Utility function for converting an Y.Fragment to a ProseMirror node.\n *\n * @param {Y.XmlFragment} yXmlFragment\n * @param {Schema} schema\n */\nconst yXmlFragmentToProseMirrorRootNode = (yXmlFragment, schema) =>\n schema.topNodeType.create(null, yXmlFragmentToProseMirrorFragment(yXmlFragment, schema));\n\n/**\n * The initial ProseMirror content should be supplied by Yjs. This function transforms a Y.Fragment\n * to a ProseMirror Doc node and creates a mapping that is used by the sync plugin.\n *\n * @param {Y.XmlFragment} yXmlFragment\n * @param {Schema} schema\n *\n * @todo deprecate mapping property\n */\nconst initProseMirrorDoc = (yXmlFragment, schema) => {\n const meta = createEmptyMeta();\n const fragmentContent = yXmlFragment.toArray().map((t) =>\n createNodeFromYElement(\n /** @type {Y.XmlElement} */ (t),\n schema,\n meta\n )\n ).filter((n) => n !== null);\n const doc = schema.topNodeType.create(null, Fragment.fromArray(fragmentContent));\n return { doc, meta, mapping: meta.mapping }\n};\n\n/**\n * Utility method to convert a Prosemirror Doc Node into a Y.Doc.\n *\n * This can be used when importing existing content to Y.Doc for the first time,\n * note that this should not be used to rehydrate a Y.Doc from a database once\n * collaboration has begun as all history will be lost\n *\n * @param {Node} doc\n * @param {string} xmlFragment\n * @return {Y.Doc}\n */\nfunction prosemirrorToYDoc (doc, xmlFragment = 'prosemirror') {\n const ydoc = new Y.Doc();\n const type = /** @type {Y.XmlFragment} */ (ydoc.get(xmlFragment, Y.XmlFragment));\n if (!type.doc) {\n return ydoc\n }\n\n prosemirrorToYXmlFragment(doc, type);\n return type.doc\n}\n\n/**\n * Utility method to update an empty Y.XmlFragment with content from a Prosemirror Doc Node.\n *\n * This can be used when importing existing content to Y.Doc for the first time,\n * note that this should not be used to rehydrate a Y.Doc from a database once\n * collaboration has begun as all history will be lost\n *\n * Note: The Y.XmlFragment does not need to be part of a Y.Doc document at the time that this\n * method is called, but it must be added before any other operations are performed on it.\n *\n * @param {Node} doc prosemirror document.\n * @param {Y.XmlFragment} [xmlFragment] If supplied, an xml fragment to be\n * populated from the prosemirror state; otherwise a new XmlFragment will be created.\n * @return {Y.XmlFragment}\n */\nfunction prosemirrorToYXmlFragment (doc, xmlFragment) {\n const type = xmlFragment || new Y.XmlFragment();\n const ydoc = type.doc ? type.doc : { transact: (transaction) => transaction(undefined) };\n updateYFragment(ydoc, type, doc, { mapping: new Map(), isOMark: new Map() });\n return type\n}\n\n/**\n * Utility method to convert Prosemirror compatible JSON into a Y.Doc.\n *\n * This can be used when importing existing content to Y.Doc for the first time,\n * note that this should not be used to rehydrate a Y.Doc from a database once\n * collaboration has begun as all history will be lost\n *\n * @param {Schema} schema\n * @param {any} state\n * @param {string} xmlFragment\n * @return {Y.Doc}\n */\nfunction prosemirrorJSONToYDoc (schema, state, xmlFragment = 'prosemirror') {\n const doc = Node.fromJSON(schema, state);\n return prosemirrorToYDoc(doc, xmlFragment)\n}\n\n/**\n * Utility method to convert Prosemirror compatible JSON to a Y.XmlFragment\n *\n * This can be used when importing existing content to Y.Doc for the first time,\n * note that this should not be used to rehydrate a Y.Doc from a database once\n * collaboration has begun as all history will be lost\n *\n * @param {Schema} schema\n * @param {any} state\n * @param {Y.XmlFragment} [xmlFragment] If supplied, an xml fragment to be\n * populated from the prosemirror state; otherwise a new XmlFragment will be created.\n * @return {Y.XmlFragment}\n */\nfunction prosemirrorJSONToYXmlFragment (schema, state, xmlFragment) {\n const doc = Node.fromJSON(schema, state);\n return prosemirrorToYXmlFragment(doc, xmlFragment)\n}\n\n/**\n * @deprecated Use `yXmlFragmentToProseMirrorRootNode` instead\n *\n * Utility method to convert a Y.Doc to a Prosemirror Doc node.\n *\n * @param {Schema} schema\n * @param {Y.Doc} ydoc\n * @return {Node}\n */\nfunction yDocToProsemirror (schema, ydoc) {\n const state = yDocToProsemirrorJSON(ydoc);\n return Node.fromJSON(schema, state)\n}\n\n/**\n *\n * @deprecated Use `yXmlFragmentToProseMirrorRootNode` instead\n *\n * Utility method to convert a Y.XmlFragment to a Prosemirror Doc node.\n *\n * @param {Schema} schema\n * @param {Y.XmlFragment} xmlFragment\n * @return {Node}\n */\nfunction yXmlFragmentToProsemirror (schema, xmlFragment) {\n const state = yXmlFragmentToProsemirrorJSON(xmlFragment);\n return Node.fromJSON(schema, state)\n}\n\n/**\n *\n * @deprecated Use `yXmlFragmentToProseMirrorRootNode` instead\n *\n * Utility method to convert a Y.Doc to Prosemirror compatible JSON.\n *\n * @param {Y.Doc} ydoc\n * @param {string} xmlFragment\n * @return {Record<string, any>}\n */\nfunction yDocToProsemirrorJSON (\n ydoc,\n xmlFragment = 'prosemirror'\n) {\n return yXmlFragmentToProsemirrorJSON(ydoc.getXmlFragment(xmlFragment))\n}\n\n/**\n * @deprecated Use `yXmlFragmentToProseMirrorRootNode` instead\n *\n * Utility method to convert a Y.Doc to Prosemirror compatible JSON.\n *\n * @param {Y.XmlFragment} xmlFragment The fragment, which must be part of a Y.Doc.\n * @return {Record<string, any>}\n */\nfunction yXmlFragmentToProsemirrorJSON (xmlFragment) {\n const items = xmlFragment.toArray();\n\n /**\n * @param {Y.AbstractType} item\n */\n const serialize = item => {\n /**\n * @type {Object} NodeObject\n * @property {string} NodeObject.type\n * @property {Record<string, string>=} NodeObject.attrs\n * @property {Array<NodeObject>=} NodeObject.content\n */\n let response;\n\n // TODO: Must be a better way to detect text nodes than this\n if (item instanceof Y.XmlText) {\n const delta = item.toDelta();\n response = delta.map(/** @param {any} d */ (d) => {\n const text = {\n type: 'text',\n text: d.insert\n };\n if (d.attributes) {\n text.marks = Object.keys(d.attributes).map((type_) => {\n const attrs = d.attributes[type_];\n const type = yattr2markname(type_);\n const mark = {\n type\n };\n if (Object.keys(attrs)) {\n mark.attrs = attrs;\n }\n return mark\n });\n }\n return text\n });\n } else if (item instanceof Y.XmlElement) {\n response = {\n type: item.nodeName\n };\n\n const attrs = item.getAttributes();\n if (Object.keys(attrs).length) {\n response.attrs = attrs;\n }\n\n const children = item.toArray();\n if (children.length) {\n response.content = children.map(serialize).flat();\n }\n } else {\n // expected either Y.XmlElement or Y.XmlText\n error.unexpectedCase();\n }\n\n return response\n };\n\n return {\n type: 'doc',\n content: items.map(serialize)\n }\n}\n\n/**\n * Default awareness state filter\n *\n * @param {number} currentClientId current client id\n * @param {number} userClientId user client id\n * @param {any} _user user data\n * @return {boolean}\n */\nconst defaultAwarenessStateFilter = (\n currentClientId,\n userClientId,\n _user\n) => currentClientId !== userClientId;\n\n/**\n * Default generator for a cursor element\n *\n * @param {any} user user data\n * @return {HTMLElement}\n */\nconst defaultCursorBuilder = (user) => {\n const cursor = document.createElement('span');\n cursor.classList.add('ProseMirror-yjs-cursor');\n cursor.setAttribute('style', `border-color: ${user.color}`);\n const userDiv = document.createElement('div');\n userDiv.setAttribute('style', `background-color: ${user.color}`);\n userDiv.insertBefore(document.createTextNode(user.name), null);\n const nonbreakingSpace1 = document.createTextNode('\\u2060');\n const nonbreakingSpace2 = document.createTextNode('\\u2060');\n cursor.insertBefore(nonbreakingSpace1, null);\n cursor.insertBefore(userDiv, null);\n cursor.insertBefore(nonbreakingSpace2, null);\n return cursor\n};\n\n/**\n * Default generator for the selection attributes\n *\n * @param {any} user user data\n * @return {import('prosemirror-view').DecorationAttrs}\n */\nconst defaultSelectionBuilder = (user) => {\n return {\n style: `background-color: ${user.color}70`,\n class: 'ProseMirror-yjs-selection'\n }\n};\n\nconst rxValidColor = /^#[0-9a-fA-F]{6}$/;\n\n/**\n * @param {any} state\n * @param {Awareness} awareness\n * @param {function(number, number, any):boolean} awarenessFilter\n * @param {(user: { name: string, color: string }, clientId: number) => Element} createCursor\n * @param {(user: { name: string, color: string }, clientId: number) => import('prosemirror-view').DecorationAttrs} createSelection\n * @return {any} DecorationSet\n */\nconst createDecorations = (\n state,\n awareness,\n awarenessFilter,\n createCursor,\n createSelection\n) => {\n const ystate = ySyncPluginKey.getState(state);\n if (ystate == null || ystate.doc == null || ystate.binding == null) {\n return DecorationSet.create(state.doc, [])\n }\n const y = ystate.doc;\n const decorations = [];\n if (\n ystate.snapshot != null ||\n ystate.prevSnapshot != null ||\n ystate.binding.mapping.size === 0\n ) {\n // do not render cursors while snapshot is active\n return DecorationSet.create(state.doc, [])\n }\n awareness.getStates().forEach((aw, clientId) => {\n if (!awarenessFilter(y.clientID, clientId, aw)) {\n return\n }\n\n // `aw` can be null when a client disconnects, so we guard against it\n // before reading `cursor` to avoid a TypeError.\n if (aw && aw.cursor != null) {\n const user = aw.user || {};\n if (user.color == null) {\n user.color = '#ffa500';\n } else if (!rxValidColor.test(user.color)) {\n // We only support 6-digit RGB colors in y-prosemirror\n console.warn('A user uses an unsupported color format', user);\n }\n if (user.name == null) {\n user.name = `User: ${clientId}`;\n }\n let anchor = relativePositionToAbsolutePosition(\n y,\n ystate.type,\n Y.createRelativePositionFromJSON(aw.cursor.anchor),\n ystate.binding.mapping\n );\n let head = relativePositionToAbsolutePosition(\n y,\n ystate.type,\n Y.createRelativePositionFromJSON(aw.cursor.head),\n ystate.binding.mapping\n );\n if (anchor !== null && head !== null) {\n const maxsize = math.max(state.doc.content.size - 1, 0);\n anchor = math.min(anchor, maxsize);\n head = math.min(head, maxsize);\n decorations.push(\n Decoration.widget(head, () => createCursor(user, clientId), {\n key: clientId + '',\n side: 10\n })\n );\n const from = math.min(anchor, head);\n const to = math.max(anchor, head);\n decorations.push(\n Decoration.inline(from, to, createSelection(user, clientId), {\n inclusiveEnd: true,\n inclusiveStart: false\n })\n );\n }\n }\n });\n return DecorationSet.create(state.doc, decorations)\n};\n\n/**\n * A prosemirror plugin that listens to awareness information on Yjs.\n * This requires that a `prosemirrorPlugin` is also bound to the prosemirror.\n *\n * @public\n * @param {Awareness} awareness\n * @param {object} opts\n * @param {function(any, any, any):boolean} [opts.awarenessStateFilter]\n * @param {(user: any, clientId: number) => HTMLElement} [opts.cursorBuilder]\n * @param {(user: any, clientId: number) => import('prosemirror-view').DecorationAttrs} [opts.selectionBuilder]\n * @param {function(any):any} [opts.getSelection]\n * @param {string} [cursorStateField] By default all editor bindings use the awareness 'cursor' field to propagate cursor information.\n * @return {any}\n */\nconst yCursorPlugin = (\n awareness,\n {\n awarenessStateFilter = defaultAwarenessStateFilter,\n cursorBuilder = defaultCursorBuilder,\n selectionBuilder = defaultSelectionBuilder,\n getSelection = (state) => state.selection\n } = {},\n cursorStateField = 'cursor'\n) =>\n new Plugin({\n key: yCursorPluginKey,\n state: {\n init (_, state) {\n return createDecorations(\n state,\n awareness,\n awarenessStateFilter,\n cursorBuilder,\n selectionBuilder\n )\n },\n apply (tr, prevState, oldState, newState) {\n const ystate = ySyncPluginKey.getState(newState);\n const yCursorState = tr.getMeta(yCursorPluginKey);\n if (\n (ystate && ystate.isChangeOrigin) ||\n (yCursorState && yCursorState.awarenessUpdated)\n ) {\n return createDecorations(\n newState,\n awareness,\n awarenessStateFilter,\n cursorBuilder,\n selectionBuilder\n )\n }\n if (tr.docChanged) {\n if (isStructuralTransaction(tr, oldState.doc)) {\n return createDecorations(\n newState,\n awareness,\n awarenessStateFilter,\n cursorBuilder,\n selectionBuilder\n )\n }\n return prevState.map(tr.mapping, tr.doc)\n }\n return prevState\n }\n },\n props: {\n decorations: (state) => {\n return yCursorPluginKey.getState(state)\n }\n },\n view: (view) => {\n const awarenessListener = () => {\n // @ts-ignore\n if (view.docView) {\n setMeta(view, yCursorPluginKey, { awarenessUpdated: true });\n }\n };\n /**\n * @param {import('prosemirror-view').EditorView} editorView\n * @param {{ force?: boolean }} [opts]\n */\n const updateCursorInfo = (editorView, opts = {}) => {\n const ystate = ySyncPluginKey.getState(editorView.state);\n // `ystate` is undefined during sync-plugin init and Y.Doc transitions;\n // reading from it here would throw and break cursor tracking for the view.\n if (!ystate || !ystate.binding) return\n // @note We make implicit checks when checking for the cursor property\n const current = awareness.getLocalState() || {};\n if (editorView.hasFocus()) {\n const selection = getSelection(editorView.state);\n /**\n * @type {Y.RelativePosition}\n */\n const anchor = absolutePositionToRelativePosition(\n selection.anchor,\n ystate.type,\n ystate.binding.mapping\n );\n /**\n * @type {Y.RelativePosition}\n */\n const head = absolutePositionToRelativePosition(\n selection.head,\n ystate.type,\n ystate.binding.mapping\n );\n if (\n opts.force ||\n current.cursor == null ||\n !Y.compareRelativePositions(\n Y.createRelativePositionFromJSON(current.cursor.anchor),\n anchor\n ) ||\n !Y.compareRelativePositions(\n Y.createRelativePositionFromJSON(current.cursor.head),\n head\n )\n ) {\n awareness.setLocalStateField(cursorStateField, {\n anchor,\n head\n });\n }\n } else if (\n current.cursor != null &&\n relativePositionToAbsolutePosition(\n ystate.doc,\n ystate.type,\n Y.createRelativePositionFromJSON(current.cursor.anchor),\n ystate.binding.mapping\n ) !== null\n ) {\n // delete cursor information if current cursor information is owned by this editor binding\n awareness.setLocalStateField(cursorStateField, null);\n }\n };\n const onFocusChange = () => updateCursorInfo(view);\n awareness.on('change', awarenessListener);\n view.dom.addEventListener('focusin', onFocusChange);\n view.dom.addEventListener('focusout', onFocusChange);\n return {\n update: (editorView, prevState) => {\n const ystate = ySyncPluginKey.getState(editorView.state);\n const forceAwarenessUpdate = !!(\n ystate?.isChangeOrigin &&\n prevState?.doc &&\n !prevState.doc.eq(editorView.state.doc)\n );\n updateCursorInfo(editorView, { force: forceAwarenessUpdate });\n },\n destroy: () => {\n view.dom.removeEventListener('focusin', onFocusChange);\n view.dom.removeEventListener('focusout', onFocusChange);\n awareness.off('change', awarenessListener);\n awareness.setLocalStateField(cursorStateField, null);\n }\n }\n }\n });\n\nconst undo = state => {\n const undoManager = yUndoPluginKey.getState(state).undoManager;\n if (undoManager != null) {\n undoManager.undo();\n return true\n }\n};\n\nconst redo = state => {\n const undoManager = yUndoPluginKey.getState(state).undoManager;\n if (undoManager != null) {\n undoManager.redo();\n return true\n }\n};\n\nconst defaultProtectedNodes = new Set(['paragraph']);\n\nconst defaultDeleteFilter = (item, protectedNodes) => !(item instanceof Item) ||\n!(item.content instanceof ContentType) ||\n!(item.content.type instanceof Text ||\n (item.content.type instanceof XmlElement && protectedNodes.has(item.content.type.nodeName))) ||\nitem.content.type._length === 0;\n\nconst yUndoPlugin = ({ protectedNodes = defaultProtectedNodes, trackedOrigins = [], undoManager = null } = {}) => new Plugin({\n key: yUndoPluginKey,\n state: {\n init: (initargs, state) => {\n // TODO: check if plugin order matches and fix\n const ystate = ySyncPluginKey.getState(state);\n let _undoManager = undoManager;\n if (!_undoManager) {\n // Y.UndoManager registers a `doc.on('destroy', …)` listener in its\n // constructor that UndoManager.destroy() never removes. When the doc\n // outlives the editor (e.g. several editors sharing one provider), that\n // listener keeps the UndoManager — and everything it references —\n // reachable from the doc, leaking memory on every editor destroy.\n // We only own the lifecycle of a manager we create here, so capture the\n // listener(s) it adds and remove them when the plugin view is destroyed.\n const doc = ystate.doc;\n const destroyListenersBefore = new Set(doc ? doc._observers.get('destroy') : []);\n _undoManager = new UndoManager(ystate.type, {\n trackedOrigins: new Set([ySyncPluginKey].concat(trackedOrigins)),\n deleteFilter: (item) => defaultDeleteFilter(item, protectedNodes),\n captureTransaction: tr => tr.meta.get('addToHistory') !== false\n });\n const destroyListenersAfter = doc ? doc._observers.get('destroy') : new Set();\n _undoManager._yTiptapDocDestroyListeners = Array.from(destroyListenersAfter || [])\n .filter(listener => !destroyListenersBefore.has(listener));\n }\n return {\n undoManager: _undoManager,\n prevSel: null,\n hasUndoOps: _undoManager.undoStack.length > 0,\n hasRedoOps: _undoManager.redoStack.length > 0\n }\n },\n /**\n * @returns {any}\n */\n apply: (tr, val, oldState, state) => {\n const binding = ySyncPluginKey.getState(state).binding;\n const undoManager = val.undoManager;\n const hasUndoOps = undoManager.undoStack.length > 0;\n const hasRedoOps = undoManager.redoStack.length > 0;\n if (binding) {\n return {\n undoManager,\n prevSel: getRelativeSelection(binding, oldState),\n hasUndoOps,\n hasRedoOps\n }\n } else {\n if (hasUndoOps !== val.hasUndoOps || hasRedoOps !== val.hasRedoOps) {\n return Object.assign({}, val, {\n hasUndoOps: undoManager.undoStack.length > 0,\n hasRedoOps: undoManager.redoStack.length > 0\n })\n } else { // nothing changed\n return val\n }\n }\n }\n },\n view: view => {\n const ystate = ySyncPluginKey.getState(view.state);\n const undoManager = yUndoPluginKey.getState(view.state).undoManager;\n undoManager.on('stack-item-added', ({ stackItem }) => {\n const binding = ystate.binding;\n if (binding) {\n stackItem.meta.set(binding, yUndoPluginKey.getState(view.state).prevSel);\n }\n });\n undoManager.on('stack-item-popped', ({ stackItem }) => {\n const binding = ystate.binding;\n if (binding) {\n binding.beforeTransactionSelection = stackItem.meta.get(binding) || binding.beforeTransactionSelection;\n }\n });\n return {\n destroy: () => {\n undoManager.destroy();\n // Remove the doc 'destroy' listener Y.UndoManager fails to clean up\n // (only for managers we created — see state.init above).\n const leakedDestroyListeners = undoManager._yTiptapDocDestroyListeners;\n if (leakedDestroyListeners && undoManager.doc) {\n leakedDestroyListeners.forEach(listener => undoManager.doc.off('destroy', listener));\n undoManager._yTiptapDocDestroyListeners = null;\n }\n }\n }\n }\n});\n\nexport { ProsemirrorBinding, absolutePositionToRelativePosition, createDecorations, defaultAwarenessStateFilter, defaultCursorBuilder, defaultDeleteFilter, defaultProtectedNodes, defaultSelectionBuilder, findAbsolutePositionAfterStructuralChange, getRelativeSelection, initProseMirrorDoc, isMisresolvedAfterStructuralChange, isMisresolvedTextPosition, isStructuralTransaction, isVisible, prosemirrorJSONToYDoc, prosemirrorJSONToYXmlFragment, prosemirrorToYDoc, prosemirrorToYXmlFragment, redo, relativePositionToAbsolutePosition, setMeta, undo, updateYFragment, yCursorPlugin, yCursorPluginKey, yDocToProsemirror, yDocToProsemirrorJSON, ySyncPlugin, ySyncPluginKey, yUndoPlugin, yUndoPluginKey, yXmlFragmentToProseMirrorFragment, yXmlFragmentToProseMirrorRootNode, yXmlFragmentToProsemirror, yXmlFragmentToProsemirrorJSON };\n//# sourceMappingURL=y-tiptap.js.map\n","// src/collaboration.ts\nimport { Extension } from \"@tiptap/core\";\nimport { Plugin, PluginKey } from \"@tiptap/pm/state\";\nimport { redo, undo, ySyncPlugin, yUndoPlugin, yUndoPluginKey } from \"@tiptap/y-tiptap\";\n\n// src/helpers/CollaborationMappablePosition.ts\nimport {\n getUpdatedPosition as coreGetUpdatedPosition,\n MappablePosition\n} from \"@tiptap/core\";\n\n// src/helpers/isChangeOrigin.ts\nimport { ySyncPluginKey } from \"@tiptap/y-tiptap\";\nfunction isChangeOrigin(transaction) {\n return !!transaction.getMeta(ySyncPluginKey);\n}\n\n// src/helpers/yRelativePosition.ts\nimport {\n absolutePositionToRelativePosition,\n relativePositionToAbsolutePosition,\n ySyncPluginKey as ySyncPluginKey2\n} from \"@tiptap/y-tiptap\";\nfunction getYAbsolutePosition(state, relativePos) {\n const ystate = ySyncPluginKey2.getState(state);\n return relativePositionToAbsolutePosition(\n ystate.doc,\n ystate.type,\n relativePos,\n ystate.binding.mapping\n ) || 0;\n}\nfunction getYRelativePosition(state, absolutePos) {\n const ystate = ySyncPluginKey2.getState(state);\n return absolutePositionToRelativePosition(absolutePos, ystate.type, ystate.binding.mapping);\n}\n\n// src/helpers/CollaborationMappablePosition.ts\nvar CollaborationMappablePosition = class _CollaborationMappablePosition extends MappablePosition {\n constructor(position, yRelativePosition) {\n super(position);\n this.yRelativePosition = yRelativePosition;\n }\n /**\n * Creates a CollaborationMappablePosition from a JSON object.\n */\n static fromJSON(json) {\n return new _CollaborationMappablePosition(json.position, json.yRelativePosition);\n }\n /**\n * Converts the CollaborationMappablePosition to a JSON object.\n */\n toJSON() {\n return {\n position: this.position,\n yRelativePosition: this.yRelativePosition\n };\n }\n};\nfunction createMappablePosition(position, state) {\n const yRelativePosition = getYRelativePosition(state, position);\n return new CollaborationMappablePosition(position, yRelativePosition);\n}\nfunction getUpdatedPosition(position, transaction, state) {\n const yRelativePosition = position instanceof CollaborationMappablePosition ? position.yRelativePosition : null;\n if (isChangeOrigin(transaction) && yRelativePosition) {\n const absolutePosition2 = getYAbsolutePosition(state, yRelativePosition);\n return {\n position: new CollaborationMappablePosition(absolutePosition2, yRelativePosition),\n mapResult: null\n };\n }\n const result = coreGetUpdatedPosition(position, transaction);\n const absolutePosition = result.position.position;\n return {\n position: new CollaborationMappablePosition(\n absolutePosition,\n yRelativePosition != null ? yRelativePosition : getYRelativePosition(state, absolutePosition)\n ),\n mapResult: result.mapResult\n };\n}\n\n// src/collaboration.ts\nvar Collaboration = Extension.create({\n name: \"collaboration\",\n priority: 1e3,\n addOptions() {\n return {\n document: null,\n field: \"default\",\n fragment: null,\n provider: null\n };\n },\n addStorage() {\n return {\n isDisabled: false\n };\n },\n onCreate() {\n if (this.editor.extensionManager.extensions.find((extension) => extension.name === \"undoRedo\")) {\n console.warn(\n '[tiptap warn]: \"@tiptap/extension-collaboration\" comes with its own history support and is not compatible with \"@tiptap/extension-undo-redo\".'\n );\n }\n },\n onBeforeCreate() {\n this.editor.utils.getUpdatedPosition = (position, transaction) => getUpdatedPosition(position, transaction, this.editor.state);\n this.editor.utils.createMappablePosition = (position) => createMappablePosition(position, this.editor.state);\n },\n addCommands() {\n return {\n undo: () => ({ tr, state, dispatch }) => {\n tr.setMeta(\"preventDispatch\", true);\n const undoManager = yUndoPluginKey.getState(state).undoManager;\n if (undoManager.undoStack.length === 0) {\n return false;\n }\n if (!dispatch) {\n return true;\n }\n return undo(state);\n },\n redo: () => ({ tr, state, dispatch }) => {\n tr.setMeta(\"preventDispatch\", true);\n const undoManager = yUndoPluginKey.getState(state).undoManager;\n if (undoManager.redoStack.length === 0) {\n return false;\n }\n if (!dispatch) {\n return true;\n }\n return redo(state);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-z\": () => this.editor.commands.undo(),\n \"Mod-y\": () => this.editor.commands.redo(),\n \"Shift-Mod-z\": () => this.editor.commands.redo()\n };\n },\n addProseMirrorPlugins() {\n const fragment = this.options.fragment ? this.options.fragment : this.options.document.getXmlFragment(this.options.field);\n const yUndoPluginInstance = yUndoPlugin(this.options.yUndoOptions);\n const originalUndoPluginView = yUndoPluginInstance.spec.view;\n yUndoPluginInstance.spec.view = (view) => {\n const { undoManager } = yUndoPluginKey.getState(view.state);\n if (undoManager.restore) {\n undoManager.restore();\n undoManager.restore = () => {\n };\n }\n const viewRet = originalUndoPluginView ? originalUndoPluginView(view) : void 0;\n return {\n destroy: () => {\n const hasUndoManSelf = undoManager.trackedOrigins.has(undoManager);\n const observers = undoManager._observers;\n undoManager.restore = () => {\n if (hasUndoManSelf) {\n undoManager.trackedOrigins.add(undoManager);\n }\n undoManager.doc.on(\"afterTransaction\", undoManager.afterTransactionHandler);\n undoManager._observers = observers;\n };\n if (viewRet == null ? void 0 : viewRet.destroy) {\n viewRet.destroy();\n }\n }\n };\n };\n const ySyncPluginOptions = {\n ...this.options.ySyncOptions,\n onFirstRender: this.options.onFirstRender\n };\n const ySyncPluginInstance = ySyncPlugin(fragment, ySyncPluginOptions);\n return [\n ySyncPluginInstance,\n yUndoPluginInstance,\n // Only add the filterInvalidContent plugin if content checking is enabled\n this.editor.options.enableContentCheck && new Plugin({\n key: new PluginKey(\"filterInvalidContent\"),\n filterTransaction: (transaction) => {\n if (!isChangeOrigin(transaction)) {\n return true;\n }\n if (this.storage.isDisabled) {\n return false;\n }\n if (!transaction.docChanged) {\n return true;\n }\n try {\n transaction.doc.check();\n return true;\n } catch (error) {\n this.storage.isDisabled = true;\n this.editor.emit(\"contentError\", {\n error,\n editor: this.editor,\n disableCollaboration: () => {\n var _a;\n (_a = fragment.doc) == null ? void 0 : _a.destroy();\n }\n });\n return true;\n }\n }\n })\n ].filter(Boolean);\n }\n});\n\n// src/index.ts\nvar index_default = Collaboration;\nexport {\n Collaboration,\n CollaborationMappablePosition,\n createMappablePosition,\n index_default as default,\n getUpdatedPosition,\n isChangeOrigin\n};\n//# sourceMappingURL=index.js.map","// src/collaboration-caret.ts\nimport { Extension } from \"@tiptap/core\";\nimport { Plugin, PluginKey } from \"@tiptap/pm/state\";\nimport { defaultSelectionBuilder, yCursorPlugin } from \"@tiptap/y-tiptap\";\nvar awarenessStatesToArray = (states) => {\n return Array.from(states.entries()).map(([key, value]) => {\n if (value && value.user) {\n return {\n clientId: key,\n ...value.user\n };\n }\n return {\n clientId: key\n };\n });\n};\nvar defaultOnUpdate = () => null;\nvar CollaborationCaret = Extension.create({\n name: \"collaborationCaret\",\n priority: 999,\n addOptions() {\n return {\n provider: null,\n user: {\n name: null,\n color: null\n },\n render: (user) => {\n const cursor = document.createElement(\"span\");\n cursor.classList.add(\"collaboration-carets__caret\");\n cursor.setAttribute(\"style\", `border-color: ${user.color}`);\n const label = document.createElement(\"div\");\n label.classList.add(\"collaboration-carets__label\");\n label.setAttribute(\"style\", `background-color: ${user.color}`);\n label.insertBefore(document.createTextNode(user.name), null);\n cursor.insertBefore(label, null);\n return cursor;\n },\n selectionRender: defaultSelectionBuilder,\n onUpdate: defaultOnUpdate\n };\n },\n onCreate() {\n if (this.options.onUpdate !== defaultOnUpdate) {\n console.warn(\n '[tiptap warn]: DEPRECATED: The \"onUpdate\" option is deprecated. Please use `editor.storage.collaborationCaret.users` instead. Read more: https://tiptap.dev/api/extensions/collaboration-caret'\n );\n }\n if (!this.options.provider) {\n throw new Error('The \"provider\" option is required for the CollaborationCaret extension');\n }\n },\n addStorage() {\n return {\n users: []\n };\n },\n addCommands() {\n return {\n updateUser: (attributes) => () => {\n this.options.provider.awareness.setLocalStateField(\"user\", attributes);\n return true;\n },\n user: (attributes) => ({ editor }) => {\n console.warn(\n '[tiptap warn]: DEPRECATED: The \"user\" command is deprecated. Please use \"updateUser\" instead. Read more: https://tiptap.dev/api/extensions/collaboration-caret'\n );\n return editor.commands.updateUser(attributes);\n }\n };\n },\n addProseMirrorPlugins() {\n const { provider } = this.options;\n const storage = this.storage;\n const user = this.options.user;\n const awarenessListenerPlugin = new Plugin({\n key: new PluginKey(\"collaborationCaretAwarenessListener\"),\n view: () => {\n const onAwarenessUpdate = () => {\n storage.users = awarenessStatesToArray(provider.awareness.states);\n };\n provider.awareness.setLocalStateField(\"user\", user);\n storage.users = awarenessStatesToArray(provider.awareness.states);\n provider.awareness.on(\"update\", onAwarenessUpdate);\n return {\n destroy: () => {\n provider.awareness.off(\"update\", onAwarenessUpdate);\n storage.users = [];\n }\n };\n }\n });\n return [\n awarenessListenerPlugin,\n yCursorPlugin(provider.awareness, {\n cursorBuilder: this.options.render,\n selectionBuilder: this.options.selectionRender\n })\n ];\n }\n});\n\n// src/index.ts\nvar index_default = CollaborationCaret;\nexport {\n CollaborationCaret,\n index_default as default\n};\n//# sourceMappingURL=index.js.map","// src/document.ts\nimport { Node } from \"@tiptap/core\";\nvar Document = Node.create({\n name: \"doc\",\n topNode: true,\n content: \"block+\",\n renderMarkdown: (node, h) => {\n if (!node.content) {\n return \"\";\n }\n return h.renderChildren(node.content, \"\\n\\n\");\n }\n});\n\n// src/index.ts\nvar index_default = Document;\nexport {\n Document,\n index_default as default\n};\n//# sourceMappingURL=index.js.map","// src/highlight.ts\nimport { getStyleProperty, Mark, markInputRule, markPasteRule, mergeAttributes } from \"@tiptap/core\";\nvar inputRegex = /(?:^|\\s)(==(?!\\s+==)((?:[^=]+))==(?!\\s+==))$/;\nvar pasteRegex = /(?:^|\\s)(==(?!\\s+==)((?:[^=]+))==(?!\\s+==))/g;\nvar Highlight = Mark.create({\n name: \"highlight\",\n addOptions() {\n return {\n multicolor: false,\n HTMLAttributes: {}\n };\n },\n addAttributes() {\n if (!this.options.multicolor) {\n return {};\n }\n return {\n color: {\n default: null,\n // Prefer `data-color` (set by our own `renderHTML`) for lossless\n // round-trips. Otherwise parse the raw inline `style` attribute so\n // the original color format (e.g. `#rrggbb`) is preserved instead of\n // the canonicalized `rgb(...)` value from `element.style.backgroundColor`.\n parseHTML: (element) => element.getAttribute(\"data-color\") || getStyleProperty(element, \"background-color\") || element.style.backgroundColor,\n renderHTML: (attributes) => {\n if (!attributes.color) {\n return {};\n }\n return {\n \"data-color\": attributes.color,\n style: `background-color: ${attributes.color}; color: inherit`\n };\n }\n }\n };\n },\n parseHTML() {\n return [\n {\n tag: \"mark\"\n }\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"mark\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n renderMarkdown: (node, h) => {\n return `==${h.renderChildren(node)}==`;\n },\n parseMarkdown: (token, h) => {\n return h.applyMark(\"highlight\", h.parseInline(token.tokens || []));\n },\n markdownTokenizer: {\n name: \"highlight\",\n level: \"inline\",\n start: (src) => src.indexOf(\"==\"),\n tokenize(src, _, h) {\n const rule = /^(==)([^=]+)(==)/;\n const match = rule.exec(src);\n if (match) {\n const innerContent = match[2].trim();\n const children = h.inlineTokens(innerContent);\n return {\n type: \"highlight\",\n raw: match[0],\n text: innerContent,\n tokens: children\n };\n }\n }\n },\n addCommands() {\n return {\n setHighlight: (attributes) => ({ commands }) => {\n return commands.setMark(this.name, attributes);\n },\n toggleHighlight: (attributes) => ({ commands }) => {\n return commands.toggleMark(this.name, attributes);\n },\n unsetHighlight: () => ({ commands }) => {\n return commands.unsetMark(this.name);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Shift-h\": () => this.editor.commands.toggleHighlight()\n };\n },\n addInputRules() {\n return [\n markInputRule({\n find: inputRegex,\n type: this.type\n })\n ];\n },\n addPasteRules() {\n return [\n markPasteRule({\n find: pasteRegex,\n type: this.type\n })\n ];\n }\n});\n\n// src/index.ts\nvar index_default = Highlight;\nexport {\n Highlight,\n index_default as default,\n inputRegex,\n pasteRegex\n};\n//# sourceMappingURL=index.js.map","var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/bullet-list/bullet-list.ts\nimport { mergeAttributes, Node, wrappingInputRule } from \"@tiptap/core\";\nvar ListItemName = \"listItem\";\nvar TextStyleName = \"textStyle\";\nvar bulletListInputRegex = /^\\s*([-+*])\\s$/;\nvar BulletList = Node.create({\n name: \"bulletList\",\n addOptions() {\n return {\n itemTypeName: \"listItem\",\n HTMLAttributes: {},\n keepMarks: false,\n keepAttributes: false\n };\n },\n group: \"block list\",\n content() {\n return `${this.options.itemTypeName}+`;\n },\n parseHTML() {\n return [{ tag: \"ul\" }];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"ul\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n markdownTokenName: \"list\",\n parseMarkdown: (token, helpers) => {\n if (token.type !== \"list\" || token.ordered) {\n return [];\n }\n return {\n type: \"bulletList\",\n content: token.items ? helpers.parseChildren(token.items) : []\n };\n },\n renderMarkdown: (node, h) => {\n if (!node.content) {\n return \"\";\n }\n return h.renderChildren(node.content, \"\\n\");\n },\n markdownOptions: {\n indentsContent: true\n },\n addCommands() {\n return {\n toggleBulletList: () => ({ commands, chain }) => {\n if (this.options.keepAttributes) {\n return chain().toggleList(this.name, this.options.itemTypeName, this.options.keepMarks).updateAttributes(ListItemName, this.editor.getAttributes(TextStyleName)).run();\n }\n return commands.toggleList(this.name, this.options.itemTypeName, this.options.keepMarks);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Shift-8\": () => this.editor.commands.toggleBulletList()\n };\n },\n addInputRules() {\n let inputRule = wrappingInputRule({\n find: bulletListInputRegex,\n type: this.type\n });\n if (this.options.keepMarks || this.options.keepAttributes) {\n inputRule = wrappingInputRule({\n find: bulletListInputRegex,\n type: this.type,\n keepMarks: this.options.keepMarks,\n keepAttributes: this.options.keepAttributes,\n getAttributes: () => {\n return this.editor.getAttributes(TextStyleName);\n },\n editor: this.editor\n });\n }\n return [inputRule];\n }\n});\n\n// src/item/list-item.ts\nimport { mergeAttributes as mergeAttributes2, Node as Node2, renderNestedMarkdownContent } from \"@tiptap/core\";\n\n// src/helpers/createBranchingListDeleteKeymap.ts\nimport { Extension } from \"@tiptap/core\";\n\n// src/helpers/hoistBranchingNestedList.ts\nimport { Fragment } from \"@tiptap/pm/model\";\n\n// src/helpers/getBranchingNestedListAtCursor.ts\nvar getBranchingNestedListAtCursor = (state, itemName, wrapperNames) => {\n const { selection } = state;\n if (!selection.empty) {\n return null;\n }\n const { $from } = selection;\n if (!$from.parent.isTextblock) {\n return null;\n }\n if ($from.parentOffset !== $from.parent.content.size) {\n return null;\n }\n let listItemDepth = -1;\n for (let depth = $from.depth; depth > 0; depth -= 1) {\n if ($from.node(depth).type.name === itemName) {\n listItemDepth = depth;\n break;\n }\n }\n if (listItemDepth < 0) {\n return null;\n }\n const listItem = $from.node(listItemDepth);\n const indexInListItem = $from.index(listItemDepth);\n if (indexInListItem + 1 >= listItem.childCount) {\n return null;\n }\n const nextChild = listItem.child(indexInListItem + 1);\n if (!wrapperNames.includes(nextChild.type.name)) {\n return null;\n }\n const itemType = state.schema.nodes[itemName];\n let hasBranching = false;\n nextChild.forEach((child) => {\n if (child.type === itemType && child.childCount > 1) {\n hasBranching = true;\n }\n });\n if (!hasBranching) {\n return null;\n }\n const nodeAfter = state.doc.resolve($from.after()).nodeAfter;\n if (!nodeAfter || !wrapperNames.includes(nodeAfter.type.name)) {\n return null;\n }\n const items = [];\n nodeAfter.forEach((child) => {\n items.push(child);\n });\n if (items.length === 0) {\n return null;\n }\n return {\n listItemDepth,\n nestedList: nodeAfter,\n nestedListPos: $from.after(),\n insertPos: $from.after(listItemDepth),\n items\n };\n};\n\n// src/helpers/hoistBranchingNestedList.ts\nvar hoistBranchingNestedList = (state, dispatch, itemName, wrapperNames) => {\n const context = getBranchingNestedListAtCursor(state, itemName, wrapperNames);\n if (!context) {\n return false;\n }\n const { selection } = state;\n const { nestedList, nestedListPos, insertPos, items } = context;\n const tr = state.tr;\n tr.delete(nestedListPos, nestedListPos + nestedList.nodeSize);\n const mappedInsertPos = tr.mapping.map(insertPos);\n tr.insert(mappedInsertPos, Fragment.from(items));\n tr.setSelection(selection.map(tr.doc, tr.mapping));\n if (dispatch) {\n dispatch(tr);\n }\n return true;\n};\n\n// src/helpers/handleDeleteBranchingNestedList.ts\nvar handleDeleteBranchingNestedList = (editor, itemName, wrapperNames) => {\n return hoistBranchingNestedList(editor.state, editor.view.dispatch, itemName, wrapperNames);\n};\n\n// src/helpers/createBranchingListDeleteKeymap.ts\nvar createBranchingListDeleteKeymap = (itemName, wrapperNames) => {\n return Extension.create({\n name: `${itemName}BranchingDeleteKeymap`,\n priority: 101,\n addKeyboardShortcuts() {\n const handleDelete2 = () => handleDeleteBranchingNestedList(this.editor, itemName, wrapperNames);\n return {\n Delete: handleDelete2,\n \"Mod-Delete\": handleDelete2\n };\n }\n });\n};\n\n// src/ordered-list/roman.ts\nvar ROMAN_NUMERALS = [\n [1e3, \"m\"],\n [900, \"cm\"],\n [500, \"d\"],\n [400, \"cd\"],\n [100, \"c\"],\n [90, \"xc\"],\n [50, \"l\"],\n [40, \"xl\"],\n [10, \"x\"],\n [9, \"ix\"],\n [5, \"v\"],\n [4, \"iv\"],\n [1, \"i\"]\n];\nvar ALPHA_NUMERALS = \"abcdefghijklmnopqrstuvwxyz\";\nvar ORDERED_LIST_ALPHA_MARKER_PATTERN = \"[a-zA-Z]{1,2}\";\nvar ORDERED_LIST_MARKER_PATTERN = String.raw`\\d+|[ivxlcdmIVXLCDM]+|${ORDERED_LIST_ALPHA_MARKER_PATTERN}`;\nfunction toRoman(num) {\n let remaining = num;\n let result = \"\";\n for (const [value, numeral] of ROMAN_NUMERALS) {\n while (remaining >= value) {\n result += numeral;\n remaining -= value;\n }\n }\n return result;\n}\nfunction toRomanUpper(num) {\n return toRoman(num).toUpperCase();\n}\nfunction fromRoman(roman) {\n const lower = roman.toLowerCase();\n let index = 0;\n let result = 0;\n while (index < lower.length) {\n let matched = false;\n for (const [value, numeral] of ROMAN_NUMERALS) {\n if (lower.startsWith(numeral, index)) {\n result += value;\n index += numeral.length;\n matched = true;\n break;\n }\n }\n if (!matched) {\n return 0;\n }\n }\n return result;\n}\nfunction isValidRoman(marker) {\n if (!/^[ivxlcdmIVXLCDM]+$/.test(marker)) {\n return false;\n }\n const value = fromRoman(marker);\n if (value <= 0) {\n return false;\n }\n const expected = marker === marker.toLowerCase() ? toRoman(value) : toRomanUpper(value);\n return expected === marker;\n}\nfunction fromAlpha(marker) {\n const lower = marker.toLowerCase();\n if (lower.length === 1) {\n return lower.charCodeAt(0) - \"a\".charCodeAt(0) + 1;\n }\n if (lower.length === 2) {\n const first = lower.charCodeAt(0) - \"a\".charCodeAt(0);\n const second = lower.charCodeAt(1) - \"a\".charCodeAt(0);\n return (first + 1) * 26 + second + 1;\n }\n return 0;\n}\nfunction toRomanAlpha(num) {\n if (num <= 26) {\n return ALPHA_NUMERALS[num - 1];\n }\n const first = Math.floor((num - 1) / 26) - 1;\n const second = (num - 1) % 26;\n if (first < 0) {\n return ALPHA_NUMERALS[second];\n }\n return ALPHA_NUMERALS[first] + ALPHA_NUMERALS[second];\n}\nfunction detectMarkerType(marker) {\n if (!marker || /^\\d+$/.test(marker)) {\n return void 0;\n }\n if (isValidRoman(marker)) {\n return marker === marker.toLowerCase() ? \"i\" : \"I\";\n }\n if (/^[a-z]{1,2}$/.test(marker)) {\n return \"a\";\n }\n if (/^[A-Z]{1,2}$/.test(marker)) {\n return \"A\";\n }\n return void 0;\n}\nfunction markerToStart(marker) {\n if (/^\\d+$/.test(marker)) {\n return parseInt(marker, 10);\n }\n const type = detectMarkerType(marker);\n if (type === \"i\" || type === \"I\") {\n return fromRoman(marker);\n }\n if (type === \"a\" || type === \"A\") {\n const start = fromAlpha(marker);\n return start > 0 ? start : 1;\n }\n const parsed = parseInt(marker, 10);\n return Number.isNaN(parsed) ? 1 : parsed;\n}\nfunction startToMarker(type, start) {\n if (type === \"numeric\") {\n return String(start);\n }\n switch (type) {\n case \"a\":\n return toRomanAlpha(start);\n case \"A\":\n return toRomanAlpha(start).toUpperCase();\n case \"i\":\n return toRoman(start);\n case \"I\":\n return toRomanUpper(start);\n default:\n return String(start);\n }\n}\nfunction areOrderedListMarkersSequential(markers) {\n var _a;\n if (markers.length === 0) {\n return false;\n }\n const firstType = (_a = detectMarkerType(markers[0])) != null ? _a : \"numeric\";\n const firstStart = markerToStart(markers[0]);\n if (firstStart < 1) {\n return false;\n }\n for (let i = 0; i < markers.length; i++) {\n const expected = startToMarker(firstType, firstStart + i);\n if (markers[i] !== expected) {\n return false;\n }\n }\n return true;\n}\nfunction parseListMarker(marker) {\n return {\n type: detectMarkerType(marker),\n start: markerToStart(marker)\n };\n}\nfunction buildOrderedListAttrsFromMarker(marker) {\n const { type, start } = parseListMarker(marker);\n const attrs = {};\n if (type) {\n attrs.type = type;\n }\n if (start !== 1) {\n attrs.start = start;\n }\n return attrs;\n}\nfunction getListMarker(type, index, separator = \". \") {\n const position = index + 1;\n if (!type || type === \"1\") {\n return `${position}${separator}`;\n }\n switch (type) {\n case \"a\":\n return `${toRomanAlpha(position)}${separator}`;\n case \"A\":\n return `${toRomanAlpha(position).toUpperCase()}${separator}`;\n case \"i\":\n return `${toRoman(position)}${separator}`;\n case \"I\":\n return `${toRomanUpper(position)}${separator}`;\n default:\n return `${position}${separator}`;\n }\n}\n\n// src/item/list-item.ts\nfunction isSameLineOrderedListToken(token) {\n var _a, _b;\n const nestedToken = (_a = token.tokens) == null ? void 0 : _a[0];\n return Boolean(\n token.text && ((_b = token.tokens) == null ? void 0 : _b.length) === 1 && (nestedToken == null ? void 0 : nestedToken.type) === \"list\" && nestedToken.ordered && nestedToken.raw === token.text\n );\n}\nfunction parseSameLineOrderedListText(text, helpers) {\n if (helpers.tokenizeInline) {\n return helpers.parseInline(helpers.tokenizeInline(text));\n }\n return helpers.parseInline([\n {\n type: \"text\",\n raw: text,\n text\n }\n ]);\n}\nvar ListItem = Node2.create({\n name: \"listItem\",\n addOptions() {\n return {\n HTMLAttributes: {},\n bulletListTypeName: \"bulletList\",\n orderedListTypeName: \"orderedList\"\n };\n },\n content: \"paragraph block*\",\n defining: true,\n parseHTML() {\n return [\n {\n tag: \"li\"\n }\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"li\", mergeAttributes2(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n markdownTokenName: \"list_item\",\n parseMarkdown: (token, helpers) => {\n var _a;\n if (token.type !== \"list_item\") {\n return [];\n }\n const parseBlockChildren = (_a = helpers.parseBlockChildren) != null ? _a : helpers.parseChildren;\n let content = [];\n if (token.tokens && token.tokens.length > 0) {\n if (isSameLineOrderedListToken(token)) {\n return {\n type: \"listItem\",\n content: [\n {\n type: \"paragraph\",\n content: parseSameLineOrderedListText(token.text || \"\", helpers)\n }\n ]\n };\n }\n const hasParagraphTokens = token.tokens.some((t) => t.type === \"paragraph\");\n if (hasParagraphTokens) {\n content = parseBlockChildren(token.tokens);\n } else {\n const firstToken = token.tokens[0];\n if (firstToken && firstToken.type === \"text\" && firstToken.tokens && firstToken.tokens.length > 0) {\n const inlineContent = helpers.parseInline(firstToken.tokens);\n content = [\n {\n type: \"paragraph\",\n content: inlineContent\n }\n ];\n if (token.tokens.length > 1) {\n const remainingTokens = token.tokens.slice(1);\n const additionalContent = parseBlockChildren(remainingTokens);\n content.push(...additionalContent);\n }\n } else {\n content = parseBlockChildren(token.tokens);\n }\n }\n }\n if (content.length === 0) {\n content = [\n {\n type: \"paragraph\",\n content: []\n }\n ];\n }\n return {\n type: \"listItem\",\n content\n };\n },\n renderMarkdown: (node, h, ctx) => {\n return renderNestedMarkdownContent(\n node,\n h,\n (context) => {\n var _a, _b, _c, _d;\n if (context.parentType === \"bulletList\") {\n return \"- \";\n }\n if (context.parentType === \"orderedList\") {\n const start = ((_b = (_a = context.meta) == null ? void 0 : _a.parentAttrs) == null ? void 0 : _b.start) || 1;\n const type = (_d = (_c = context.meta) == null ? void 0 : _c.parentAttrs) == null ? void 0 : _d.type;\n const index = start - 1 + (context.index || 0);\n return getListMarker(type, index, \". \");\n }\n return \"- \";\n },\n ctx\n );\n },\n addExtensions() {\n return [\n createBranchingListDeleteKeymap(this.name, [\n this.options.bulletListTypeName,\n this.options.orderedListTypeName\n ])\n ];\n },\n addKeyboardShortcuts() {\n return {\n Enter: () => this.editor.commands.splitListItem(this.name),\n Tab: () => this.editor.commands.sinkListItem(this.name),\n \"Shift-Tab\": () => this.editor.commands.liftListItem(this.name)\n };\n }\n});\n\n// src/keymap/list-keymap.ts\nimport { Extension as Extension2 } from \"@tiptap/core\";\n\n// src/keymap/listHelpers/index.ts\nvar listHelpers_exports = {};\n__export(listHelpers_exports, {\n findListItemPos: () => findListItemPos,\n getNextListDepth: () => getNextListDepth,\n handleBackspace: () => handleBackspace,\n handleDelete: () => handleDelete,\n hasListBefore: () => hasListBefore,\n hasListItemAfter: () => hasListItemAfter,\n hasListItemBefore: () => hasListItemBefore,\n listItemHasSubList: () => listItemHasSubList,\n nextListIsDeeper: () => nextListIsDeeper,\n nextListIsHigher: () => nextListIsHigher\n});\n\n// src/keymap/listHelpers/findListItemPos.ts\nimport { getNodeType } from \"@tiptap/core\";\nvar findListItemPos = (typeOrName, state) => {\n const { $from } = state.selection;\n const nodeType = getNodeType(typeOrName, state.schema);\n let currentNode = null;\n let currentDepth = $from.depth;\n let currentPos = $from.pos;\n let targetDepth = null;\n while (currentDepth > 0 && targetDepth === null) {\n currentNode = $from.node(currentDepth);\n if (currentNode.type === nodeType) {\n targetDepth = currentDepth;\n } else {\n currentDepth -= 1;\n currentPos -= 1;\n }\n }\n if (targetDepth === null) {\n return null;\n }\n return { $pos: state.doc.resolve(currentPos), depth: targetDepth };\n};\n\n// src/keymap/listHelpers/getNextListDepth.ts\nimport { getNodeAtPosition } from \"@tiptap/core\";\nvar getNextListDepth = (typeOrName, state) => {\n const listItemPos = findListItemPos(typeOrName, state);\n if (!listItemPos) {\n return false;\n }\n const [, depth] = getNodeAtPosition(state, typeOrName, listItemPos.$pos.pos + 4);\n return depth;\n};\n\n// src/keymap/listHelpers/handleBackspace.ts\nimport { isAtStartOfNode, isNodeActive } from \"@tiptap/core\";\n\n// src/keymap/listHelpers/hasListBefore.ts\nvar hasListBefore = (editorState, name, parentListTypes) => {\n const { $anchor } = editorState.selection;\n const previousNodePos = Math.max(0, $anchor.pos - 2);\n const previousNode = editorState.doc.resolve(previousNodePos).node();\n if (!previousNode || !parentListTypes.includes(previousNode.type.name)) {\n return false;\n }\n return true;\n};\n\n// src/keymap/listHelpers/handleBackspace.ts\nvar handleBackspace = (editor, name, parentListTypes) => {\n if (editor.commands.undoInputRule()) {\n return true;\n }\n if (editor.state.selection.from !== editor.state.selection.to) {\n return false;\n }\n if (!isNodeActive(editor.state, name) && hasListBefore(editor.state, name, parentListTypes)) {\n const { $anchor } = editor.state.selection;\n const $listPos = editor.state.doc.resolve($anchor.before() - 1);\n const listDescendants = [];\n $listPos.node().descendants((node, pos) => {\n if (node.type.name === name) {\n listDescendants.push({ node, pos });\n }\n });\n const lastItem = listDescendants.at(-1);\n if (!lastItem) {\n return false;\n }\n const $lastItemPos = editor.state.doc.resolve($listPos.start() + lastItem.pos + 1);\n return editor.chain().cut({ from: $anchor.start() - 1, to: $anchor.end() + 1 }, $lastItemPos.end()).joinForward().run();\n }\n if (!isNodeActive(editor.state, name)) {\n return false;\n }\n if (!isAtStartOfNode(editor.state)) {\n return false;\n }\n return editor.chain().liftListItem(name).run();\n};\n\n// src/keymap/listHelpers/handleDelete.ts\nimport { isAtEndOfNode, isNodeActive as isNodeActive2 } from \"@tiptap/core\";\n\n// src/keymap/listHelpers/nextListIsDeeper.ts\nvar nextListIsDeeper = (typeOrName, state) => {\n const listDepth = getNextListDepth(typeOrName, state);\n const listItemPos = findListItemPos(typeOrName, state);\n if (!listItemPos || !listDepth) {\n return false;\n }\n if (listDepth > listItemPos.depth) {\n return true;\n }\n return false;\n};\n\n// src/keymap/listHelpers/nextListIsHigher.ts\nvar nextListIsHigher = (typeOrName, state) => {\n const listDepth = getNextListDepth(typeOrName, state);\n const listItemPos = findListItemPos(typeOrName, state);\n if (!listItemPos || !listDepth) {\n return false;\n }\n if (listDepth < listItemPos.depth) {\n return true;\n }\n return false;\n};\n\n// src/keymap/listHelpers/handleDelete.ts\nvar handleDelete = (editor, name) => {\n if (!isNodeActive2(editor.state, name)) {\n return false;\n }\n if (!isAtEndOfNode(editor.state, name)) {\n return false;\n }\n const { selection } = editor.state;\n const { $from, $to } = selection;\n if (!selection.empty && $from.sameParent($to)) {\n return false;\n }\n if (nextListIsDeeper(name, editor.state)) {\n return editor.chain().focus(editor.state.selection.from + 4).lift(name).joinBackward().run();\n }\n if (nextListIsHigher(name, editor.state)) {\n return editor.chain().joinForward().joinBackward().run();\n }\n return editor.commands.joinItemForward();\n};\n\n// src/keymap/listHelpers/hasListItemAfter.ts\nvar hasListItemAfter = (typeOrName, state) => {\n var _a;\n const { $anchor } = state.selection;\n const $targetPos = state.doc.resolve($anchor.pos - $anchor.parentOffset - 2);\n if ($targetPos.index() === $targetPos.parent.childCount - 1) {\n return false;\n }\n if (((_a = $targetPos.nodeAfter) == null ? void 0 : _a.type.name) !== typeOrName) {\n return false;\n }\n return true;\n};\n\n// src/keymap/listHelpers/hasListItemBefore.ts\nvar hasListItemBefore = (typeOrName, state) => {\n var _a;\n const { $anchor } = state.selection;\n const $targetPos = state.doc.resolve($anchor.pos - 2);\n if ($targetPos.index() === 0) {\n return false;\n }\n if (((_a = $targetPos.nodeBefore) == null ? void 0 : _a.type.name) !== typeOrName) {\n return false;\n }\n return true;\n};\n\n// src/keymap/listHelpers/listItemHasSubList.ts\nimport { getNodeType as getNodeType2 } from \"@tiptap/core\";\nvar listItemHasSubList = (typeOrName, state, node) => {\n if (!node) {\n return false;\n }\n const nodeType = getNodeType2(typeOrName, state.schema);\n let hasSubList = false;\n node.descendants((child) => {\n if (child.type === nodeType) {\n hasSubList = true;\n }\n });\n return hasSubList;\n};\n\n// src/keymap/list-keymap.ts\nvar ListKeymap = Extension2.create({\n name: \"listKeymap\",\n addOptions() {\n return {\n listTypes: [\n {\n itemName: \"listItem\",\n wrapperNames: [\"bulletList\", \"orderedList\"]\n },\n {\n itemName: \"taskItem\",\n wrapperNames: [\"taskList\"]\n }\n ]\n };\n },\n addKeyboardShortcuts() {\n return {\n Delete: ({ editor }) => {\n let handled = false;\n this.options.listTypes.forEach(({ itemName }) => {\n if (editor.state.schema.nodes[itemName] === void 0) {\n return;\n }\n if (handleDelete(editor, itemName)) {\n handled = true;\n }\n });\n return handled;\n },\n \"Mod-Delete\": ({ editor }) => {\n let handled = false;\n this.options.listTypes.forEach(({ itemName }) => {\n if (editor.state.schema.nodes[itemName] === void 0) {\n return;\n }\n if (handleDelete(editor, itemName)) {\n handled = true;\n }\n });\n return handled;\n },\n Backspace: ({ editor }) => {\n let handled = false;\n this.options.listTypes.forEach(({ itemName, wrapperNames }) => {\n if (editor.state.schema.nodes[itemName] === void 0) {\n return;\n }\n if (handleBackspace(editor, itemName, wrapperNames)) {\n handled = true;\n }\n });\n return handled;\n },\n \"Mod-Backspace\": ({ editor }) => {\n let handled = false;\n this.options.listTypes.forEach(({ itemName, wrapperNames }) => {\n if (editor.state.schema.nodes[itemName] === void 0) {\n return;\n }\n if (handleBackspace(editor, itemName, wrapperNames)) {\n handled = true;\n }\n });\n return handled;\n }\n };\n }\n});\n\n// src/kit/index.ts\nimport { Extension as Extension3 } from \"@tiptap/core\";\n\n// src/ordered-list/ordered-list.ts\nimport { Plugin } from \"@tiptap/pm/state\";\nimport { mergeAttributes as mergeAttributes3, Node as Node3, wrappingInputRule as wrappingInputRule2 } from \"@tiptap/core\";\n\n// src/ordered-list/utils.ts\nvar ORDERED_LIST_ITEM_REGEX = new RegExp(\n `^(\\\\s*)(${ORDERED_LIST_MARKER_PATTERN})([.)])\\\\s+(.*)$`\n);\nvar ORDERED_LIST_LINE_START_REGEX = new RegExp(\n `^(\\\\s*)(${ORDERED_LIST_MARKER_PATTERN})([.)])\\\\s+`\n);\nvar INDENTED_LINE_REGEX = /^\\s/;\nfunction isOrderedListMarkerLine(line) {\n return ORDERED_LIST_ITEM_REGEX.test(line.trimStart());\n}\nfunction isBlockContentLine(line) {\n const trimmedLine = line.trimStart();\n return (\n // oxlint-disable-next-line prefer-string-starts-ends-with\n /^[-+*]\\s+/.test(trimmedLine) || isOrderedListMarkerLine(trimmedLine) || // oxlint-disable-next-line prefer-string-starts-ends-with\n /^>\\s?/.test(trimmedLine) || // oxlint-disable-next-line prefer-string-starts-ends-with\n /^```/.test(trimmedLine) || // oxlint-disable-next-line prefer-string-starts-ends-with\n /^~~~/.test(trimmedLine)\n );\n}\nfunction splitItemContent(contentLines) {\n const paragraphLines = [];\n const blockLines = [];\n let reachedBlockBoundary = false;\n contentLines.forEach((line) => {\n if (reachedBlockBoundary) {\n blockLines.push(line);\n return;\n }\n if (line.trim() === \"\") {\n reachedBlockBoundary = true;\n blockLines.push(line);\n return;\n }\n if (paragraphLines.length > 0 && isBlockContentLine(line)) {\n reachedBlockBoundary = true;\n blockLines.push(line);\n return;\n }\n paragraphLines.push(line);\n });\n return {\n paragraphLines,\n blockLines\n };\n}\nfunction collectOrderedListItems(lines) {\n const listItems = [];\n let currentLineIndex = 0;\n let consumed = 0;\n while (currentLineIndex < lines.length) {\n const line = lines[currentLineIndex];\n const match = line.match(ORDERED_LIST_ITEM_REGEX);\n if (!match) {\n break;\n }\n const [, indent, marker, _separator, content] = match;\n const indentLevel = indent.length;\n const number = parseInt(marker, 10);\n const markerType = isNaN(number) ? detectMarkerType(marker) : void 0;\n const itemNumber = isNaN(number) ? markerToStart(marker) : number;\n const itemContentLines = [content];\n let nextLineIndex = currentLineIndex + 1;\n const itemLines = [line];\n let sawBlankLine = false;\n while (nextLineIndex < lines.length) {\n const nextLine = lines[nextLineIndex];\n const nextMatch = nextLine.match(ORDERED_LIST_ITEM_REGEX);\n if (nextMatch) {\n break;\n }\n if (nextLine.trim() === \"\") {\n itemLines.push(nextLine);\n itemContentLines.push(\"\");\n sawBlankLine = true;\n nextLineIndex += 1;\n } else if (nextLine.match(INDENTED_LINE_REGEX)) {\n const leadingWhitespace = nextLine.length - nextLine.trimStart().length;\n const contentIndent = indentLevel + marker.length + 1;\n itemLines.push(nextLine);\n itemContentLines.push(nextLine.slice(Math.min(leadingWhitespace, contentIndent)));\n nextLineIndex += 1;\n } else {\n if (sawBlankLine) {\n break;\n }\n itemLines.push(nextLine);\n itemContentLines.push(nextLine);\n nextLineIndex += 1;\n }\n }\n listItems.push({\n indent: indentLevel,\n number: itemNumber,\n type: markerType,\n content: itemContentLines.join(\"\\n\").trim(),\n contentLines: itemContentLines,\n raw: itemLines.join(\"\\n\")\n });\n consumed = nextLineIndex;\n currentLineIndex = nextLineIndex;\n }\n return [listItems, consumed];\n}\nvar PLAIN_TEXT_ORDERED_LIST_LINE_REGEX = new RegExp(\n `^(${ORDERED_LIST_MARKER_PATTERN})([.)])\\\\s+(.+)$`\n);\nfunction parsePlainTextOrderedListPaste(text) {\n const lines = text.split(\"\\n\").filter((l) => l.trim().length > 0);\n if (lines.length === 0) {\n return null;\n }\n const parsedItems = [];\n for (const line of lines) {\n const match = line.trim().match(PLAIN_TEXT_ORDERED_LIST_LINE_REGEX);\n if (!match) {\n return null;\n }\n parsedItems.push({\n marker: match[1],\n content: match[3]\n });\n }\n const markers = parsedItems.map((item) => item.marker);\n if (!areOrderedListMarkersSequential(markers)) {\n return null;\n }\n const attrs = buildOrderedListAttrsFromMarker(parsedItems[0].marker);\n return {\n type: \"orderedList\",\n attrs,\n content: parsedItems.map((item) => ({\n type: \"listItem\",\n content: [\n {\n type: \"paragraph\",\n content: [{ type: \"text\", text: item.content }]\n }\n ]\n }))\n };\n}\nfunction buildNestedStructure(items, baseIndent, lexer) {\n const result = [];\n let currentIndex = 0;\n while (currentIndex < items.length) {\n const item = items[currentIndex];\n if (item.indent === baseIndent) {\n const { paragraphLines, blockLines } = splitItemContent(item.contentLines);\n const mainText = paragraphLines.join(\"\\n\").trim();\n const tokens = [];\n if (mainText) {\n tokens.push({\n type: \"paragraph\",\n raw: mainText,\n tokens: lexer.inlineTokens(mainText)\n });\n }\n const additionalContent = blockLines.join(\"\\n\").trim();\n if (additionalContent) {\n const blockTokens = lexer.blockTokens(additionalContent);\n tokens.push(...blockTokens);\n }\n let lookAheadIndex = currentIndex + 1;\n const nestedItems = [];\n while (lookAheadIndex < items.length && items[lookAheadIndex].indent > baseIndent) {\n nestedItems.push(items[lookAheadIndex]);\n lookAheadIndex += 1;\n }\n if (nestedItems.length > 0) {\n const nextIndent = Math.min(...nestedItems.map((nestedItem) => nestedItem.indent));\n const nestedListItems = buildNestedStructure(nestedItems, nextIndent, lexer);\n tokens.push({\n type: \"list\",\n ordered: true,\n start: nestedItems[0].number,\n typeMarker: nestedItems[0].type,\n items: nestedListItems,\n raw: nestedItems.map((nestedItem) => nestedItem.raw).join(\"\\n\")\n });\n }\n result.push({\n type: \"list_item\",\n raw: item.raw,\n tokens\n });\n currentIndex = lookAheadIndex;\n } else {\n currentIndex += 1;\n }\n }\n return result;\n}\nfunction parseListItems(items, helpers) {\n return items.map((item) => {\n if (item.type !== \"list_item\") {\n return helpers.parseChildren([item])[0];\n }\n const content = [];\n if (item.tokens && item.tokens.length > 0) {\n item.tokens.forEach((itemToken) => {\n if (itemToken.type === \"paragraph\" || itemToken.type === \"list\" || itemToken.type === \"blockquote\" || itemToken.type === \"code\") {\n content.push(...helpers.parseChildren([itemToken]));\n } else if (itemToken.type === \"text\" && itemToken.tokens) {\n const inlineContent = helpers.parseChildren([itemToken]);\n content.push({\n type: \"paragraph\",\n content: inlineContent\n });\n } else {\n const parsed = helpers.parseChildren([itemToken]);\n if (parsed.length > 0) {\n content.push(...parsed);\n }\n }\n });\n }\n return {\n type: \"listItem\",\n content\n };\n });\n}\n\n// src/ordered-list/ordered-list.ts\nvar ListItemName2 = \"listItem\";\nvar TextStyleName2 = \"textStyle\";\nvar orderedListInputRegex = /^(\\d+)\\.\\s$/;\nfunction cssListStyleTypeToHtmlType(style) {\n const match = style.match(/list-style-type\\s*:\\s*([^;]+)/i);\n if (!match) {\n return null;\n }\n const cssValue = match[1].trim().toLowerCase();\n switch (cssValue) {\n case \"upper-roman\":\n return \"I\";\n case \"lower-roman\":\n return \"i\";\n case \"upper-alpha\":\n case \"upper-latin\":\n return \"A\";\n case \"lower-alpha\":\n case \"lower-latin\":\n return \"a\";\n default:\n return null;\n }\n}\nvar OrderedList = Node3.create({\n name: \"orderedList\",\n addOptions() {\n return {\n itemTypeName: \"listItem\",\n HTMLAttributes: {},\n keepMarks: false,\n keepAttributes: false\n };\n },\n group: \"block list\",\n content() {\n return `${this.options.itemTypeName}+`;\n },\n addAttributes() {\n return {\n start: {\n default: 1,\n parseHTML: (element) => {\n return element.hasAttribute(\"start\") ? parseInt(element.getAttribute(\"start\") || \"\", 10) : 1;\n }\n },\n type: {\n default: null,\n parseHTML: (element) => {\n const htmlType = element.getAttribute(\"type\");\n if (htmlType) {\n return htmlType;\n }\n const style = element.getAttribute(\"style\");\n if (style) {\n const mappedFromOl = cssListStyleTypeToHtmlType(style);\n if (mappedFromOl) {\n return mappedFromOl;\n }\n }\n const firstLi = element.querySelector(\"li\");\n if (firstLi) {\n const liStyle = firstLi.getAttribute(\"style\");\n if (liStyle) {\n const mappedFromLi = cssListStyleTypeToHtmlType(liStyle);\n if (mappedFromLi) {\n return mappedFromLi;\n }\n }\n }\n return null;\n }\n }\n };\n },\n parseHTML() {\n return [\n {\n tag: \"ol\"\n }\n ];\n },\n renderHTML({ HTMLAttributes }) {\n const { start, type, ...attributesWithoutType } = HTMLAttributes;\n const attrs = mergeAttributes3(this.options.HTMLAttributes, attributesWithoutType);\n if (start !== 1) {\n attrs.start = start;\n }\n if (type && type !== \"1\") {\n attrs.type = type;\n }\n return [\"ol\", attrs, 0];\n },\n markdownTokenName: \"list\",\n parseMarkdown: (token, helpers) => {\n if (token.type !== \"list\" || !token.ordered) {\n return [];\n }\n const startValue = token.start || 1;\n const typeValue = token.typeMarker;\n const content = token.items ? parseListItems(token.items, helpers) : [];\n const attrs = {};\n if (startValue !== 1) {\n attrs.start = startValue;\n }\n if (typeValue) {\n attrs.type = typeValue;\n }\n if (Object.keys(attrs).length > 0) {\n return {\n type: \"orderedList\",\n attrs,\n content\n };\n }\n return {\n type: \"orderedList\",\n content\n };\n },\n renderMarkdown: (node, h) => {\n if (!node.content) {\n return \"\";\n }\n return h.renderChildren(node.content, \"\\n\");\n },\n markdownTokenizer: {\n name: \"orderedList\",\n level: \"block\",\n start: (src) => {\n const match = src.match(ORDERED_LIST_LINE_START_REGEX);\n const index = match == null ? void 0 : match.index;\n return index !== void 0 ? index : -1;\n },\n tokenize: (src, _tokens, lexer) => {\n var _a, _b;\n const lines = src.split(\"\\n\");\n const [listItems, consumed] = collectOrderedListItems(lines);\n if (listItems.length === 0) {\n return void 0;\n }\n const items = buildNestedStructure(listItems, 0, lexer);\n if (items.length === 0) {\n return void 0;\n }\n const startValue = ((_a = listItems[0]) == null ? void 0 : _a.number) || 1;\n const typeMarker = (_b = listItems[0]) == null ? void 0 : _b.type;\n return {\n type: \"list\",\n ordered: true,\n start: startValue,\n typeMarker,\n items,\n raw: lines.slice(0, consumed).join(\"\\n\")\n };\n }\n },\n markdownOptions: {\n indentsContent: true\n },\n addCommands() {\n return {\n toggleOrderedList: () => ({ commands, chain }) => {\n if (this.options.keepAttributes) {\n return chain().toggleList(this.name, this.options.itemTypeName, this.options.keepMarks).updateAttributes(ListItemName2, this.editor.getAttributes(TextStyleName2)).run();\n }\n return commands.toggleList(this.name, this.options.itemTypeName, this.options.keepMarks);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Shift-7\": () => this.editor.commands.toggleOrderedList()\n };\n },\n addProseMirrorPlugins() {\n return [\n new Plugin({\n props: {\n handlePaste: (view, event) => {\n var _a, _b;\n const html = (_a = event.clipboardData) == null ? void 0 : _a.getData(\"text/html\");\n if (html == null ? void 0 : html.trim()) {\n return false;\n }\n const text = (_b = event.clipboardData) == null ? void 0 : _b.getData(\"text/plain\");\n if (!text) {\n return false;\n }\n const orderedListContent = parsePlainTextOrderedListPaste(text);\n if (!orderedListContent) {\n return false;\n }\n try {\n const orderedListNode = view.state.schema.nodeFromJSON(orderedListContent);\n const tr = view.state.tr.replaceSelectionWith(orderedListNode);\n view.dispatch(tr);\n return true;\n } catch {\n return false;\n }\n }\n }\n })\n ];\n },\n addInputRules() {\n const joinPredicate = (match, node) => {\n const hasDefaultType = !node.attrs.type || node.attrs.type === \"1\";\n return hasDefaultType && node.childCount + node.attrs.start === +match[1];\n };\n let inputRule = wrappingInputRule2({\n find: orderedListInputRegex,\n type: this.type,\n getAttributes: (match) => ({ start: +match[1] }),\n joinPredicate\n });\n if (this.options.keepMarks || this.options.keepAttributes) {\n inputRule = wrappingInputRule2({\n find: orderedListInputRegex,\n type: this.type,\n keepMarks: this.options.keepMarks,\n keepAttributes: this.options.keepAttributes,\n getAttributes: (match) => ({ start: +match[1], ...this.editor.getAttributes(TextStyleName2) }),\n joinPredicate,\n editor: this.editor\n });\n }\n return [inputRule];\n }\n});\n\n// src/task-item/task-item.ts\nimport {\n getRenderedAttributes,\n mergeAttributes as mergeAttributes4,\n Node as Node4,\n renderNestedMarkdownContent as renderNestedMarkdownContent2,\n wrappingInputRule as wrappingInputRule3\n} from \"@tiptap/core\";\nvar inputRegex = /^\\s*(\\[([( |x])?\\])\\s$/;\nvar TaskItem = Node4.create({\n name: \"taskItem\",\n addOptions() {\n return {\n nested: false,\n HTMLAttributes: {},\n taskListTypeName: \"taskList\",\n a11y: void 0\n };\n },\n content() {\n return this.options.nested ? \"paragraph block*\" : \"paragraph+\";\n },\n defining: true,\n addAttributes() {\n return {\n checked: {\n default: false,\n keepOnSplit: false,\n parseHTML: (element) => {\n const dataChecked = element.getAttribute(\"data-checked\");\n return dataChecked === \"\" || dataChecked === \"true\";\n },\n renderHTML: (attributes) => ({\n \"data-checked\": attributes.checked\n })\n }\n };\n },\n parseHTML() {\n return [\n {\n tag: `li[data-type=\"${this.name}\"]`,\n priority: 51\n }\n ];\n },\n renderHTML({ node, HTMLAttributes }) {\n return [\n \"li\",\n mergeAttributes4(this.options.HTMLAttributes, HTMLAttributes, {\n \"data-type\": this.name\n }),\n [\n \"label\",\n [\n \"input\",\n {\n type: \"checkbox\",\n checked: node.attrs.checked ? \"checked\" : null\n }\n ],\n [\"span\"]\n ],\n [\"div\", 0]\n ];\n },\n parseMarkdown: (token, h) => {\n const content = [];\n if (token.tokens && token.tokens.length > 0) {\n content.push(h.createNode(\"paragraph\", {}, h.parseInline(token.tokens)));\n } else if (token.text) {\n content.push(h.createNode(\"paragraph\", {}, [h.createNode(\"text\", { text: token.text })]));\n } else {\n content.push(h.createNode(\"paragraph\", {}, []));\n }\n if (token.nestedTokens && token.nestedTokens.length > 0) {\n const nestedContent = h.parseChildren(token.nestedTokens);\n content.push(...nestedContent);\n }\n return h.createNode(\"taskItem\", { checked: token.checked || false }, content);\n },\n renderMarkdown: (node, h) => {\n var _a;\n const checkedChar = ((_a = node.attrs) == null ? void 0 : _a.checked) ? \"x\" : \" \";\n const prefix = `- [${checkedChar}] `;\n return renderNestedMarkdownContent2(node, h, prefix);\n },\n addExtensions() {\n if (!this.options.nested) {\n return [];\n }\n return [createBranchingListDeleteKeymap(this.name, [this.options.taskListTypeName])];\n },\n addKeyboardShortcuts() {\n const shortcuts = {\n Enter: () => this.editor.commands.splitListItem(this.name),\n \"Shift-Tab\": () => this.editor.commands.liftListItem(this.name)\n };\n if (!this.options.nested) {\n return shortcuts;\n }\n return {\n ...shortcuts,\n Tab: () => this.editor.commands.sinkListItem(this.name)\n };\n },\n addNodeView() {\n return ({ node, HTMLAttributes, getPos, editor }) => {\n const listItem = document.createElement(\"li\");\n const checkboxWrapper = document.createElement(\"label\");\n const checkboxStyler = document.createElement(\"span\");\n const checkbox = document.createElement(\"input\");\n const content = document.createElement(\"div\");\n const updateA11Y = (currentNode) => {\n var _a, _b;\n checkbox.ariaLabel = ((_b = (_a = this.options.a11y) == null ? void 0 : _a.checkboxLabel) == null ? void 0 : _b.call(_a, currentNode, checkbox.checked)) || `Task item checkbox for ${currentNode.textContent || \"empty task item\"}`;\n };\n updateA11Y(node);\n checkboxWrapper.contentEditable = \"false\";\n checkbox.type = \"checkbox\";\n checkbox.addEventListener(\"mousedown\", (event) => event.preventDefault());\n checkbox.addEventListener(\"change\", (event) => {\n if (!editor.isEditable && !this.options.onReadOnlyChecked) {\n checkbox.checked = !checkbox.checked;\n return;\n }\n const { checked } = event.target;\n if (editor.isEditable && typeof getPos === \"function\") {\n editor.chain().focus(void 0, { scrollIntoView: false }).command(({ tr }) => {\n const position = getPos();\n if (typeof position !== \"number\") {\n return false;\n }\n const currentNode = tr.doc.nodeAt(position);\n tr.setNodeMarkup(position, void 0, {\n ...currentNode == null ? void 0 : currentNode.attrs,\n checked\n });\n return true;\n }).run();\n }\n if (!editor.isEditable && this.options.onReadOnlyChecked) {\n if (!this.options.onReadOnlyChecked(node, checked)) {\n checkbox.checked = !checkbox.checked;\n }\n }\n });\n Object.entries(this.options.HTMLAttributes).forEach(([key, value]) => {\n listItem.setAttribute(key, value);\n });\n listItem.dataset.checked = node.attrs.checked;\n checkbox.checked = node.attrs.checked;\n checkboxWrapper.append(checkbox, checkboxStyler);\n listItem.append(checkboxWrapper, content);\n Object.entries(HTMLAttributes).forEach(([key, value]) => {\n listItem.setAttribute(key, value);\n });\n let prevRenderedAttributeKeys = new Set(Object.keys(HTMLAttributes));\n return {\n dom: listItem,\n contentDOM: content,\n update: (updatedNode) => {\n if (updatedNode.type !== this.type) {\n return false;\n }\n listItem.dataset.checked = updatedNode.attrs.checked;\n checkbox.checked = updatedNode.attrs.checked;\n updateA11Y(updatedNode);\n const extensionAttributes = editor.extensionManager.attributes;\n const newHTMLAttributes = getRenderedAttributes(updatedNode, extensionAttributes);\n const newKeys = new Set(Object.keys(newHTMLAttributes));\n const staticAttrs = this.options.HTMLAttributes;\n prevRenderedAttributeKeys.forEach((key) => {\n if (!newKeys.has(key)) {\n if (key in staticAttrs) {\n listItem.setAttribute(key, staticAttrs[key]);\n } else {\n listItem.removeAttribute(key);\n }\n }\n });\n Object.entries(newHTMLAttributes).forEach(([key, value]) => {\n if (value === null || value === void 0) {\n if (key in staticAttrs) {\n listItem.setAttribute(key, staticAttrs[key]);\n } else {\n listItem.removeAttribute(key);\n }\n } else {\n listItem.setAttribute(key, value);\n }\n });\n prevRenderedAttributeKeys = newKeys;\n return true;\n }\n };\n };\n },\n addInputRules() {\n return [\n wrappingInputRule3({\n find: inputRegex,\n type: this.type,\n getAttributes: (match) => ({\n checked: match[match.length - 1] === \"x\"\n })\n })\n ];\n }\n});\n\n// src/task-list/task-list.ts\nimport { mergeAttributes as mergeAttributes5, Node as Node5, parseIndentedBlocks } from \"@tiptap/core\";\nvar TaskList = Node5.create({\n name: \"taskList\",\n addOptions() {\n return {\n itemTypeName: \"taskItem\",\n HTMLAttributes: {}\n };\n },\n group: \"block list\",\n content() {\n return `${this.options.itemTypeName}+`;\n },\n parseHTML() {\n return [\n {\n tag: `ul[data-type=\"${this.name}\"]`,\n priority: 51\n }\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\n \"ul\",\n mergeAttributes5(this.options.HTMLAttributes, HTMLAttributes, { \"data-type\": this.name }),\n 0\n ];\n },\n parseMarkdown: (token, h) => {\n return h.createNode(\"taskList\", {}, h.parseChildren(token.items || []));\n },\n renderMarkdown: (node, h) => {\n if (!node.content) {\n return \"\";\n }\n return h.renderChildren(node.content, \"\\n\");\n },\n markdownTokenizer: {\n name: \"taskList\",\n level: \"block\",\n start(src) {\n var _a;\n const index = (_a = src.match(/^\\s*[-+*]\\s+\\[([ xX])\\]\\s+/)) == null ? void 0 : _a.index;\n return index !== void 0 ? index : -1;\n },\n tokenize(src, tokens, lexer) {\n const parseTaskListContent = (content) => {\n const nestedResult = parseIndentedBlocks(\n content,\n {\n itemPattern: /^(\\s*)([-+*])\\s+\\[([ xX])\\]\\s+(.*)$/,\n extractItemData: (match) => ({\n indentLevel: match[1].length,\n mainContent: match[4],\n checked: match[3].toLowerCase() === \"x\"\n }),\n createToken: (data, nestedTokens) => ({\n type: \"taskItem\",\n raw: \"\",\n mainContent: data.mainContent,\n indentLevel: data.indentLevel,\n checked: data.checked,\n text: data.mainContent,\n tokens: lexer.inlineTokens(data.mainContent),\n nestedTokens\n }),\n // Allow recursive nesting\n customNestedParser: parseTaskListContent\n },\n lexer\n );\n if (nestedResult) {\n return [\n {\n type: \"taskList\",\n raw: nestedResult.raw,\n items: nestedResult.items\n }\n ];\n }\n return lexer.blockTokens(content);\n };\n const result = parseIndentedBlocks(\n src,\n {\n itemPattern: /^(\\s*)([-+*])\\s+\\[([ xX])\\]\\s+(.*)$/,\n extractItemData: (match) => ({\n indentLevel: match[1].length,\n mainContent: match[4],\n checked: match[3].toLowerCase() === \"x\"\n }),\n createToken: (data, nestedTokens) => ({\n type: \"taskItem\",\n raw: \"\",\n mainContent: data.mainContent,\n indentLevel: data.indentLevel,\n checked: data.checked,\n text: data.mainContent,\n tokens: lexer.inlineTokens(data.mainContent),\n nestedTokens\n }),\n // Use the recursive parser for nested content\n customNestedParser: parseTaskListContent\n },\n lexer\n );\n if (!result) {\n return void 0;\n }\n return {\n type: \"taskList\",\n raw: result.raw,\n items: result.items\n };\n }\n },\n markdownOptions: {\n indentsContent: true\n },\n addCommands() {\n return {\n toggleTaskList: () => ({ commands }) => {\n return commands.toggleList(this.name, this.options.itemTypeName);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Shift-9\": () => this.editor.commands.toggleTaskList()\n };\n }\n});\n\n// src/kit/index.ts\nvar ListKit = Extension3.create({\n name: \"listKit\",\n addExtensions() {\n const extensions = [];\n if (this.options.bulletList !== false) {\n extensions.push(BulletList.configure(this.options.bulletList));\n }\n if (this.options.listItem !== false) {\n extensions.push(ListItem.configure(this.options.listItem));\n }\n if (this.options.listKeymap !== false) {\n extensions.push(ListKeymap.configure(this.options.listKeymap));\n }\n if (this.options.orderedList !== false) {\n extensions.push(OrderedList.configure(this.options.orderedList));\n }\n if (this.options.taskItem !== false) {\n extensions.push(TaskItem.configure(this.options.taskItem));\n }\n if (this.options.taskList !== false) {\n extensions.push(TaskList.configure(this.options.taskList));\n }\n return extensions;\n }\n});\nexport {\n BulletList,\n ListItem,\n ListKeymap,\n ListKit,\n ORDERED_LIST_MARKER_PATTERN,\n OrderedList,\n TaskItem,\n TaskList,\n areOrderedListMarkersSequential,\n buildOrderedListAttrsFromMarker,\n bulletListInputRegex,\n detectMarkerType,\n getListMarker,\n inputRegex,\n listHelpers_exports as listHelpers,\n markerToStart,\n orderedListInputRegex,\n parseListMarker,\n parsePlainTextOrderedListPaste,\n toRoman,\n toRomanUpper\n};\n//# sourceMappingURL=index.js.map","// src/cell/table-cell.ts\nimport { mergeAttributes, Node } from \"@tiptap/core\";\n\n// src/utilities/parseAlign.ts\nfunction normalizeTableCellAlign(value) {\n if (value === \"left\" /* Left */ || value === \"right\" /* Right */ || value === \"center\" /* Center */) {\n return value;\n }\n return null;\n}\nfunction parseAlign(element) {\n const styleAlign = (element.style.textAlign || \"\").trim().toLowerCase();\n const attrAlign = (element.getAttribute(\"align\") || \"\").trim().toLowerCase();\n const align = styleAlign || attrAlign;\n return normalizeTableCellAlign(align);\n}\nfunction normalizeTableCellAlignFromAttributes(attributes) {\n return normalizeTableCellAlign(attributes == null ? void 0 : attributes.align);\n}\nfunction createAlignAttribute() {\n return {\n default: null,\n parseHTML: (element) => parseAlign(element),\n renderHTML: (attributes) => {\n if (!attributes.align) {\n return {};\n }\n return {\n style: `text-align: ${attributes.align}`\n };\n }\n };\n}\n\n// src/cell/table-cell.ts\nvar TableCell = Node.create({\n name: \"tableCell\",\n addOptions() {\n return {\n HTMLAttributes: {}\n };\n },\n content: \"block+\",\n addAttributes() {\n return {\n colspan: {\n default: 1\n },\n rowspan: {\n default: 1\n },\n colwidth: {\n default: null,\n parseHTML: (element) => {\n var _a, _b;\n const colwidth = element.getAttribute(\"colwidth\");\n const value = colwidth ? colwidth.split(\",\").map((width) => parseInt(width, 10)) : null;\n if (!value) {\n const cols = (_a = element.closest(\"table\")) == null ? void 0 : _a.querySelectorAll(\"colgroup > col\");\n const cellIndex = Array.from(((_b = element.parentElement) == null ? void 0 : _b.children) || []).indexOf(element);\n if (cellIndex && cellIndex > -1 && cols && cols[cellIndex]) {\n const colWidth = cols[cellIndex].getAttribute(\"width\");\n return colWidth ? [parseInt(colWidth, 10)] : null;\n }\n }\n return value;\n }\n },\n align: createAlignAttribute()\n };\n },\n tableRole: \"cell\",\n isolating: true,\n parseHTML() {\n return [{ tag: \"td\" }];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"td\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n }\n});\n\n// src/header/table-header.ts\nimport { mergeAttributes as mergeAttributes2, Node as Node2 } from \"@tiptap/core\";\nvar TableHeader = Node2.create({\n name: \"tableHeader\",\n addOptions() {\n return {\n HTMLAttributes: {}\n };\n },\n content: \"block+\",\n addAttributes() {\n return {\n colspan: {\n default: 1\n },\n rowspan: {\n default: 1\n },\n colwidth: {\n default: null,\n parseHTML: (element) => {\n const colwidth = element.getAttribute(\"colwidth\");\n const value = colwidth ? colwidth.split(\",\").map((width) => parseInt(width, 10)) : null;\n return value;\n }\n },\n align: createAlignAttribute()\n };\n },\n tableRole: \"header_cell\",\n isolating: true,\n parseHTML() {\n return [{ tag: \"th\" }];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"th\", mergeAttributes2(this.options.HTMLAttributes, HTMLAttributes), 0];\n }\n});\n\n// src/kit/index.ts\nimport { Extension } from \"@tiptap/core\";\n\n// src/row/table-row.ts\nimport { mergeAttributes as mergeAttributes3, Node as Node3 } from \"@tiptap/core\";\nvar TableRow = Node3.create({\n name: \"tableRow\",\n addOptions() {\n return {\n HTMLAttributes: {}\n };\n },\n content: \"(tableCell | tableHeader)*\",\n tableRole: \"row\",\n parseHTML() {\n return [{ tag: \"tr\" }];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"tr\", mergeAttributes3(this.options.HTMLAttributes, HTMLAttributes), 0];\n }\n});\n\n// src/table/table.ts\nimport {\n callOrReturn,\n getExtensionField,\n mergeAttributes as mergeAttributes4,\n Node as Node4\n} from \"@tiptap/core\";\nimport { TextSelection } from \"@tiptap/pm/state\";\nimport {\n addColumnAfter,\n addColumnBefore,\n addRowAfter,\n addRowBefore,\n CellSelection as CellSelection2,\n columnResizing,\n deleteColumn,\n deleteRow,\n deleteTable,\n fixTables,\n goToNextCell,\n mergeCells,\n setCellAttr,\n splitCell,\n tableEditing,\n toggleHeader,\n toggleHeaderCell\n} from \"@tiptap/pm/tables\";\n\n// src/table/utilities/colStyle.ts\nfunction getColStyleDeclaration(minWidth, width) {\n if (width) {\n return [\"width\", `${Math.max(width, minWidth)}px`];\n }\n return [\"min-width\", `${minWidth}px`];\n}\n\n// src/table/TableView.ts\nfunction updateColumns(node, colgroup, table, cellMinWidth, overrideCol, overrideValue) {\n var _a;\n let totalWidth = 0;\n let fixedWidth = true;\n let nextDOM = colgroup.firstChild;\n const row = node.firstChild;\n if (row !== null) {\n for (let i = 0, col = 0; i < row.childCount; i += 1) {\n const { colspan, colwidth } = row.child(i).attrs;\n for (let j = 0; j < colspan; j += 1, col += 1) {\n const hasWidth = overrideCol === col ? overrideValue : colwidth && colwidth[j];\n const cssWidth = hasWidth ? `${hasWidth}px` : \"\";\n totalWidth += hasWidth || cellMinWidth;\n if (!hasWidth) {\n fixedWidth = false;\n }\n if (!nextDOM) {\n const colElement = document.createElement(\"col\");\n const [propertyKey, propertyValue] = getColStyleDeclaration(cellMinWidth, hasWidth);\n colElement.style.setProperty(propertyKey, propertyValue);\n colgroup.appendChild(colElement);\n } else {\n if (nextDOM.style.width !== cssWidth) {\n const [propertyKey, propertyValue] = getColStyleDeclaration(cellMinWidth, hasWidth);\n nextDOM.style.setProperty(propertyKey, propertyValue);\n }\n nextDOM = nextDOM.nextSibling;\n }\n }\n }\n }\n while (nextDOM) {\n const after = nextDOM.nextSibling;\n (_a = nextDOM.parentNode) == null ? void 0 : _a.removeChild(nextDOM);\n nextDOM = after;\n }\n const hasUserWidth = node.attrs.style && typeof node.attrs.style === \"string\" && /\\bwidth\\s*:/i.test(node.attrs.style);\n if (fixedWidth && !hasUserWidth) {\n table.style.width = `${totalWidth}px`;\n table.style.minWidth = \"\";\n } else {\n table.style.width = \"\";\n table.style.minWidth = `${totalWidth}px`;\n }\n}\nvar TableView = class {\n constructor(node, cellMinWidth, _view, HTMLAttributes = {}) {\n this.node = node;\n this.cellMinWidth = cellMinWidth;\n this.dom = document.createElement(\"div\");\n this.dom.className = \"tableWrapper\";\n this.table = this.dom.appendChild(document.createElement(\"table\"));\n for (const [key, value] of Object.entries(HTMLAttributes)) {\n if (value !== void 0 && value !== null) {\n if (key === \"style\") {\n this.table.style.cssText = String(value);\n } else {\n this.table.setAttribute(key, String(value));\n }\n }\n }\n if (node.attrs.style) {\n this.table.style.cssText = node.attrs.style;\n }\n this.colgroup = this.table.appendChild(document.createElement(\"colgroup\"));\n updateColumns(node, this.colgroup, this.table, cellMinWidth);\n this.contentDOM = this.table.appendChild(document.createElement(\"tbody\"));\n }\n update(node) {\n if (node.type !== this.node.type) {\n return false;\n }\n this.node = node;\n updateColumns(node, this.colgroup, this.table, this.cellMinWidth);\n return true;\n }\n ignoreMutation(mutation) {\n const target = mutation.target;\n const isInsideWrapper = this.dom.contains(target);\n const isInsideContent = this.contentDOM.contains(target);\n if (isInsideWrapper && !isInsideContent) {\n if (mutation.type === \"attributes\" || mutation.type === \"childList\" || mutation.type === \"characterData\") {\n return true;\n }\n }\n return false;\n }\n};\n\n// src/table/utilities/createColGroup.ts\nfunction createColGroup(node, cellMinWidth, overrideCol, overrideValue) {\n let totalWidth = 0;\n let fixedWidth = true;\n const cols = [];\n const row = node.firstChild;\n if (!row) {\n return {};\n }\n for (let i = 0, col = 0; i < row.childCount; i += 1) {\n const { colspan, colwidth } = row.child(i).attrs;\n for (let j = 0; j < colspan; j += 1, col += 1) {\n const hasWidth = overrideCol === col ? overrideValue : colwidth && colwidth[j];\n totalWidth += hasWidth || cellMinWidth;\n if (!hasWidth) {\n fixedWidth = false;\n }\n const [property, value] = getColStyleDeclaration(cellMinWidth, hasWidth);\n cols.push([\"col\", { style: `${property}: ${value}` }]);\n }\n }\n const tableWidth = fixedWidth ? `${totalWidth}px` : \"\";\n const tableMinWidth = fixedWidth ? \"\" : `${totalWidth}px`;\n const colgroup = [\"colgroup\", {}, ...cols];\n return { colgroup, tableWidth, tableMinWidth };\n}\n\n// src/table/utilities/createCell.ts\nfunction createCell(cellType, cellContent) {\n if (cellContent) {\n return cellType.createChecked(null, cellContent);\n }\n return cellType.createAndFill();\n}\n\n// src/table/utilities/getTableNodeTypes.ts\nfunction getTableNodeTypes(schema) {\n if (schema.cached.tableNodeTypes) {\n return schema.cached.tableNodeTypes;\n }\n const roles = {};\n Object.keys(schema.nodes).forEach((type) => {\n const nodeType = schema.nodes[type];\n if (nodeType.spec.tableRole) {\n roles[nodeType.spec.tableRole] = nodeType;\n }\n });\n schema.cached.tableNodeTypes = roles;\n return roles;\n}\n\n// src/table/utilities/createTable.ts\nfunction createTable(schema, rowsCount, colsCount, withHeaderRow, cellContent) {\n const types = getTableNodeTypes(schema);\n const headerCells = [];\n const cells = [];\n for (let index = 0; index < colsCount; index += 1) {\n const cell = createCell(types.cell, cellContent);\n if (cell) {\n cells.push(cell);\n }\n if (withHeaderRow) {\n const headerCell = createCell(types.header_cell, cellContent);\n if (headerCell) {\n headerCells.push(headerCell);\n }\n }\n }\n const rows = [];\n for (let index = 0; index < rowsCount; index += 1) {\n rows.push(types.row.createChecked(null, withHeaderRow && index === 0 ? headerCells : cells));\n }\n return types.table.createChecked(null, rows);\n}\n\n// src/table/utilities/deleteTableWhenAllCellsSelected.ts\nimport { findParentNodeClosestToPos } from \"@tiptap/core\";\n\n// src/table/utilities/isCellSelection.ts\nimport { CellSelection } from \"@tiptap/pm/tables\";\nfunction isCellSelection(value) {\n return value instanceof CellSelection;\n}\n\n// src/table/utilities/deleteTableWhenAllCellsSelected.ts\nvar deleteTableWhenAllCellsSelected = ({ editor }) => {\n const { selection } = editor.state;\n if (!isCellSelection(selection)) {\n return false;\n }\n let cellCount = 0;\n const table = findParentNodeClosestToPos(selection.ranges[0].$from, (node) => {\n return node.type.name === \"table\";\n });\n table == null ? void 0 : table.node.descendants((node) => {\n if (node.type.name === \"table\") {\n return false;\n }\n if ([\"tableCell\", \"tableHeader\"].includes(node.type.name)) {\n cellCount += 1;\n }\n });\n const allCellsSelected = cellCount === selection.ranges.length;\n if (!allCellsSelected) {\n return false;\n }\n editor.commands.deleteTable();\n return true;\n};\n\n// src/table/utilities/markdown.ts\nvar DEFAULT_CELL_LINE_SEPARATOR = \"\u001f\";\nfunction collapseWhitespace(s) {\n return (s || \"\").replace(/\\s+/g, \" \").trim();\n}\nfunction renderTableToMarkdown(node, h, options = {}) {\n var _a;\n const cellSep = (_a = options.cellLineSeparator) != null ? _a : DEFAULT_CELL_LINE_SEPARATOR;\n if (!node || !node.content || node.content.length === 0) {\n return \"\";\n }\n const rows = [];\n node.content.forEach((rowNode) => {\n const cells = [];\n if (rowNode.content) {\n rowNode.content.forEach((cellNode) => {\n let raw = \"\";\n if (cellNode.content && Array.isArray(cellNode.content) && cellNode.content.length > 1) {\n const parts = cellNode.content.map(\n (child) => h.renderChildren(child)\n );\n raw = parts.join(cellSep);\n } else {\n raw = cellNode.content ? h.renderChildren(cellNode.content) : \"\";\n }\n const text = collapseWhitespace(raw);\n const isHeader = cellNode.type === \"tableHeader\";\n const align = normalizeTableCellAlignFromAttributes(cellNode.attrs);\n cells.push({ text, isHeader, align });\n });\n }\n rows.push(cells);\n });\n const columnCount = rows.reduce((max, r) => Math.max(max, r.length), 0);\n if (columnCount === 0) {\n return \"\";\n }\n const colWidths = Array.from({ length: columnCount }).fill(0);\n rows.forEach((r) => {\n var _a2;\n for (let i = 0; i < columnCount; i += 1) {\n const cell = ((_a2 = r[i]) == null ? void 0 : _a2.text) || \"\";\n const len = cell.length;\n if (len > colWidths[i]) {\n colWidths[i] = len;\n }\n if (colWidths[i] < 3) {\n colWidths[i] = 3;\n }\n }\n });\n const pad = (s, width) => s + \" \".repeat(Math.max(0, width - s.length));\n const headerRow = rows[0];\n const hasHeader = headerRow.some((c) => c.isHeader);\n const colAlignments = Array.from({\n length: columnCount\n }).fill(null);\n rows.forEach((r) => {\n var _a2;\n for (let i = 0; i < columnCount; i += 1) {\n if (!colAlignments[i] && ((_a2 = r[i]) == null ? void 0 : _a2.align)) {\n colAlignments[i] = r[i].align;\n }\n }\n });\n let out = \"\\n\";\n const headerTexts = Array.from({ length: columnCount }).map(\n (_, i) => hasHeader ? headerRow[i] && headerRow[i].text || \"\" : \"\"\n );\n out += `| ${headerTexts.map((t, i) => pad(t, colWidths[i])).join(\" | \")} |\n`;\n out += `| ${colWidths.map((w, index) => {\n const dashCount = Math.max(3, w);\n const alignment = colAlignments[index];\n if (alignment === \"left\" /* Left */) {\n return `:${\"-\".repeat(dashCount)}`;\n }\n if (alignment === \"right\" /* Right */) {\n return `${\"-\".repeat(dashCount)}:`;\n }\n if (alignment === \"center\" /* Center */) {\n return `:${\"-\".repeat(dashCount)}:`;\n }\n return \"-\".repeat(dashCount);\n }).join(\" | \")} |\n`;\n const body = hasHeader ? rows.slice(1) : rows;\n body.forEach((r) => {\n out += `| ${Array.from({ length: columnCount }).fill(0).map((_, i) => pad(r[i] && r[i].text || \"\", colWidths[i])).join(\" | \")} |\n`;\n });\n return out;\n}\nvar markdown_default = renderTableToMarkdown;\n\n// src/table/table.ts\nvar Table = Node4.create({\n name: \"table\",\n // @ts-ignore\n addOptions() {\n return {\n HTMLAttributes: {},\n resizable: false,\n renderWrapper: false,\n handleWidth: 5,\n cellMinWidth: 25,\n // TODO: fix\n View: TableView,\n lastColumnResizable: true,\n allowTableNodeSelection: false\n };\n },\n content: \"tableRow+\",\n tableRole: \"table\",\n isolating: true,\n group: \"block\",\n parseHTML() {\n return [{ tag: \"table\" }];\n },\n renderHTML({ node, HTMLAttributes }) {\n const { colgroup, tableWidth, tableMinWidth } = createColGroup(node, this.options.cellMinWidth);\n const userStyles = HTMLAttributes.style;\n function getTableStyle() {\n if (userStyles) {\n return userStyles;\n }\n return tableWidth ? `width: ${tableWidth}` : `min-width: ${tableMinWidth}`;\n }\n const table = [\n \"table\",\n mergeAttributes4(this.options.HTMLAttributes, HTMLAttributes, {\n style: getTableStyle()\n }),\n colgroup,\n [\"tbody\", 0]\n ];\n return this.options.renderWrapper ? [\"div\", { class: \"tableWrapper\" }, table] : table;\n },\n parseMarkdown: (token, h) => {\n const rows = [];\n const alignments = Array.isArray(token.align) ? token.align : [];\n if (token.header) {\n const headerCells = [];\n token.header.forEach((cell, index) => {\n var _a;\n const align = normalizeTableCellAlign((_a = alignments[index]) != null ? _a : cell.align);\n const attrs = align ? { align } : {};\n headerCells.push(\n h.createNode(\"tableHeader\", attrs, [\n { type: \"paragraph\", content: h.parseInline(cell.tokens) }\n ])\n );\n });\n rows.push(h.createNode(\"tableRow\", {}, headerCells));\n }\n if (token.rows) {\n token.rows.forEach((row) => {\n const bodyCells = [];\n row.forEach((cell, index) => {\n var _a;\n const align = normalizeTableCellAlign((_a = alignments[index]) != null ? _a : cell.align);\n const attrs = align ? { align } : {};\n bodyCells.push(\n h.createNode(\"tableCell\", attrs, [\n { type: \"paragraph\", content: h.parseInline(cell.tokens) }\n ])\n );\n });\n rows.push(h.createNode(\"tableRow\", {}, bodyCells));\n });\n }\n return h.createNode(\"table\", void 0, rows);\n },\n renderMarkdown: (node, h) => {\n return markdown_default(node, h);\n },\n addCommands() {\n return {\n insertTable: ({ rows = 3, cols = 3, withHeaderRow = true } = {}) => ({ tr, dispatch, editor }) => {\n const node = createTable(editor.schema, rows, cols, withHeaderRow);\n if (dispatch) {\n const offset = tr.selection.from + 1;\n tr.replaceSelectionWith(node).scrollIntoView().setSelection(TextSelection.near(tr.doc.resolve(offset)));\n }\n return true;\n },\n addColumnBefore: () => ({ state, dispatch }) => {\n return addColumnBefore(state, dispatch);\n },\n addColumnAfter: () => ({ state, dispatch }) => {\n return addColumnAfter(state, dispatch);\n },\n deleteColumn: () => ({ state, dispatch }) => {\n return deleteColumn(state, dispatch);\n },\n addRowBefore: () => ({ state, dispatch }) => {\n return addRowBefore(state, dispatch);\n },\n addRowAfter: () => ({ state, dispatch }) => {\n return addRowAfter(state, dispatch);\n },\n deleteRow: () => ({ state, dispatch }) => {\n return deleteRow(state, dispatch);\n },\n deleteTable: () => ({ state, dispatch }) => {\n return deleteTable(state, dispatch);\n },\n mergeCells: () => ({ state, dispatch }) => {\n return mergeCells(state, dispatch);\n },\n splitCell: () => ({ state, dispatch }) => {\n return splitCell(state, dispatch);\n },\n toggleHeaderColumn: () => ({ state, dispatch }) => {\n return toggleHeader(\"column\")(state, dispatch);\n },\n toggleHeaderRow: () => ({ state, dispatch }) => {\n return toggleHeader(\"row\")(state, dispatch);\n },\n toggleHeaderCell: () => ({ state, dispatch }) => {\n return toggleHeaderCell(state, dispatch);\n },\n mergeOrSplit: () => ({ state, dispatch }) => {\n if (mergeCells(state, dispatch)) {\n return true;\n }\n return splitCell(state, dispatch);\n },\n setCellAttribute: (name, value) => ({ state, dispatch }) => {\n return setCellAttr(name, value)(state, dispatch);\n },\n goToNextCell: () => ({ state, dispatch }) => {\n return goToNextCell(1)(state, dispatch);\n },\n goToPreviousCell: () => ({ state, dispatch }) => {\n return goToNextCell(-1)(state, dispatch);\n },\n fixTables: () => ({ state, dispatch }) => {\n if (dispatch) {\n fixTables(state);\n }\n return true;\n },\n setCellSelection: (position) => ({ tr, dispatch }) => {\n if (dispatch) {\n const selection = CellSelection2.create(tr.doc, position.anchorCell, position.headCell);\n tr.setSelection(selection);\n }\n return true;\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n Tab: () => {\n if (this.editor.commands.goToNextCell()) {\n return true;\n }\n if (!this.editor.can().addRowAfter()) {\n return false;\n }\n return this.editor.chain().addRowAfter().goToNextCell().run();\n },\n \"Shift-Tab\": () => this.editor.commands.goToPreviousCell(),\n Backspace: deleteTableWhenAllCellsSelected,\n \"Mod-Backspace\": deleteTableWhenAllCellsSelected,\n Delete: deleteTableWhenAllCellsSelected,\n \"Mod-Delete\": deleteTableWhenAllCellsSelected\n };\n },\n addProseMirrorPlugins() {\n const isResizable = this.options.resizable && this.editor.isEditable;\n return [\n ...isResizable ? [\n columnResizing({\n handleWidth: this.options.handleWidth,\n cellMinWidth: this.options.cellMinWidth,\n defaultCellMinWidth: this.options.cellMinWidth,\n View: this.options.View,\n lastColumnResizable: this.options.lastColumnResizable\n })\n ] : [],\n tableEditing({\n allowTableNodeSelection: this.options.allowTableNodeSelection\n })\n ];\n },\n addNodeView() {\n const isResizable = this.options.resizable && this.editor.isEditable;\n const View = this.options.View;\n if (isResizable || !View) {\n return null;\n }\n return ({ node, view, HTMLAttributes }) => {\n const mergedAttributes = mergeAttributes4(this.options.HTMLAttributes, HTMLAttributes);\n return new View(node, this.options.cellMinWidth, view, mergedAttributes);\n };\n },\n extendNodeSchema(extension) {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage\n };\n return {\n tableRole: callOrReturn(getExtensionField(extension, \"tableRole\", context))\n };\n }\n});\n\n// src/kit/index.ts\nvar TableKit = Extension.create({\n name: \"tableKit\",\n addExtensions() {\n const extensions = [];\n if (this.options.table !== false) {\n extensions.push(Table.configure(this.options.table));\n }\n if (this.options.tableCell !== false) {\n extensions.push(TableCell.configure(this.options.tableCell));\n }\n if (this.options.tableHeader !== false) {\n extensions.push(TableHeader.configure(this.options.tableHeader));\n }\n if (this.options.tableRow !== false) {\n extensions.push(TableRow.configure(this.options.tableRow));\n }\n return extensions;\n }\n});\nexport {\n DEFAULT_CELL_LINE_SEPARATOR,\n Table,\n TableCell,\n TableHeader,\n TableKit,\n TableRow,\n TableView,\n createColGroup,\n createTable,\n renderTableToMarkdown,\n updateColumns\n};\n//# sourceMappingURL=index.js.map","// src/text-style/index.ts\nimport { Mark, mergeAttributes } from \"@tiptap/core\";\nvar MAX_FIND_CHILD_SPAN_DEPTH = 20;\nvar findChildSpans = (element, depth = 0) => {\n const childSpans = [];\n if (!element.children.length || depth > MAX_FIND_CHILD_SPAN_DEPTH) {\n return childSpans;\n }\n Array.from(element.children).forEach((child) => {\n if (child.tagName === \"SPAN\") {\n childSpans.push(child);\n } else if (child.children.length) {\n childSpans.push(...findChildSpans(child, depth + 1));\n }\n });\n return childSpans;\n};\nvar mergeNestedSpanStyles = (element) => {\n if (!element.children.length) {\n return;\n }\n const childSpans = findChildSpans(element);\n if (!childSpans) {\n return;\n }\n childSpans.forEach((childSpan) => {\n var _a, _b;\n const childStyle = childSpan.getAttribute(\"style\");\n const closestParentSpanStyleOfChild = (_b = (_a = childSpan.parentElement) == null ? void 0 : _a.closest(\"span\")) == null ? void 0 : _b.getAttribute(\"style\");\n childSpan.setAttribute(\"style\", `${closestParentSpanStyleOfChild};${childStyle}`);\n });\n};\nvar TextStyle = Mark.create({\n name: \"textStyle\",\n priority: 101,\n addOptions() {\n return {\n HTMLAttributes: {},\n mergeNestedSpanStyles: true\n };\n },\n parseHTML() {\n return [\n {\n tag: \"span\",\n consuming: false,\n getAttrs: (element) => {\n const hasStyles = element.hasAttribute(\"style\");\n if (!hasStyles) {\n return false;\n }\n if (this.options.mergeNestedSpanStyles) {\n mergeNestedSpanStyles(element);\n }\n return {};\n }\n }\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"span\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addCommands() {\n return {\n toggleTextStyle: (attributes) => ({ commands }) => {\n return commands.toggleMark(this.name, attributes);\n },\n removeEmptyTextStyle: () => ({ tr }) => {\n const { selection } = tr;\n tr.doc.nodesBetween(selection.from, selection.to, (node, pos) => {\n if (node.isTextblock) {\n return true;\n }\n if (!node.marks.filter((mark) => mark.type === this.type).some((mark) => Object.values(mark.attrs).some((value) => !!value))) {\n tr.removeMark(pos, pos + node.nodeSize, this.type);\n }\n });\n return true;\n }\n };\n }\n});\n\n// src/background-color/background-color.ts\nimport { Extension, getStyleProperty } from \"@tiptap/core\";\nvar BackgroundColor = Extension.create({\n name: \"backgroundColor\",\n addOptions() {\n return {\n types: [\"textStyle\"]\n };\n },\n addGlobalAttributes() {\n return [\n {\n types: this.options.types,\n attributes: {\n backgroundColor: {\n default: null,\n parseHTML: (element) => {\n var _a;\n const value = (_a = getStyleProperty(element, \"background-color\")) != null ? _a : element.style.backgroundColor;\n return value == null ? void 0 : value.replace(/['\"]+/g, \"\");\n },\n renderHTML: (attributes) => {\n if (!attributes.backgroundColor) {\n return {};\n }\n return {\n style: `background-color: ${attributes.backgroundColor}`\n };\n }\n }\n }\n }\n ];\n },\n addCommands() {\n return {\n setBackgroundColor: (backgroundColor) => ({ chain }) => {\n return chain().setMark(\"textStyle\", { backgroundColor }).run();\n },\n unsetBackgroundColor: () => ({ chain }) => {\n return chain().setMark(\"textStyle\", { backgroundColor: null }).removeEmptyTextStyle().run();\n }\n };\n }\n});\n\n// src/color/color.ts\nimport { Extension as Extension2, getStyleProperty as getStyleProperty2 } from \"@tiptap/core\";\nvar Color = Extension2.create({\n name: \"color\",\n addOptions() {\n return {\n types: [\"textStyle\"]\n };\n },\n addGlobalAttributes() {\n return [\n {\n types: this.options.types,\n attributes: {\n color: {\n default: null,\n parseHTML: (element) => {\n var _a;\n const value = (_a = getStyleProperty2(element, \"color\")) != null ? _a : element.style.color;\n return value == null ? void 0 : value.replace(/['\"]+/g, \"\");\n },\n renderHTML: (attributes) => {\n if (!attributes.color) {\n return {};\n }\n return {\n style: `color: ${attributes.color}`\n };\n }\n }\n }\n }\n ];\n },\n addCommands() {\n return {\n setColor: (color) => ({ chain }) => {\n return chain().setMark(\"textStyle\", { color }).run();\n },\n unsetColor: () => ({ chain }) => {\n return chain().setMark(\"textStyle\", { color: null }).removeEmptyTextStyle().run();\n }\n };\n }\n});\n\n// src/font-family/font-family.ts\nimport { Extension as Extension3, getStyleProperty as getStyleProperty3 } from \"@tiptap/core\";\nvar FontFamily = Extension3.create({\n name: \"fontFamily\",\n addOptions() {\n return {\n types: [\"textStyle\"]\n };\n },\n addGlobalAttributes() {\n return [\n {\n types: this.options.types,\n attributes: {\n fontFamily: {\n default: null,\n // Prefer the raw inline `style` attribute so unquoted or\n // single-quoted multi-word names are preserved instead of being\n // canonicalized by `element.style.fontFamily`, which forces double\n // quotes that then get HTML-encoded to `"` on serialization.\n parseHTML: (element) => {\n var _a;\n return (_a = getStyleProperty3(element, \"font-family\")) != null ? _a : element.style.fontFamily;\n },\n renderHTML: (attributes) => {\n if (!attributes.fontFamily) {\n return {};\n }\n return {\n style: `font-family: ${attributes.fontFamily}`\n };\n }\n }\n }\n }\n ];\n },\n addCommands() {\n return {\n setFontFamily: (fontFamily) => ({ chain }) => {\n return chain().setMark(\"textStyle\", { fontFamily }).run();\n },\n unsetFontFamily: () => ({ chain }) => {\n return chain().setMark(\"textStyle\", { fontFamily: null }).removeEmptyTextStyle().run();\n }\n };\n }\n});\n\n// src/font-size/font-size.ts\nimport { Extension as Extension4, getStyleProperty as getStyleProperty4 } from \"@tiptap/core\";\nvar FontSize = Extension4.create({\n name: \"fontSize\",\n addOptions() {\n return {\n types: [\"textStyle\"]\n };\n },\n addGlobalAttributes() {\n return [\n {\n types: this.options.types,\n attributes: {\n fontSize: {\n default: null,\n // Prefer the raw inline `style` attribute so the original format\n // is preserved instead of the canonicalized value returned by\n // `element.style.fontSize`.\n parseHTML: (element) => {\n var _a;\n return (_a = getStyleProperty4(element, \"font-size\")) != null ? _a : element.style.fontSize;\n },\n renderHTML: (attributes) => {\n if (!attributes.fontSize) {\n return {};\n }\n return {\n style: `font-size: ${attributes.fontSize}`\n };\n }\n }\n }\n }\n ];\n },\n addCommands() {\n return {\n setFontSize: (fontSize) => ({ chain }) => {\n return chain().setMark(\"textStyle\", { fontSize }).run();\n },\n unsetFontSize: () => ({ chain }) => {\n return chain().setMark(\"textStyle\", { fontSize: null }).removeEmptyTextStyle().run();\n }\n };\n }\n});\n\n// src/line-height/line-height.ts\nimport { Extension as Extension5, getStyleProperty as getStyleProperty5 } from \"@tiptap/core\";\nvar LineHeight = Extension5.create({\n name: \"lineHeight\",\n addOptions() {\n return {\n types: [\"textStyle\"]\n };\n },\n addGlobalAttributes() {\n return [\n {\n types: this.options.types,\n attributes: {\n lineHeight: {\n default: null,\n // Prefer the raw inline `style` attribute so the original format\n // is preserved instead of the canonicalized value returned by\n // `element.style.lineHeight`.\n parseHTML: (element) => {\n var _a;\n return (_a = getStyleProperty5(element, \"line-height\")) != null ? _a : element.style.lineHeight;\n },\n renderHTML: (attributes) => {\n if (!attributes.lineHeight) {\n return {};\n }\n return {\n style: `line-height: ${attributes.lineHeight}`\n };\n }\n }\n }\n }\n ];\n },\n addCommands() {\n return {\n setLineHeight: (lineHeight) => ({ chain }) => {\n return chain().setMark(\"textStyle\", { lineHeight }).run();\n },\n unsetLineHeight: () => ({ chain }) => {\n return chain().setMark(\"textStyle\", { lineHeight: null }).removeEmptyTextStyle().run();\n }\n };\n }\n});\n\n// src/text-style-kit/index.ts\nimport { Extension as Extension6 } from \"@tiptap/core\";\nvar TextStyleKit = Extension6.create({\n name: \"textStyleKit\",\n addExtensions() {\n const extensions = [];\n if (this.options.backgroundColor !== false) {\n extensions.push(BackgroundColor.configure(this.options.backgroundColor));\n }\n if (this.options.color !== false) {\n extensions.push(Color.configure(this.options.color));\n }\n if (this.options.fontFamily !== false) {\n extensions.push(FontFamily.configure(this.options.fontFamily));\n }\n if (this.options.fontSize !== false) {\n extensions.push(FontSize.configure(this.options.fontSize));\n }\n if (this.options.lineHeight !== false) {\n extensions.push(LineHeight.configure(this.options.lineHeight));\n }\n if (this.options.textStyle !== false) {\n extensions.push(TextStyle.configure(this.options.textStyle));\n }\n return extensions;\n }\n});\nexport {\n BackgroundColor,\n Color,\n FontFamily,\n FontSize,\n LineHeight,\n TextStyle,\n TextStyleKit\n};\n//# sourceMappingURL=index.js.map","// src/underline.ts\nimport { Mark, mergeAttributes } from \"@tiptap/core\";\nvar Underline = Mark.create({\n name: \"underline\",\n addOptions() {\n return {\n HTMLAttributes: {}\n };\n },\n parseHTML() {\n return [\n {\n tag: \"u\"\n },\n {\n style: \"text-decoration\",\n consuming: false,\n getAttrs: (style) => style.includes(\"underline\") ? {} : false\n }\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"u\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n parseMarkdown(token, helpers) {\n return helpers.applyMark(this.name || \"underline\", helpers.parseInline(token.tokens || []));\n },\n renderMarkdown(node, helpers) {\n return `++${helpers.renderChildren(node)}++`;\n },\n markdownTokenizer: {\n name: \"underline\",\n level: \"inline\",\n start(src) {\n return src.indexOf(\"++\");\n },\n tokenize(src, _tokens, lexer) {\n const rule = /^(\\+\\+)([\\s\\S]+?)(\\+\\+)/;\n const match = rule.exec(src);\n if (!match) {\n return void 0;\n }\n const innerContent = match[2].trim();\n return {\n type: \"underline\",\n raw: match[0],\n text: innerContent,\n tokens: lexer.inlineTokens(innerContent)\n };\n }\n },\n addCommands() {\n return {\n setUnderline: () => ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleUnderline: () => ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n unsetUnderline: () => ({ commands }) => {\n return commands.unsetMark(this.name);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-u\": () => this.editor.commands.toggleUnderline(),\n \"Mod-U\": () => this.editor.commands.toggleUnderline()\n };\n }\n});\n\n// src/index.ts\nvar index_default = Underline;\nexport {\n Underline,\n index_default as default\n};\n//# sourceMappingURL=index.js.map","import { Plugin } from 'prosemirror-state';\nimport { dropPoint } from 'prosemirror-transform';\n\n/**\nCreate a plugin that, when added to a ProseMirror instance,\ncauses a decoration to show up at the drop position when something\nis dragged over the editor.\n\nNodes may add a `disableDropCursor` property to their spec to\ncontrol the showing of a drop cursor inside them. This may be a\nboolean or a function, which will be called with a view and a\nposition, and should return a boolean.\n*/\nfunction dropCursor(options = {}) {\n return new Plugin({\n view(editorView) { return new DropCursorView(editorView, options); }\n });\n}\nclass DropCursorView {\n constructor(editorView, options) {\n var _a;\n this.editorView = editorView;\n this.cursorPos = null;\n this.element = null;\n this.timeout = -1;\n this.width = (_a = options.width) !== null && _a !== void 0 ? _a : 1;\n this.color = options.color === false ? undefined : (options.color || \"black\");\n this.class = options.class;\n this.handlers = [\"dragover\", \"dragend\", \"drop\", \"dragleave\"].map(name => {\n let handler = (e) => { this[name](e); };\n editorView.dom.addEventListener(name, handler);\n return { name, handler };\n });\n }\n destroy() {\n this.handlers.forEach(({ name, handler }) => this.editorView.dom.removeEventListener(name, handler));\n }\n update(editorView, prevState) {\n if (this.cursorPos != null && prevState.doc != editorView.state.doc) {\n if (this.cursorPos > editorView.state.doc.content.size)\n this.setCursor(null);\n else\n this.updateOverlay();\n }\n }\n setCursor(pos) {\n if (pos == this.cursorPos)\n return;\n this.cursorPos = pos;\n if (pos == null) {\n this.element.parentNode.removeChild(this.element);\n this.element = null;\n }\n else {\n this.updateOverlay();\n }\n }\n updateOverlay() {\n let $pos = this.editorView.state.doc.resolve(this.cursorPos);\n let isBlock = !$pos.parent.inlineContent, rect;\n let editorDOM = this.editorView.dom, editorRect = editorDOM.getBoundingClientRect();\n let scaleX = editorRect.width / editorDOM.offsetWidth, scaleY = editorRect.height / editorDOM.offsetHeight;\n if (isBlock) {\n let before = $pos.nodeBefore, after = $pos.nodeAfter;\n if (before || after) {\n let node = this.editorView.nodeDOM(this.cursorPos - (before ? before.nodeSize : 0));\n if (node) {\n let nodeRect = node.getBoundingClientRect();\n let top = before ? nodeRect.bottom : nodeRect.top;\n if (before && after)\n top = (top + this.editorView.nodeDOM(this.cursorPos).getBoundingClientRect().top) / 2;\n let halfWidth = (this.width / 2) * scaleY;\n rect = { left: nodeRect.left, right: nodeRect.right, top: top - halfWidth, bottom: top + halfWidth };\n }\n }\n }\n if (!rect) {\n let coords = this.editorView.coordsAtPos(this.cursorPos);\n let halfWidth = (this.width / 2) * scaleX;\n rect = { left: coords.left - halfWidth, right: coords.left + halfWidth, top: coords.top, bottom: coords.bottom };\n }\n let parent = this.editorView.dom.offsetParent;\n if (!this.element) {\n this.element = parent.appendChild(document.createElement(\"div\"));\n if (this.class)\n this.element.className = this.class;\n this.element.style.cssText = \"position: absolute; z-index: 50; pointer-events: none;\";\n if (this.color) {\n this.element.style.backgroundColor = this.color;\n }\n }\n this.element.classList.toggle(\"prosemirror-dropcursor-block\", isBlock);\n this.element.classList.toggle(\"prosemirror-dropcursor-inline\", !isBlock);\n let parentLeft, parentTop;\n if (!parent || parent == document.body && getComputedStyle(parent).position == \"static\") {\n parentLeft = -pageXOffset;\n parentTop = -pageYOffset;\n }\n else {\n let rect = parent.getBoundingClientRect();\n let parentScaleX = rect.width / parent.offsetWidth, parentScaleY = rect.height / parent.offsetHeight;\n parentLeft = rect.left - parent.scrollLeft * parentScaleX;\n parentTop = rect.top - parent.scrollTop * parentScaleY;\n }\n this.element.style.left = (rect.left - parentLeft) / scaleX + \"px\";\n this.element.style.top = (rect.top - parentTop) / scaleY + \"px\";\n this.element.style.width = (rect.right - rect.left) / scaleX + \"px\";\n this.element.style.height = (rect.bottom - rect.top) / scaleY + \"px\";\n }\n scheduleRemoval(timeout) {\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => this.setCursor(null), timeout);\n }\n dragover(event) {\n if (!this.editorView.editable)\n return;\n let pos = this.editorView.posAtCoords({ left: event.clientX, top: event.clientY });\n let node = pos && pos.inside >= 0 && this.editorView.state.doc.nodeAt(pos.inside);\n let disableDropCursor = node && node.type.spec.disableDropCursor;\n let disabled = typeof disableDropCursor == \"function\"\n ? disableDropCursor(this.editorView, pos, event)\n : disableDropCursor;\n if (pos && !disabled) {\n let target = pos.pos;\n if (this.editorView.dragging && this.editorView.dragging.slice) {\n let point = dropPoint(this.editorView.state.doc, target, this.editorView.dragging.slice);\n if (point != null)\n target = point;\n }\n this.setCursor(target);\n this.scheduleRemoval(5000);\n }\n }\n dragend() {\n this.scheduleRemoval(20);\n }\n drop() {\n this.scheduleRemoval(20);\n }\n dragleave(event) {\n if (!this.editorView.dom.contains(event.relatedTarget))\n this.setCursor(null);\n }\n}\n\nexport { dropCursor };\n","import { keydownHandler } from 'prosemirror-keymap';\nimport { Selection, NodeSelection, TextSelection, Plugin } from 'prosemirror-state';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { DecorationSet, Decoration } from 'prosemirror-view';\n\n/**\nGap cursor selections are represented using this class. Its\n`$anchor` and `$head` properties both point at the cursor position.\n*/\nclass GapCursor extends Selection {\n /**\n Create a gap cursor.\n */\n constructor($pos) {\n super($pos, $pos);\n }\n map(doc, mapping) {\n let $pos = doc.resolve(mapping.map(this.head));\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos);\n }\n content() { return Slice.empty; }\n eq(other) {\n return other instanceof GapCursor && other.head == this.head;\n }\n toJSON() {\n return { type: \"gapcursor\", pos: this.head };\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for GapCursor.fromJSON\");\n return new GapCursor(doc.resolve(json.pos));\n }\n /**\n @internal\n */\n getBookmark() { return new GapBookmark(this.anchor); }\n /**\n @internal\n */\n static valid($pos) {\n let parent = $pos.parent;\n if (parent.isTextblock || !closedBefore($pos) || !closedAfter($pos))\n return false;\n let override = parent.type.spec.allowGapCursor;\n if (override != null)\n return override;\n let deflt = parent.contentMatchAt($pos.index()).defaultType;\n return deflt && deflt.isTextblock;\n }\n /**\n @internal\n */\n static findGapCursorFrom($pos, dir, mustMove = false) {\n search: for (;;) {\n if (!mustMove && GapCursor.valid($pos))\n return $pos;\n let pos = $pos.pos, next = null;\n // Scan up from this position\n for (let d = $pos.depth;; d--) {\n let parent = $pos.node(d);\n if (dir > 0 ? $pos.indexAfter(d) < parent.childCount : $pos.index(d) > 0) {\n next = parent.child(dir > 0 ? $pos.indexAfter(d) : $pos.index(d) - 1);\n break;\n }\n else if (d == 0) {\n return null;\n }\n pos += dir;\n let $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur))\n return $cur;\n }\n // And then down into the next node\n for (;;) {\n let inside = dir > 0 ? next.firstChild : next.lastChild;\n if (!inside) {\n if (next.isAtom && !next.isText && !NodeSelection.isSelectable(next)) {\n $pos = $pos.doc.resolve(pos + next.nodeSize * dir);\n mustMove = false;\n continue search;\n }\n break;\n }\n next = inside;\n pos += dir;\n let $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur))\n return $cur;\n }\n return null;\n }\n }\n}\nGapCursor.prototype.visible = false;\nGapCursor.findFrom = GapCursor.findGapCursorFrom;\nSelection.jsonID(\"gapcursor\", GapCursor);\nclass GapBookmark {\n constructor(pos) {\n this.pos = pos;\n }\n map(mapping) {\n return new GapBookmark(mapping.map(this.pos));\n }\n resolve(doc) {\n let $pos = doc.resolve(this.pos);\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos);\n }\n}\nfunction closedBefore($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.index(d), parent = $pos.node(d);\n // At the start of this parent, look at next one\n if (index == 0) {\n if (parent.type.spec.isolating)\n return true;\n continue;\n }\n // See if the node before (or its first ancestor) is closed\n for (let before = parent.child(index - 1);; before = before.lastChild) {\n if ((before.childCount == 0 && !before.inlineContent) || before.isAtom || before.type.spec.isolating)\n return true;\n if (before.inlineContent)\n return false;\n }\n }\n // Hit start of document\n return true;\n}\nfunction closedAfter($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.indexAfter(d), parent = $pos.node(d);\n if (index == parent.childCount) {\n if (parent.type.spec.isolating)\n return true;\n continue;\n }\n for (let after = parent.child(index);; after = after.firstChild) {\n if ((after.childCount == 0 && !after.inlineContent) || after.isAtom || after.type.spec.isolating)\n return true;\n if (after.inlineContent)\n return false;\n }\n }\n return true;\n}\n\n/**\nCreate a gap cursor plugin. When enabled, this will capture clicks\nnear and arrow-key-motion past places that don't have a normally\nselectable position nearby, and create a gap cursor selection for\nthem. The cursor is drawn as an element with class\n`ProseMirror-gapcursor`. You can either include\n`style/gapcursor.css` from the package's directory or add your own\nstyles to make it visible.\n*/\nfunction gapCursor() {\n return new Plugin({\n props: {\n decorations: drawGapCursor,\n createSelectionBetween(_view, $anchor, $head) {\n return $anchor.pos == $head.pos && GapCursor.valid($head) ? new GapCursor($head) : null;\n },\n handleClick,\n handleKeyDown,\n handleDOMEvents: { beforeinput: beforeinput }\n }\n });\n}\nconst handleKeyDown = keydownHandler({\n \"ArrowLeft\": arrow(\"horiz\", -1),\n \"ArrowRight\": arrow(\"horiz\", 1),\n \"ArrowUp\": arrow(\"vert\", -1),\n \"ArrowDown\": arrow(\"vert\", 1)\n});\nfunction arrow(axis, dir) {\n const dirStr = axis == \"vert\" ? (dir > 0 ? \"down\" : \"up\") : (dir > 0 ? \"right\" : \"left\");\n return function (state, dispatch, view) {\n let sel = state.selection;\n let $start = dir > 0 ? sel.$to : sel.$from, mustMove = sel.empty;\n if (sel instanceof TextSelection) {\n if (!view.endOfTextblock(dirStr) || $start.depth == 0)\n return false;\n mustMove = false;\n $start = state.doc.resolve(dir > 0 ? $start.after() : $start.before());\n }\n let $found = GapCursor.findGapCursorFrom($start, dir, mustMove);\n if (!$found)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(new GapCursor($found)));\n return true;\n };\n}\nfunction handleClick(view, pos, event) {\n if (!view || !view.editable)\n return false;\n let $pos = view.state.doc.resolve(pos);\n if (!GapCursor.valid($pos))\n return false;\n let clickPos = view.posAtCoords({ left: event.clientX, top: event.clientY });\n if (clickPos && clickPos.inside > -1 && NodeSelection.isSelectable(view.state.doc.nodeAt(clickPos.inside)))\n return false;\n view.dispatch(view.state.tr.setSelection(new GapCursor($pos)));\n return true;\n}\n// This is a hack that, when a composition starts while a gap cursor\n// is active, quickly creates an inline context for the composition to\n// happen in, to avoid it being aborted by the DOM selection being\n// moved into a valid position.\nfunction beforeinput(view, event) {\n if (event.inputType != \"insertCompositionText\" || !(view.state.selection instanceof GapCursor))\n return false;\n let { $from } = view.state.selection;\n let insert = $from.parent.contentMatchAt($from.index()).findWrapping(view.state.schema.nodes.text);\n if (!insert)\n return false;\n let frag = Fragment.empty;\n for (let i = insert.length - 1; i >= 0; i--)\n frag = Fragment.from(insert[i].createAndFill(null, frag));\n let tr = view.state.tr.replace($from.pos, $from.pos, new Slice(frag, 0, 0));\n tr.setSelection(TextSelection.near(tr.doc.resolve($from.pos + 1)));\n view.dispatch(tr);\n return false;\n}\nfunction drawGapCursor(state) {\n if (!(state.selection instanceof GapCursor))\n return null;\n let node = document.createElement(\"div\");\n node.className = \"ProseMirror-gapcursor\";\n return DecorationSet.create(state.doc, [Decoration.widget(state.selection.head, node, { key: \"gapcursor\" })]);\n}\n\nexport { GapCursor, gapCursor };\n","var GOOD_LEAF_SIZE = 200;\n\n// :: class<T> A rope sequence is a persistent sequence data structure\n// that supports appending, prepending, and slicing without doing a\n// full copy. It is represented as a mostly-balanced tree.\nvar RopeSequence = function RopeSequence () {};\n\nRopeSequence.prototype.append = function append (other) {\n if (!other.length) { return this }\n other = RopeSequence.from(other);\n\n return (!this.length && other) ||\n (other.length < GOOD_LEAF_SIZE && this.leafAppend(other)) ||\n (this.length < GOOD_LEAF_SIZE && other.leafPrepend(this)) ||\n this.appendInner(other)\n};\n\n// :: (union<[T], RopeSequence<T>>) → RopeSequence<T>\n// Prepend an array or other rope to this one, returning a new rope.\nRopeSequence.prototype.prepend = function prepend (other) {\n if (!other.length) { return this }\n return RopeSequence.from(other).append(this)\n};\n\nRopeSequence.prototype.appendInner = function appendInner (other) {\n return new Append(this, other)\n};\n\n// :: (?number, ?number) → RopeSequence<T>\n// Create a rope repesenting a sub-sequence of this rope.\nRopeSequence.prototype.slice = function slice (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from >= to) { return RopeSequence.empty }\n return this.sliceInner(Math.max(0, from), Math.min(this.length, to))\n};\n\n// :: (number) → T\n// Retrieve the element at the given position from this rope.\nRopeSequence.prototype.get = function get (i) {\n if (i < 0 || i >= this.length) { return undefined }\n return this.getInner(i)\n};\n\n// :: ((element: T, index: number) → ?bool, ?number, ?number)\n// Call the given function for each element between the given\n// indices. This tends to be more efficient than looping over the\n// indices and calling `get`, because it doesn't have to descend the\n// tree for every element.\nRopeSequence.prototype.forEach = function forEach (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from <= to)\n { this.forEachInner(f, from, to, 0); }\n else\n { this.forEachInvertedInner(f, from, to, 0); }\n};\n\n// :: ((element: T, index: number) → U, ?number, ?number) → [U]\n// Map the given functions over the elements of the rope, producing\n// a flat array.\nRopeSequence.prototype.map = function map (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n var result = [];\n this.forEach(function (elt, i) { return result.push(f(elt, i)); }, from, to);\n return result\n};\n\n// :: (?union<[T], RopeSequence<T>>) → RopeSequence<T>\n// Create a rope representing the given array, or return the rope\n// itself if a rope was given.\nRopeSequence.from = function from (values) {\n if (values instanceof RopeSequence) { return values }\n return values && values.length ? new Leaf(values) : RopeSequence.empty\n};\n\nvar Leaf = /*@__PURE__*/(function (RopeSequence) {\n function Leaf(values) {\n RopeSequence.call(this);\n this.values = values;\n }\n\n if ( RopeSequence ) Leaf.__proto__ = RopeSequence;\n Leaf.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Leaf.prototype.constructor = Leaf;\n\n var prototypeAccessors = { length: { configurable: true },depth: { configurable: true } };\n\n Leaf.prototype.flatten = function flatten () {\n return this.values\n };\n\n Leaf.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n return new Leaf(this.values.slice(from, to))\n };\n\n Leaf.prototype.getInner = function getInner (i) {\n return this.values[i]\n };\n\n Leaf.prototype.forEachInner = function forEachInner (f, from, to, start) {\n for (var i = from; i < to; i++)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n for (var i = from - 1; i >= to; i--)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.leafAppend = function leafAppend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(this.values.concat(other.flatten())) }\n };\n\n Leaf.prototype.leafPrepend = function leafPrepend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(other.flatten().concat(this.values)) }\n };\n\n prototypeAccessors.length.get = function () { return this.values.length };\n\n prototypeAccessors.depth.get = function () { return 0 };\n\n Object.defineProperties( Leaf.prototype, prototypeAccessors );\n\n return Leaf;\n}(RopeSequence));\n\n// :: RopeSequence\n// The empty rope sequence.\nRopeSequence.empty = new Leaf([]);\n\nvar Append = /*@__PURE__*/(function (RopeSequence) {\n function Append(left, right) {\n RopeSequence.call(this);\n this.left = left;\n this.right = right;\n this.length = left.length + right.length;\n this.depth = Math.max(left.depth, right.depth) + 1;\n }\n\n if ( RopeSequence ) Append.__proto__ = RopeSequence;\n Append.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Append.prototype.constructor = Append;\n\n Append.prototype.flatten = function flatten () {\n return this.left.flatten().concat(this.right.flatten())\n };\n\n Append.prototype.getInner = function getInner (i) {\n return i < this.left.length ? this.left.get(i) : this.right.get(i - this.left.length)\n };\n\n Append.prototype.forEachInner = function forEachInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from < leftLen &&\n this.left.forEachInner(f, from, Math.min(to, leftLen), start) === false)\n { return false }\n if (to > leftLen &&\n this.right.forEachInner(f, Math.max(from - leftLen, 0), Math.min(this.length, to) - leftLen, start + leftLen) === false)\n { return false }\n };\n\n Append.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from > leftLen &&\n this.right.forEachInvertedInner(f, from - leftLen, Math.max(to, leftLen) - leftLen, start + leftLen) === false)\n { return false }\n if (to < leftLen &&\n this.left.forEachInvertedInner(f, Math.min(from, leftLen), to, start) === false)\n { return false }\n };\n\n Append.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n var leftLen = this.left.length;\n if (to <= leftLen) { return this.left.slice(from, to) }\n if (from >= leftLen) { return this.right.slice(from - leftLen, to - leftLen) }\n return this.left.slice(from, leftLen).append(this.right.slice(0, to - leftLen))\n };\n\n Append.prototype.leafAppend = function leafAppend (other) {\n var inner = this.right.leafAppend(other);\n if (inner) { return new Append(this.left, inner) }\n };\n\n Append.prototype.leafPrepend = function leafPrepend (other) {\n var inner = this.left.leafPrepend(other);\n if (inner) { return new Append(inner, this.right) }\n };\n\n Append.prototype.appendInner = function appendInner (other) {\n if (this.left.depth >= Math.max(this.right.depth, other.depth) + 1)\n { return new Append(this.left, new Append(this.right, other)) }\n return new Append(this, other)\n };\n\n return Append;\n}(RopeSequence));\n\nexport default RopeSequence;\n","import RopeSequence from 'rope-sequence';\nimport { Mapping } from 'prosemirror-transform';\nimport { PluginKey, Plugin } from 'prosemirror-state';\n\n// ProseMirror's history isn't simply a way to roll back to a previous\n// state, because ProseMirror supports applying changes without adding\n// them to the history (for example during collaboration).\n//\n// To this end, each 'Branch' (one for the undo history and one for\n// the redo history) keeps an array of 'Items', which can optionally\n// hold a step (an actual undoable change), and always hold a position\n// map (which is needed to move changes below them to apply to the\n// current document).\n//\n// An item that has both a step and a selection bookmark is the start\n// of an 'event' — a group of changes that will be undone or redone at\n// once. (It stores only the bookmark, since that way we don't have to\n// provide a document until the selection is actually applied, which\n// is useful when compressing.)\n// Used to schedule history compression\nconst max_empty_items = 500;\nclass Branch {\n constructor(items, eventCount) {\n this.items = items;\n this.eventCount = eventCount;\n }\n // Pop the latest event off the branch's history and apply it\n // to a document transform.\n popEvent(state, preserveItems) {\n if (this.eventCount == 0)\n return null;\n let end = this.items.length;\n for (;; end--) {\n let next = this.items.get(end - 1);\n if (next.selection) {\n --end;\n break;\n }\n }\n let remap, mapFrom;\n if (preserveItems) {\n remap = this.remapping(end, this.items.length);\n mapFrom = remap.maps.length;\n }\n let transform = state.tr;\n let selection, remaining;\n let addAfter = [], addBefore = [];\n this.items.forEach((item, i) => {\n if (!item.step) {\n if (!remap) {\n remap = this.remapping(end, i + 1);\n mapFrom = remap.maps.length;\n }\n mapFrom--;\n addBefore.push(item);\n return;\n }\n if (remap) {\n addBefore.push(new Item(item.map));\n let step = item.step.map(remap.slice(mapFrom)), map;\n if (step && transform.maybeStep(step).doc) {\n map = transform.mapping.maps[transform.mapping.maps.length - 1];\n addAfter.push(new Item(map, undefined, undefined, addAfter.length + addBefore.length));\n }\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n }\n else {\n transform.maybeStep(item.step);\n }\n if (item.selection) {\n selection = remap ? item.selection.map(remap.slice(mapFrom)) : item.selection;\n remaining = new Branch(this.items.slice(0, end).append(addBefore.reverse().concat(addAfter)), this.eventCount - 1);\n return false;\n }\n }, this.items.length, 0);\n return { remaining: remaining, transform, selection: selection };\n }\n // Create a new branch with the given transform added.\n addTransform(transform, selection, histOptions, preserveItems) {\n let newItems = [], eventCount = this.eventCount;\n let oldItems = this.items, lastItem = !preserveItems && oldItems.length ? oldItems.get(oldItems.length - 1) : null;\n for (let i = 0; i < transform.steps.length; i++) {\n let step = transform.steps[i].invert(transform.docs[i]);\n let item = new Item(transform.mapping.maps[i], step, selection), merged;\n if (merged = lastItem && lastItem.merge(item)) {\n item = merged;\n if (i)\n newItems.pop();\n else\n oldItems = oldItems.slice(0, oldItems.length - 1);\n }\n newItems.push(item);\n if (selection) {\n eventCount++;\n selection = undefined;\n }\n if (!preserveItems)\n lastItem = item;\n }\n let overflow = eventCount - histOptions.depth;\n if (overflow > DEPTH_OVERFLOW) {\n oldItems = cutOffEvents(oldItems, overflow);\n eventCount -= overflow;\n }\n return new Branch(oldItems.append(newItems), eventCount);\n }\n remapping(from, to) {\n let maps = new Mapping;\n this.items.forEach((item, i) => {\n let mirrorPos = item.mirrorOffset != null && i - item.mirrorOffset >= from\n ? maps.maps.length - item.mirrorOffset : undefined;\n maps.appendMap(item.map, mirrorPos);\n }, from, to);\n return maps;\n }\n addMaps(array) {\n if (this.eventCount == 0)\n return this;\n return new Branch(this.items.append(array.map(map => new Item(map))), this.eventCount);\n }\n // When the collab module receives remote changes, the history has\n // to know about those, so that it can adjust the steps that were\n // rebased on top of the remote changes, and include the position\n // maps for the remote changes in its array of items.\n rebased(rebasedTransform, rebasedCount) {\n if (!this.eventCount)\n return this;\n let rebasedItems = [], start = Math.max(0, this.items.length - rebasedCount);\n let mapping = rebasedTransform.mapping;\n let newUntil = rebasedTransform.steps.length;\n let eventCount = this.eventCount;\n this.items.forEach(item => { if (item.selection)\n eventCount--; }, start);\n let iRebased = rebasedCount;\n this.items.forEach(item => {\n let pos = mapping.getMirror(--iRebased);\n if (pos == null)\n return;\n newUntil = Math.min(newUntil, pos);\n let map = mapping.maps[pos];\n if (item.step) {\n let step = rebasedTransform.steps[pos].invert(rebasedTransform.docs[pos]);\n let selection = item.selection && item.selection.map(mapping.slice(iRebased + 1, pos));\n if (selection)\n eventCount++;\n rebasedItems.push(new Item(map, step, selection));\n }\n else {\n rebasedItems.push(new Item(map));\n }\n }, start);\n let newMaps = [];\n for (let i = rebasedCount; i < newUntil; i++)\n newMaps.push(new Item(mapping.maps[i]));\n let items = this.items.slice(0, start).append(newMaps).append(rebasedItems);\n let branch = new Branch(items, eventCount);\n if (branch.emptyItemCount() > max_empty_items)\n branch = branch.compress(this.items.length - rebasedItems.length);\n return branch;\n }\n emptyItemCount() {\n let count = 0;\n this.items.forEach(item => { if (!item.step)\n count++; });\n return count;\n }\n // Compressing a branch means rewriting it to push the air (map-only\n // items) out. During collaboration, these naturally accumulate\n // because each remote change adds one. The `upto` argument is used\n // to ensure that only the items below a given level are compressed,\n // because `rebased` relies on a clean, untouched set of items in\n // order to associate old items with rebased steps.\n compress(upto = this.items.length) {\n let remap = this.remapping(0, upto), mapFrom = remap.maps.length;\n let items = [], events = 0;\n this.items.forEach((item, i) => {\n if (i >= upto) {\n items.push(item);\n if (item.selection)\n events++;\n }\n else if (item.step) {\n let step = item.step.map(remap.slice(mapFrom)), map = step && step.getMap();\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n if (step) {\n let selection = item.selection && item.selection.map(remap.slice(mapFrom));\n if (selection)\n events++;\n let newItem = new Item(map.invert(), step, selection), merged, last = items.length - 1;\n if (merged = items.length && items[last].merge(newItem))\n items[last] = merged;\n else\n items.push(newItem);\n }\n }\n else if (item.map) {\n mapFrom--;\n }\n }, this.items.length, 0);\n return new Branch(RopeSequence.from(items.reverse()), events);\n }\n}\nBranch.empty = new Branch(RopeSequence.empty, 0);\nfunction cutOffEvents(items, n) {\n let cutPoint;\n items.forEach((item, i) => {\n if (item.selection && (n-- == 0)) {\n cutPoint = i;\n return false;\n }\n });\n return items.slice(cutPoint);\n}\nclass Item {\n constructor(\n // The (forward) step map for this item.\n map, \n // The inverted step\n step, \n // If this is non-null, this item is the start of a group, and\n // this selection is the starting selection for the group (the one\n // that was active before the first step was applied)\n selection, \n // If this item is the inverse of a previous mapping on the stack,\n // this points at the inverse's offset\n mirrorOffset) {\n this.map = map;\n this.step = step;\n this.selection = selection;\n this.mirrorOffset = mirrorOffset;\n }\n merge(other) {\n if (this.step && other.step && !other.selection) {\n let step = other.step.merge(this.step);\n if (step)\n return new Item(step.getMap().invert(), step, this.selection);\n }\n }\n}\n// The value of the state field that tracks undo/redo history for that\n// state. Will be stored in the plugin state when the history plugin\n// is active.\nclass HistoryState {\n constructor(done, undone, prevRanges, prevTime, prevComposition) {\n this.done = done;\n this.undone = undone;\n this.prevRanges = prevRanges;\n this.prevTime = prevTime;\n this.prevComposition = prevComposition;\n }\n}\nconst DEPTH_OVERFLOW = 20;\n// Record a transformation in undo history.\nfunction applyTransaction(history, state, tr, options) {\n let historyTr = tr.getMeta(historyKey), rebased;\n if (historyTr)\n return historyTr.historyState;\n if (tr.getMeta(closeHistoryKey))\n history = new HistoryState(history.done, history.undone, null, 0, -1);\n let appended = tr.getMeta(\"appendedTransaction\");\n if (tr.steps.length == 0) {\n return history;\n }\n else if (appended && appended.getMeta(historyKey)) {\n if (appended.getMeta(historyKey).redo)\n return new HistoryState(history.done.addTransform(tr, undefined, options, mustPreserveItems(state)), history.undone, rangesFor(tr.mapping.maps), history.prevTime, history.prevComposition);\n else\n return new HistoryState(history.done, history.undone.addTransform(tr, undefined, options, mustPreserveItems(state)), null, history.prevTime, history.prevComposition);\n }\n else if (tr.getMeta(\"addToHistory\") !== false && !(appended && appended.getMeta(\"addToHistory\") === false)) {\n // Group transforms that occur in quick succession into one event.\n let composition = tr.getMeta(\"composition\");\n let newGroup = history.prevTime == 0 ||\n (!appended && history.prevComposition != composition &&\n (history.prevTime < (tr.time || 0) - options.newGroupDelay || !isAdjacentTo(tr, history.prevRanges)));\n let prevRanges = appended ? mapRanges(history.prevRanges, tr.mapping) : rangesFor(tr.mapping.maps);\n return new HistoryState(history.done.addTransform(tr, newGroup ? state.selection.getBookmark() : undefined, options, mustPreserveItems(state)), Branch.empty, prevRanges, tr.time, composition == null ? history.prevComposition : composition);\n }\n else if (rebased = tr.getMeta(\"rebased\")) {\n // Used by the collab module to tell the history that some of its\n // content has been rebased.\n return new HistoryState(history.done.rebased(tr, rebased), history.undone.rebased(tr, rebased), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n else {\n return new HistoryState(history.done.addMaps(tr.mapping.maps), history.undone.addMaps(tr.mapping.maps), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n}\nfunction isAdjacentTo(transform, prevRanges) {\n if (!prevRanges)\n return false;\n if (!transform.docChanged)\n return true;\n let adjacent = false;\n transform.mapping.maps[0].forEach((start, end) => {\n for (let i = 0; i < prevRanges.length; i += 2)\n if (start <= prevRanges[i + 1] && end >= prevRanges[i])\n adjacent = true;\n });\n return adjacent;\n}\nfunction rangesFor(maps) {\n let result = [];\n for (let i = maps.length - 1; i >= 0 && result.length == 0; i--)\n maps[i].forEach((_from, _to, from, to) => result.push(from, to));\n return result;\n}\nfunction mapRanges(ranges, mapping) {\n if (!ranges)\n return null;\n let result = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = mapping.map(ranges[i], 1), to = mapping.map(ranges[i + 1], -1);\n if (from <= to)\n result.push(from, to);\n }\n return result;\n}\n// Apply the latest event from one branch to the document and shift the event\n// onto the other branch.\nfunction histTransaction(history, state, redo) {\n let preserveItems = mustPreserveItems(state);\n let histOptions = historyKey.get(state).spec.config;\n let pop = (redo ? history.undone : history.done).popEvent(state, preserveItems);\n if (!pop)\n return null;\n let selection = pop.selection.resolve(pop.transform.doc);\n let added = (redo ? history.done : history.undone).addTransform(pop.transform, state.selection.getBookmark(), histOptions, preserveItems);\n let newHist = new HistoryState(redo ? added : pop.remaining, redo ? pop.remaining : added, null, 0, -1);\n return pop.transform.setSelection(selection).setMeta(historyKey, { redo, historyState: newHist });\n}\nlet cachedPreserveItems = false, cachedPreserveItemsPlugins = null;\n// Check whether any plugin in the given state has a\n// `historyPreserveItems` property in its spec, in which case we must\n// preserve steps exactly as they came in, so that they can be\n// rebased.\nfunction mustPreserveItems(state) {\n let plugins = state.plugins;\n if (cachedPreserveItemsPlugins != plugins) {\n cachedPreserveItems = false;\n cachedPreserveItemsPlugins = plugins;\n for (let i = 0; i < plugins.length; i++)\n if (plugins[i].spec.historyPreserveItems) {\n cachedPreserveItems = true;\n break;\n }\n }\n return cachedPreserveItems;\n}\n/**\nSet a flag on the given transaction that will prevent further steps\nfrom being appended to an existing history event (so that they\nrequire a separate undo command to undo).\n*/\nfunction closeHistory(tr) {\n return tr.setMeta(closeHistoryKey, true);\n}\nconst historyKey = new PluginKey(\"history\");\nconst closeHistoryKey = new PluginKey(\"closeHistory\");\n/**\nReturns a plugin that enables the undo history for an editor. The\nplugin will track undo and redo stacks, which can be used with the\n[`undo`](https://prosemirror.net/docs/ref/#history.undo) and [`redo`](https://prosemirror.net/docs/ref/#history.redo) commands.\n\nYou can set an `\"addToHistory\"` [metadata\nproperty](https://prosemirror.net/docs/ref/#state.Transaction.setMeta) of `false` on a transaction\nto prevent it from being rolled back by undo.\n*/\nfunction history(config = {}) {\n config = { depth: config.depth || 100,\n newGroupDelay: config.newGroupDelay || 500 };\n return new Plugin({\n key: historyKey,\n state: {\n init() {\n return new HistoryState(Branch.empty, Branch.empty, null, 0, -1);\n },\n apply(tr, hist, state) {\n return applyTransaction(hist, state, tr, config);\n }\n },\n config,\n props: {\n handleDOMEvents: {\n beforeinput(view, e) {\n let inputType = e.inputType;\n let command = inputType == \"historyUndo\" ? undo : inputType == \"historyRedo\" ? redo : null;\n if (!command || !view.editable)\n return false;\n e.preventDefault();\n return command(view.state, view.dispatch);\n }\n }\n }\n });\n}\nfunction buildCommand(redo, scroll) {\n return (state, dispatch) => {\n let hist = historyKey.getState(state);\n if (!hist || (redo ? hist.undone : hist.done).eventCount == 0)\n return false;\n if (dispatch) {\n let tr = histTransaction(hist, state, redo);\n if (tr)\n dispatch(scroll ? tr.scrollIntoView() : tr);\n }\n return true;\n };\n}\n/**\nA command function that undoes the last change, if any.\n*/\nconst undo = buildCommand(false, true);\n/**\nA command function that redoes the last undone change, if any.\n*/\nconst redo = buildCommand(true, true);\n/**\nA command function that undoes the last change. Don't scroll the\nselection into view.\n*/\nconst undoNoScroll = buildCommand(false, false);\n/**\nA command function that redoes the last undone change. Don't\nscroll the selection into view.\n*/\nconst redoNoScroll = buildCommand(true, false);\n/**\nThe amount of undoable events available in a given state.\n*/\nfunction undoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.done.eventCount : 0;\n}\n/**\nThe amount of redoable events available in a given editor state.\n*/\nfunction redoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.undone.eventCount : 0;\n}\n/**\nReturns true if the given transaction was generated by the history\nplugin.\n*/\nfunction isHistoryTransaction(tr) {\n return tr.getMeta(historyKey) != null;\n}\n\nexport { closeHistory, history, isHistoryTransaction, redo, redoDepth, redoNoScroll, undo, undoDepth, undoNoScroll };\n","// src/character-count/character-count.ts\nimport { Extension } from \"@tiptap/core\";\nimport { Plugin, PluginKey } from \"@tiptap/pm/state\";\nvar CharacterCount = Extension.create({\n name: \"characterCount\",\n addOptions() {\n return {\n limit: null,\n autoTrim: true,\n mode: \"textSize\",\n textCounter: (text) => text.length,\n wordCounter: (text) => text.split(\" \").filter((word) => word !== \"\").length\n };\n },\n addStorage() {\n return {\n characters: () => 0,\n words: () => 0\n };\n },\n onBeforeCreate() {\n this.storage.characters = (options) => {\n const node = (options == null ? void 0 : options.node) || this.editor.state.doc;\n const mode = (options == null ? void 0 : options.mode) || this.options.mode;\n if (mode === \"textSize\") {\n const text = node.textBetween(0, node.content.size, void 0, \" \");\n return this.options.textCounter(text);\n }\n return node.nodeSize;\n };\n this.storage.words = (options) => {\n const node = (options == null ? void 0 : options.node) || this.editor.state.doc;\n const text = node.textBetween(0, node.content.size, \" \", \" \");\n return this.options.wordCounter(text);\n };\n },\n addProseMirrorPlugins() {\n let initialEvaluationDone = false;\n return [\n new Plugin({\n key: new PluginKey(\"characterCount\"),\n appendTransaction: (transactions, oldState, newState) => {\n if (initialEvaluationDone) {\n return;\n }\n const limit = this.options.limit;\n const autoTrim = this.options.autoTrim;\n if (limit === null || limit === void 0 || limit === 0 || autoTrim === false) {\n initialEvaluationDone = true;\n return;\n }\n const initialContentSize = this.storage.characters({ node: newState.doc });\n if (initialContentSize > limit) {\n const over = initialContentSize - limit;\n const from = 0;\n const to = over;\n console.warn(\n `[CharacterCount] Initial content exceeded limit of ${limit} characters. Content was automatically trimmed.`\n );\n const tr = newState.tr.deleteRange(from, to);\n initialEvaluationDone = true;\n return tr;\n }\n initialEvaluationDone = true;\n },\n filterTransaction: (transaction, state) => {\n const limit = this.options.limit;\n if (!transaction.docChanged || limit === 0 || limit === null || limit === void 0) {\n return true;\n }\n const oldSize = this.storage.characters({ node: state.doc });\n const newSize = this.storage.characters({ node: transaction.doc });\n if (newSize <= limit) {\n return true;\n }\n if (oldSize > limit && newSize > limit && newSize <= oldSize) {\n return true;\n }\n if (oldSize > limit && newSize > limit && newSize > oldSize) {\n return false;\n }\n const isPaste = transaction.getMeta(\"paste\");\n if (!isPaste) {\n return false;\n }\n const pos = transaction.selection.$head.pos;\n const over = newSize - limit;\n const from = pos - over;\n const to = pos;\n transaction.deleteRange(from, to);\n const updatedSize = this.storage.characters({ node: transaction.doc });\n if (updatedSize > limit) {\n return false;\n }\n return true;\n }\n })\n ];\n }\n});\n\n// src/drop-cursor/drop-cursor.ts\nimport { Extension as Extension2 } from \"@tiptap/core\";\nimport { dropCursor } from \"@tiptap/pm/dropcursor\";\nvar Dropcursor = Extension2.create({\n name: \"dropCursor\",\n addOptions() {\n return {\n color: \"currentColor\",\n width: 1,\n class: void 0\n };\n },\n addProseMirrorPlugins() {\n return [dropCursor(this.options)];\n }\n});\n\n// src/focus/focus.ts\nimport { Extension as Extension3 } from \"@tiptap/core\";\nimport { Plugin as Plugin2, PluginKey as PluginKey2 } from \"@tiptap/pm/state\";\nimport { Decoration, DecorationSet } from \"@tiptap/pm/view\";\nvar Focus = Extension3.create({\n name: \"focus\",\n addOptions() {\n return {\n className: \"has-focus\",\n mode: \"all\"\n };\n },\n addProseMirrorPlugins() {\n return [\n new Plugin2({\n key: new PluginKey2(\"focus\"),\n props: {\n decorations: ({ doc, selection }) => {\n const { isEditable, isFocused } = this.editor;\n const { anchor } = selection;\n const decorations = [];\n if (!isEditable || !isFocused) {\n return DecorationSet.create(doc, []);\n }\n let maxLevels = 0;\n if (this.options.mode === \"deepest\") {\n doc.descendants((node, pos) => {\n if (node.isText) {\n return;\n }\n const isCurrent = anchor >= pos && anchor <= pos + node.nodeSize - 1;\n if (!isCurrent) {\n return false;\n }\n maxLevels += 1;\n });\n }\n let currentLevel = 0;\n doc.descendants((node, pos) => {\n if (node.isText) {\n return false;\n }\n const isCurrent = anchor >= pos && anchor <= pos + node.nodeSize - 1;\n if (!isCurrent) {\n return false;\n }\n currentLevel += 1;\n const outOfScope = this.options.mode === \"deepest\" && maxLevels - currentLevel > 0 || this.options.mode === \"shallowest\" && currentLevel > 1;\n if (outOfScope) {\n return this.options.mode === \"deepest\";\n }\n decorations.push(\n Decoration.node(pos, pos + node.nodeSize, {\n class: this.options.className\n })\n );\n });\n return DecorationSet.create(doc, decorations);\n }\n }\n })\n ];\n }\n});\n\n// src/gap-cursor/gap-cursor.ts\nimport { callOrReturn, Extension as Extension4, getExtensionField } from \"@tiptap/core\";\nimport { gapCursor } from \"@tiptap/pm/gapcursor\";\nvar Gapcursor = Extension4.create({\n name: \"gapCursor\",\n addProseMirrorPlugins() {\n return [gapCursor()];\n },\n extendNodeSchema(extension) {\n var _a;\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage\n };\n return {\n allowGapCursor: (_a = callOrReturn(getExtensionField(extension, \"allowGapCursor\", context))) != null ? _a : null\n };\n }\n});\n\n// src/placeholder/constants.ts\nimport { PluginKey as PluginKey3 } from \"@tiptap/pm/state\";\nvar DEFAULT_DATA_ATTRIBUTE = \"placeholder\";\nvar PLUGIN_KEY = new PluginKey3(\"tiptap__placeholder\");\nvar VIEWPORT_OVERSCAN_PX = 200;\n\n// src/placeholder/placeholder.ts\nimport { Extension as Extension5 } from \"@tiptap/core\";\n\n// src/placeholder/plugins/PlaceholderPlugin.ts\nimport { Plugin as Plugin3 } from \"@tiptap/pm/state\";\n\n// src/placeholder/utils/buildPlaceholderDecorations.ts\nimport { isNodeEmpty } from \"@tiptap/core\";\nimport { DecorationSet as DecorationSet2 } from \"@tiptap/pm/view\";\n\n// src/placeholder/utils/createPlaceholderDecoration.ts\nimport { Decoration as Decoration2 } from \"@tiptap/pm/view\";\nfunction createPlaceholderDecoration(options) {\n const {\n editor,\n placeholder,\n dataAttribute,\n pos,\n node,\n isEmptyDoc,\n hasAnchor,\n classes: { emptyNode, emptyEditor }\n } = options;\n const classes = [emptyNode];\n if (isEmptyDoc) {\n classes.push(emptyEditor);\n }\n return Decoration2.node(pos, pos + node.nodeSize, {\n class: classes.join(\" \"),\n [dataAttribute]: typeof placeholder === \"function\" ? placeholder({\n editor,\n node,\n pos,\n hasAnchor\n }) : placeholder\n });\n}\n\n// src/placeholder/utils/buildPlaceholderDecorations.ts\nfunction resolveEmptyNodeClass(emptyNodeClass, props) {\n return typeof emptyNodeClass === \"function\" ? emptyNodeClass(props) : emptyNodeClass;\n}\nfunction buildPlaceholderDecorations({\n editor,\n options,\n dataAttribute,\n doc,\n selection\n}) {\n var _a, _b;\n const active = editor.isEditable || !options.showOnlyWhenEditable;\n if (!active) {\n return null;\n }\n const { anchor } = selection;\n const decorations = [];\n const isEmptyDoc = editor.isEmpty;\n const useResolvedPath = options.showOnlyCurrent && !options.includeChildren;\n if (useResolvedPath) {\n const resolved = doc.resolve(anchor);\n const node = resolved.depth > 0 ? resolved.node(1) : resolved.nodeAfter;\n const nodeStart = resolved.depth > 0 ? resolved.before(1) : anchor;\n if (node && node.type.isTextblock && isNodeEmpty(node)) {\n const hasAnchor = anchor >= nodeStart && anchor <= nodeStart + node.nodeSize;\n decorations.push(\n createPlaceholderDecoration({\n editor,\n isEmptyDoc,\n dataAttribute,\n hasAnchor,\n placeholder: options.placeholder,\n classes: {\n emptyEditor: options.emptyEditorClass,\n emptyNode: resolveEmptyNodeClass(options.emptyNodeClass, {\n editor,\n node,\n pos: nodeStart,\n hasAnchor\n })\n },\n node,\n pos: nodeStart\n })\n );\n }\n } else {\n const pluginState = PLUGIN_KEY.getState(editor.state);\n const from = (_a = pluginState == null ? void 0 : pluginState.topPos) != null ? _a : 0;\n const to = (_b = pluginState == null ? void 0 : pluginState.bottomPos) != null ? _b : doc.content.size;\n doc.nodesBetween(from, to, (node, pos) => {\n const hasAnchor = anchor >= pos && anchor <= pos + node.nodeSize;\n const isEmpty = !node.isLeaf && isNodeEmpty(node);\n if (!node.type.isTextblock) {\n return options.includeChildren;\n }\n if ((hasAnchor || !options.showOnlyCurrent) && isEmpty) {\n decorations.push(\n createPlaceholderDecoration({\n editor,\n isEmptyDoc,\n dataAttribute,\n hasAnchor,\n placeholder: options.placeholder,\n classes: {\n emptyEditor: options.emptyEditorClass,\n emptyNode: resolveEmptyNodeClass(options.emptyNodeClass, {\n editor,\n node,\n pos,\n hasAnchor\n })\n },\n node,\n pos\n })\n );\n }\n return options.includeChildren;\n });\n }\n return DecorationSet2.create(doc, decorations);\n}\n\n// src/placeholder/utils/preparePlaceholderAttribute.ts\nfunction preparePlaceholderAttribute(attr) {\n return attr.replace(/\\s+/g, \"-\").replace(/[^a-zA-Z0-9-]/g, \"\").replace(/^[0-9-]+/, \"\").replace(/^-+/, \"\").toLowerCase();\n}\n\n// src/placeholder/utils/findScrollParent.ts\nfunction isScrollable(el) {\n const style = getComputedStyle(el);\n const overflow = `${style.overflow} ${style.overflowY} ${style.overflowX}`;\n return /auto|scroll|overlay/.test(overflow);\n}\nfunction findScrollParent(element) {\n let el = element;\n while (el) {\n if (isScrollable(el)) {\n return el;\n }\n const parent = el.parentElement;\n if (!parent) {\n const root = el.getRootNode();\n if (root instanceof ShadowRoot) {\n el = root.host;\n continue;\n }\n return window;\n }\n el = parent;\n }\n return window;\n}\n\n// src/placeholder/utils/getViewportBoundaryPositions.ts\nfunction getContainerRect(container) {\n if (container === window) {\n return { top: 0, bottom: window.innerHeight };\n }\n return container.getBoundingClientRect();\n}\nfunction getViewportBoundaryPositions({\n view,\n scrollContainer\n}) {\n const editorRect = view.dom.getBoundingClientRect();\n if (editorRect.width <= 0 || editorRect.height <= 0) {\n return null;\n }\n const containerRect = scrollContainer ? getContainerRect(scrollContainer) : { top: 0, bottom: window.innerHeight };\n const visibleTop = Math.max(editorRect.top, containerRect.top) - VIEWPORT_OVERSCAN_PX;\n const visibleBottom = Math.min(editorRect.bottom, containerRect.bottom) + VIEWPORT_OVERSCAN_PX;\n if (visibleTop >= visibleBottom) {\n return null;\n }\n const minX = editorRect.left + 1;\n const maxX = editorRect.right - 1;\n if (minX > maxX) {\n return null;\n }\n const isRTL = getComputedStyle(view.dom).direction === \"rtl\";\n const targetX = isRTL ? editorRect.right - 2 : editorRect.left + 2;\n const x = Math.min(Math.max(targetX, minX), maxX);\n const probeTop = Math.max(visibleTop + 2, editorRect.top + 1);\n const probeBottom = Math.min(visibleBottom - 2, editorRect.bottom - 1);\n if (probeTop > probeBottom) {\n return null;\n }\n const topPos = view.posAtCoords({ left: x, top: probeTop });\n const bottomPos = view.posAtCoords({ left: x, top: probeBottom });\n if (!topPos || !bottomPos) {\n return null;\n }\n return { top: topPos.pos, bottom: bottomPos.pos };\n}\n\n// src/placeholder/utils/viewportTracking.ts\nvar viewportPluginState = {\n /**\n * Initialises the viewport state with no known positions.\n * @returns The initial viewport state.\n */\n init() {\n return { topPos: null, bottomPos: null };\n },\n /**\n * Updates the viewport state from incoming transactions.\n * @param tr - The transaction being applied.\n * @param prev - The previous viewport state.\n * @returns The next viewport state.\n */\n apply(tr, prev) {\n const meta = tr.getMeta(PLUGIN_KEY);\n if (meta == null ? void 0 : meta.positions) {\n return { topPos: meta.positions.top, bottomPos: meta.positions.bottom };\n }\n if (!tr.docChanged) {\n return prev;\n }\n return {\n topPos: prev.topPos !== null ? tr.mapping.map(prev.topPos) : null,\n bottomPos: prev.bottomPos !== null ? tr.mapping.map(prev.bottomPos) : null\n };\n }\n};\nfunction createViewportPluginView(view) {\n const scrollContainer = findScrollParent(view.dom);\n const computeAndDispatch = () => {\n const positions = getViewportBoundaryPositions({\n view,\n scrollContainer\n });\n if (positions === null) {\n return;\n }\n const prev = PLUGIN_KEY.getState(view.state);\n if ((prev == null ? void 0 : prev.topPos) === positions.top && (prev == null ? void 0 : prev.bottomPos) === positions.bottom) {\n return;\n }\n const tr = view.state.tr.setMeta(PLUGIN_KEY, { positions });\n view.dispatch(tr);\n };\n let frame = null;\n let lastCompute = 0;\n const MIN_SCROLL_INTERVAL = 150;\n const scheduleFrame = () => {\n if (frame !== null) return;\n frame = requestAnimationFrame(() => {\n frame = null;\n const now = performance.now();\n if (now - lastCompute >= MIN_SCROLL_INTERVAL) {\n lastCompute = now;\n computeAndDispatch();\n } else {\n scheduleFrame();\n }\n });\n };\n scrollContainer.addEventListener(\"scroll\", scheduleFrame, { passive: true });\n const resizeObserver = typeof ResizeObserver !== \"undefined\" ? new ResizeObserver(scheduleFrame) : null;\n resizeObserver == null ? void 0 : resizeObserver.observe(view.dom);\n const intersectionObserver = typeof IntersectionObserver !== \"undefined\" ? new IntersectionObserver(scheduleFrame) : null;\n intersectionObserver == null ? void 0 : intersectionObserver.observe(view.dom);\n view.dom.addEventListener(\"focus\", scheduleFrame);\n computeAndDispatch();\n return {\n update(_view, prevState) {\n if (view.state.doc.content.size !== prevState.doc.content.size) {\n scheduleFrame();\n }\n },\n destroy: () => {\n if (frame !== null) {\n cancelAnimationFrame(frame);\n }\n scrollContainer.removeEventListener(\"scroll\", scheduleFrame);\n resizeObserver == null ? void 0 : resizeObserver.disconnect();\n intersectionObserver == null ? void 0 : intersectionObserver.disconnect();\n view.dom.removeEventListener(\"focus\", scheduleFrame);\n }\n };\n}\n\n// src/placeholder/plugins/PlaceholderPlugin.ts\nfunction createPlaceholderPlugin({ editor, options }) {\n const dataAttribute = options.dataAttribute ? `data-${preparePlaceholderAttribute(options.dataAttribute)}` : `data-${DEFAULT_DATA_ATTRIBUTE}`;\n return new Plugin3({\n key: PLUGIN_KEY,\n state: viewportPluginState,\n view: createViewportPluginView,\n props: {\n decorations: ({ doc, selection }) => buildPlaceholderDecorations({ editor, options, dataAttribute, doc, selection })\n }\n });\n}\n\n// src/placeholder/placeholder.ts\nvar Placeholder = Extension5.create({\n name: \"placeholder\",\n addOptions() {\n return {\n emptyEditorClass: \"is-editor-empty\",\n emptyNodeClass: \"is-empty\",\n dataAttribute: DEFAULT_DATA_ATTRIBUTE,\n placeholder: \"Write something \\u2026\",\n showOnlyWhenEditable: true,\n showOnlyCurrent: true,\n includeChildren: false\n };\n },\n addProseMirrorPlugins() {\n return [createPlaceholderPlugin({ editor: this.editor, options: this.options })];\n }\n});\n\n// src/selection/selection.ts\nimport { createStyleTag, Extension as Extension6, isNodeSelection } from \"@tiptap/core\";\nimport { Plugin as Plugin4, PluginKey as PluginKey4 } from \"@tiptap/pm/state\";\nimport { Decoration as Decoration3, DecorationSet as DecorationSet3 } from \"@tiptap/pm/view\";\nvar selectionStyle = `.ProseMirror:not(.ProseMirror-focused) *::selection {\n background: transparent;\n}\n\n.ProseMirror:not(.ProseMirror-focused) *::-moz-selection {\n background: transparent;\n}`;\nvar Selection = Extension6.create({\n name: \"selection\",\n addOptions() {\n return {\n className: \"selection\"\n };\n },\n addProseMirrorPlugins() {\n const { editor, options } = this;\n if (editor.options.injectCSS && typeof document !== \"undefined\") {\n createStyleTag(selectionStyle, editor.options.injectNonce, \"selection\");\n }\n return [\n new Plugin4({\n key: new PluginKey4(\"selection\"),\n props: {\n decorations(state) {\n if (state.selection.empty || editor.isFocused || !editor.isEditable || isNodeSelection(state.selection) || editor.view.dragging) {\n return null;\n }\n return DecorationSet3.create(state.doc, [\n Decoration3.inline(state.selection.from, state.selection.to, {\n class: options.className\n })\n ]);\n }\n }\n })\n ];\n }\n});\n\n// src/trailing-node/trailing-node.ts\nimport { Extension as Extension7 } from \"@tiptap/core\";\nimport { Plugin as Plugin5, PluginKey as PluginKey5 } from \"@tiptap/pm/state\";\nvar skipTrailingNodeMeta = \"skipTrailingNode\";\nfunction nodeEqualsType({\n types,\n node\n}) {\n return node && Array.isArray(types) && types.includes(node.type) || (node == null ? void 0 : node.type) === types;\n}\nvar TrailingNode = Extension7.create({\n name: \"trailingNode\",\n addOptions() {\n return {\n node: void 0,\n notAfter: []\n };\n },\n addProseMirrorPlugins() {\n var _a;\n const plugin = new PluginKey5(this.name);\n const defaultNode = this.options.node || ((_a = this.editor.schema.topNodeType.contentMatch.defaultType) == null ? void 0 : _a.name) || \"paragraph\";\n const disabledNodes = Object.entries(this.editor.schema.nodes).map(([, value]) => value).filter((node) => (this.options.notAfter || []).concat(defaultNode).includes(node.name));\n return [\n new Plugin5({\n key: plugin,\n appendTransaction: (transactions, __, state) => {\n const { doc, tr, schema } = state;\n const shouldInsertNodeAtEnd = plugin.getState(state);\n const endPosition = doc.content.size;\n const type = schema.nodes[defaultNode];\n if (transactions.some((transaction) => transaction.getMeta(skipTrailingNodeMeta))) {\n return;\n }\n if (!shouldInsertNodeAtEnd) {\n return;\n }\n return tr.insert(endPosition, type.create());\n },\n state: {\n init: (_, state) => {\n const lastNode = state.tr.doc.lastChild;\n return !nodeEqualsType({ node: lastNode, types: disabledNodes });\n },\n apply: (tr, value) => {\n if (!tr.docChanged) {\n return value;\n }\n if (tr.getMeta(\"__uniqueIDTransaction\")) {\n return value;\n }\n const lastNode = tr.doc.lastChild;\n return !nodeEqualsType({ node: lastNode, types: disabledNodes });\n }\n }\n })\n ];\n }\n});\n\n// src/undo-redo/undo-redo.ts\nimport { Extension as Extension8 } from \"@tiptap/core\";\nimport { history, redo, undo } from \"@tiptap/pm/history\";\nvar UndoRedo = Extension8.create({\n name: \"undoRedo\",\n addOptions() {\n return {\n depth: 100,\n newGroupDelay: 500\n };\n },\n addCommands() {\n return {\n undo: () => ({ state, dispatch }) => {\n return undo(state, dispatch);\n },\n redo: () => ({ state, dispatch }) => {\n return redo(state, dispatch);\n }\n };\n },\n addProseMirrorPlugins() {\n return [history(this.options)];\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-z\": () => this.editor.commands.undo(),\n \"Shift-Mod-z\": () => this.editor.commands.redo(),\n \"Mod-y\": () => this.editor.commands.redo(),\n // Russian keyboard layouts\n \"Mod-\\u044F\": () => this.editor.commands.undo(),\n \"Shift-Mod-\\u044F\": () => this.editor.commands.redo()\n };\n }\n});\nexport {\n CharacterCount,\n DEFAULT_DATA_ATTRIBUTE,\n Dropcursor,\n Focus,\n Gapcursor,\n PLUGIN_KEY,\n Placeholder,\n Selection,\n TrailingNode,\n UndoRedo,\n preparePlaceholderAttribute,\n skipTrailingNodeMeta\n};\n//# sourceMappingURL=index.js.map","// src/jsx-runtime.ts\nfunction Fragment(props) {\n return props.children;\n}\nvar h = (tag, attributes) => {\n if (tag === \"slot\") {\n return 0;\n }\n if (tag instanceof Function) {\n return tag(attributes);\n }\n const { children, ...rest } = attributes != null ? attributes : {};\n if (tag === \"svg\") {\n throw new Error(\n \"SVG elements are not supported in the JSX syntax, use the array syntax instead\"\n );\n }\n return [tag, rest, children];\n};\nexport {\n Fragment,\n h as createElement,\n h,\n h as jsx,\n h as jsxDEV,\n h as jsxs\n};\n//# sourceMappingURL=jsx-runtime.js.map","// src/blockquote.tsx\nimport { mergeAttributes, Node as Node2, wrappingInputRule } from \"@tiptap/core\";\n\n// ../../node_modules/.pnpm/prosemirror-model@1.25.7/node_modules/prosemirror-model/dist/index.js\nfunction findDiffStart(a, b, pos) {\n for (let i = 0; ; i++) {\n if (i == a.childCount || i == b.childCount)\n return a.childCount == b.childCount ? null : pos;\n let childA = a.child(i), childB = b.child(i);\n if (childA == childB) {\n pos += childA.nodeSize;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return pos;\n if (childA.isText && childA.text != childB.text) {\n for (let j = 0; childA.text[j] == childB.text[j]; j++)\n pos++;\n return pos;\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffStart(childA.content, childB.content, pos + 1);\n if (inner != null)\n return inner;\n }\n pos += childA.nodeSize;\n }\n}\nfunction findDiffEnd(a, b, posA, posB) {\n for (let iA = a.childCount, iB = b.childCount; ; ) {\n if (iA == 0 || iB == 0)\n return iA == iB ? null : { a: posA, b: posB };\n let childA = a.child(--iA), childB = b.child(--iB), size = childA.nodeSize;\n if (childA == childB) {\n posA -= size;\n posB -= size;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return { a: posA, b: posB };\n if (childA.isText && childA.text != childB.text) {\n let same = 0, minSize = Math.min(childA.text.length, childB.text.length);\n while (same < minSize && childA.text[childA.text.length - same - 1] == childB.text[childB.text.length - same - 1]) {\n same++;\n posA--;\n posB--;\n }\n return { a: posA, b: posB };\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffEnd(childA.content, childB.content, posA - 1, posB - 1);\n if (inner)\n return inner;\n }\n posA -= size;\n posB -= size;\n }\n}\nvar Fragment = class _Fragment {\n /**\n @internal\n */\n constructor(content, size) {\n this.content = content;\n this.size = size || 0;\n if (size == null)\n for (let i = 0; i < content.length; i++)\n this.size += content[i].nodeSize;\n }\n /**\n Invoke a callback for all descendant nodes between the given two\n positions (relative to start of this fragment). Doesn't descend\n into a node when the callback returns `false`.\n */\n nodesBetween(from, to, f, nodeStart = 0, parent) {\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from && f(child, nodeStart + pos, parent || null, i) !== false && child.content.size) {\n let start = pos + 1;\n child.nodesBetween(Math.max(0, from - start), Math.min(child.content.size, to - start), f, nodeStart + start);\n }\n pos = end;\n }\n }\n /**\n Call the given callback for every descendant node. `pos` will be\n relative to the start of the fragment. The callback may return\n `false` to prevent traversal of a given node's children.\n */\n descendants(f) {\n this.nodesBetween(0, this.size, f);\n }\n /**\n Extract the text between `from` and `to`. See the same method on\n [`Node`](https://prosemirror.net/docs/ref/#model.Node.textBetween).\n */\n textBetween(from, to, blockSeparator, leafText) {\n let text = \"\", first = true;\n this.nodesBetween(from, to, (node, pos) => {\n let nodeText = node.isText ? node.text.slice(Math.max(from, pos) - pos, to - pos) : !node.isLeaf ? \"\" : leafText ? typeof leafText === \"function\" ? leafText(node) : leafText : node.type.spec.leafText ? node.type.spec.leafText(node) : \"\";\n if (node.isBlock && (node.isLeaf && nodeText || node.isTextblock) && blockSeparator) {\n if (first)\n first = false;\n else\n text += blockSeparator;\n }\n text += nodeText;\n }, 0);\n return text;\n }\n /**\n Create a new fragment containing the combined content of this\n fragment and the other.\n */\n append(other) {\n if (!other.size)\n return this;\n if (!this.size)\n return other;\n let last = this.lastChild, first = other.firstChild, content = this.content.slice(), i = 0;\n if (last.isText && last.sameMarkup(first)) {\n content[content.length - 1] = last.withText(last.text + first.text);\n i = 1;\n }\n for (; i < other.content.length; i++)\n content.push(other.content[i]);\n return new _Fragment(content, this.size + other.size);\n }\n /**\n Cut out the sub-fragment between the two given positions.\n */\n cut(from, to = this.size) {\n if (from == 0 && to == this.size)\n return this;\n let result = [], size = 0;\n if (to > from)\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from) {\n if (pos < from || end > to) {\n if (child.isText)\n child = child.cut(Math.max(0, from - pos), Math.min(child.text.length, to - pos));\n else\n child = child.cut(Math.max(0, from - pos - 1), Math.min(child.content.size, to - pos - 1));\n }\n result.push(child);\n size += child.nodeSize;\n }\n pos = end;\n }\n return new _Fragment(result, size);\n }\n /**\n @internal\n */\n cutByIndex(from, to) {\n if (from == to)\n return _Fragment.empty;\n if (from == 0 && to == this.content.length)\n return this;\n return new _Fragment(this.content.slice(from, to));\n }\n /**\n Create a new fragment in which the node at the given index is\n replaced by the given node.\n */\n replaceChild(index, node) {\n let current = this.content[index];\n if (current == node)\n return this;\n let copy = this.content.slice();\n let size = this.size + node.nodeSize - current.nodeSize;\n copy[index] = node;\n return new _Fragment(copy, size);\n }\n /**\n Create a new fragment by prepending the given node to this\n fragment.\n */\n addToStart(node) {\n return new _Fragment([node].concat(this.content), this.size + node.nodeSize);\n }\n /**\n Create a new fragment by appending the given node to this\n fragment.\n */\n addToEnd(node) {\n return new _Fragment(this.content.concat(node), this.size + node.nodeSize);\n }\n /**\n Compare this fragment to another one.\n */\n eq(other) {\n if (this.content.length != other.content.length)\n return false;\n for (let i = 0; i < this.content.length; i++)\n if (!this.content[i].eq(other.content[i]))\n return false;\n return true;\n }\n /**\n The first child of the fragment, or `null` if it is empty.\n */\n get firstChild() {\n return this.content.length ? this.content[0] : null;\n }\n /**\n The last child of the fragment, or `null` if it is empty.\n */\n get lastChild() {\n return this.content.length ? this.content[this.content.length - 1] : null;\n }\n /**\n The number of child nodes in this fragment.\n */\n get childCount() {\n return this.content.length;\n }\n /**\n Get the child node at the given index. Raise an error when the\n index is out of range.\n */\n child(index) {\n let found2 = this.content[index];\n if (!found2)\n throw new RangeError(\"Index \" + index + \" out of range for \" + this);\n return found2;\n }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) {\n return this.content[index] || null;\n }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) {\n for (let i = 0, p = 0; i < this.content.length; i++) {\n let child = this.content[i];\n f(child, p, i);\n p += child.nodeSize;\n }\n }\n /**\n Find the first position at which this fragment and another\n fragment differ, or `null` if they are the same.\n */\n findDiffStart(other, pos = 0) {\n return findDiffStart(this, other, pos);\n }\n /**\n Find the first position, searching from the end, at which this\n fragment and the given fragment differ, or `null` if they are\n the same. Since this position will not be the same in both\n nodes, an object with two separate positions is returned.\n */\n findDiffEnd(other, pos = this.size, otherPos = other.size) {\n return findDiffEnd(this, other, pos, otherPos);\n }\n /**\n Find the index and inner offset corresponding to a given relative\n position in this fragment. The result object will be reused\n (overwritten) the next time the function is called. @internal\n */\n findIndex(pos) {\n if (pos == 0)\n return retIndex(0, pos);\n if (pos == this.size)\n return retIndex(this.content.length, pos);\n if (pos > this.size || pos < 0)\n throw new RangeError(`Position ${pos} outside of fragment (${this})`);\n for (let i = 0, curPos = 0; ; i++) {\n let cur = this.child(i), end = curPos + cur.nodeSize;\n if (end >= pos) {\n if (end == pos)\n return retIndex(i + 1, end);\n return retIndex(i, curPos);\n }\n curPos = end;\n }\n }\n /**\n Return a debugging string that describes this fragment.\n */\n toString() {\n return \"<\" + this.toStringInner() + \">\";\n }\n /**\n @internal\n */\n toStringInner() {\n return this.content.join(\", \");\n }\n /**\n Create a JSON-serializeable representation of this fragment.\n */\n toJSON() {\n return this.content.length ? this.content.map((n) => n.toJSON()) : null;\n }\n /**\n Deserialize a fragment from its JSON representation.\n */\n static fromJSON(schema, value) {\n if (!value)\n return _Fragment.empty;\n if (!Array.isArray(value))\n throw new RangeError(\"Invalid input for Fragment.fromJSON\");\n return _Fragment.fromArray(value.map(schema.nodeFromJSON));\n }\n /**\n Build a fragment from an array of nodes. Ensures that adjacent\n text nodes with the same marks are joined together.\n */\n static fromArray(array) {\n if (!array.length)\n return _Fragment.empty;\n let joined, size = 0;\n for (let i = 0; i < array.length; i++) {\n let node = array[i];\n size += node.nodeSize;\n if (i && node.isText && array[i - 1].sameMarkup(node)) {\n if (!joined)\n joined = array.slice(0, i);\n joined[joined.length - 1] = node.withText(joined[joined.length - 1].text + node.text);\n } else if (joined) {\n joined.push(node);\n }\n }\n return new _Fragment(joined || array, size);\n }\n /**\n Create a fragment from something that can be interpreted as a\n set of nodes. For `null`, it returns the empty fragment. For a\n fragment, the fragment itself. For a node or array of nodes, a\n fragment containing those nodes.\n */\n static from(nodes) {\n if (!nodes)\n return _Fragment.empty;\n if (nodes instanceof _Fragment)\n return nodes;\n if (Array.isArray(nodes))\n return this.fromArray(nodes);\n if (nodes.attrs)\n return new _Fragment([nodes], nodes.nodeSize);\n throw new RangeError(\"Can not convert \" + nodes + \" to a Fragment\" + (nodes.nodesBetween ? \" (looks like multiple versions of prosemirror-model were loaded)\" : \"\"));\n }\n};\nFragment.empty = new Fragment([], 0);\nvar found = { index: 0, offset: 0 };\nfunction retIndex(index, offset) {\n found.index = index;\n found.offset = offset;\n return found;\n}\nfunction compareDeep(a, b) {\n if (a === b)\n return true;\n if (!(a && typeof a == \"object\") || !(b && typeof b == \"object\"))\n return false;\n let array = Array.isArray(a);\n if (Array.isArray(b) != array)\n return false;\n if (array) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!compareDeep(a[i], b[i]))\n return false;\n } else {\n for (let p in a)\n if (!(p in b) || !compareDeep(a[p], b[p]))\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n }\n return true;\n}\nvar Mark = class _Mark {\n /**\n @internal\n */\n constructor(type, attrs) {\n this.type = type;\n this.attrs = attrs;\n }\n /**\n Given a set of marks, create a new set which contains this one as\n well, in the right position. If this mark is already in the set,\n the set itself is returned. If any marks that are set to be\n [exclusive](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) with this mark are present,\n those are replaced by this one.\n */\n addToSet(set) {\n let copy, placed = false;\n for (let i = 0; i < set.length; i++) {\n let other = set[i];\n if (this.eq(other))\n return set;\n if (this.type.excludes(other.type)) {\n if (!copy)\n copy = set.slice(0, i);\n } else if (other.type.excludes(this.type)) {\n return set;\n } else {\n if (!placed && other.type.rank > this.type.rank) {\n if (!copy)\n copy = set.slice(0, i);\n copy.push(this);\n placed = true;\n }\n if (copy)\n copy.push(other);\n }\n }\n if (!copy)\n copy = set.slice();\n if (!placed)\n copy.push(this);\n return copy;\n }\n /**\n Remove this mark from the given set, returning a new set. If this\n mark is not in the set, the set itself is returned.\n */\n removeFromSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return set.slice(0, i).concat(set.slice(i + 1));\n return set;\n }\n /**\n Test whether this mark is in the given set of marks.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return true;\n return false;\n }\n /**\n Test whether this mark has the same type and attributes as\n another mark.\n */\n eq(other) {\n return this == other || this.type == other.type && compareDeep(this.attrs, other.attrs);\n }\n /**\n Convert this mark to a JSON-serializeable representation.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n return obj;\n }\n /**\n Deserialize a mark from JSON.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Mark.fromJSON\");\n let type = schema.marks[json.type];\n if (!type)\n throw new RangeError(`There is no mark type ${json.type} in this schema`);\n let mark = type.create(json.attrs);\n type.checkAttrs(mark.attrs);\n return mark;\n }\n /**\n Test whether two sets of marks are identical.\n */\n static sameSet(a, b) {\n if (a == b)\n return true;\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].eq(b[i]))\n return false;\n return true;\n }\n /**\n Create a properly sorted mark set from null, a single mark, or an\n unsorted array of marks.\n */\n static setFrom(marks) {\n if (!marks || Array.isArray(marks) && marks.length == 0)\n return _Mark.none;\n if (marks instanceof _Mark)\n return [marks];\n let copy = marks.slice();\n copy.sort((a, b) => a.type.rank - b.type.rank);\n return copy;\n }\n};\nMark.none = [];\nvar ReplaceError = class extends Error {\n};\nvar Slice = class _Slice {\n /**\n Create a slice. When specifying a non-zero open depth, you must\n make sure that there are nodes of at least that depth at the\n appropriate side of the fragment—i.e. if the fragment is an\n empty paragraph node, `openStart` and `openEnd` can't be greater\n than 1.\n \n It is not necessary for the content of open nodes to conform to\n the schema's content constraints, though it should be a valid\n start/end/middle for such a node, depending on which sides are\n open.\n */\n constructor(content, openStart, openEnd) {\n this.content = content;\n this.openStart = openStart;\n this.openEnd = openEnd;\n }\n /**\n The size this slice would add when inserted into a document.\n */\n get size() {\n return this.content.size - this.openStart - this.openEnd;\n }\n /**\n @internal\n */\n insertAt(pos, fragment) {\n let content = insertInto(this.content, pos + this.openStart, fragment, this.openStart + 1, this.openEnd + 1);\n return content && new _Slice(content, this.openStart, this.openEnd);\n }\n /**\n @internal\n */\n removeBetween(from, to) {\n return new _Slice(removeRange(this.content, from + this.openStart, to + this.openStart), this.openStart, this.openEnd);\n }\n /**\n Tests whether this slice is equal to another slice.\n */\n eq(other) {\n return this.content.eq(other.content) && this.openStart == other.openStart && this.openEnd == other.openEnd;\n }\n /**\n @internal\n */\n toString() {\n return this.content + \"(\" + this.openStart + \",\" + this.openEnd + \")\";\n }\n /**\n Convert a slice to a JSON-serializable representation.\n */\n toJSON() {\n if (!this.content.size)\n return null;\n let json = { content: this.content.toJSON() };\n if (this.openStart > 0)\n json.openStart = this.openStart;\n if (this.openEnd > 0)\n json.openEnd = this.openEnd;\n return json;\n }\n /**\n Deserialize a slice from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n return _Slice.empty;\n let openStart = json.openStart || 0, openEnd = json.openEnd || 0;\n if (typeof openStart != \"number\" || typeof openEnd != \"number\")\n throw new RangeError(\"Invalid input for Slice.fromJSON\");\n return new _Slice(Fragment.fromJSON(schema, json.content), openStart, openEnd);\n }\n /**\n Create a slice from a fragment by taking the maximum possible\n open value on both side of the fragment.\n */\n static maxOpen(fragment, openIsolating = true) {\n let openStart = 0, openEnd = 0;\n for (let n = fragment.firstChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.firstChild)\n openStart++;\n for (let n = fragment.lastChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.lastChild)\n openEnd++;\n return new _Slice(fragment, openStart, openEnd);\n }\n};\nSlice.empty = new Slice(Fragment.empty, 0, 0);\nfunction removeRange(content, from, to) {\n let { index, offset } = content.findIndex(from), child = content.maybeChild(index);\n let { index: indexTo, offset: offsetTo } = content.findIndex(to);\n if (offset == from || child.isText) {\n if (offsetTo != to && !content.child(indexTo).isText)\n throw new RangeError(\"Removing non-flat range\");\n return content.cut(0, from).append(content.cut(to));\n }\n if (index != indexTo)\n throw new RangeError(\"Removing non-flat range\");\n return content.replaceChild(index, child.copy(removeRange(child.content, from - offset - 1, to - offset - 1)));\n}\nfunction insertInto(content, dist, insert, openStart, openEnd, parent) {\n let { index, offset } = content.findIndex(dist), child = content.maybeChild(index);\n if (offset == dist || child.isText) {\n if (parent && openStart <= 0 && openEnd <= 0 && !parent.canReplace(index, index, insert))\n return null;\n return content.cut(0, dist).append(insert).append(content.cut(dist));\n }\n let inner = insertInto(child.content, dist - offset - 1, insert, index == 0 ? openStart - 1 : 0, index == content.childCount - 1 ? openEnd - 1 : 0, child);\n return inner && content.replaceChild(index, child.copy(inner));\n}\nfunction replace($from, $to, slice) {\n if (slice.openStart > $from.depth)\n throw new ReplaceError(\"Inserted content deeper than insertion position\");\n if ($from.depth - slice.openStart != $to.depth - slice.openEnd)\n throw new ReplaceError(\"Inconsistent open depths\");\n return replaceOuter($from, $to, slice, 0);\n}\nfunction replaceOuter($from, $to, slice, depth) {\n let index = $from.index(depth), node = $from.node(depth);\n if (index == $to.index(depth) && depth < $from.depth - slice.openStart) {\n let inner = replaceOuter($from, $to, slice, depth + 1);\n return node.copy(node.content.replaceChild(index, inner));\n } else if (!slice.content.size) {\n return close(node, replaceTwoWay($from, $to, depth));\n } else if (!slice.openStart && !slice.openEnd && $from.depth == depth && $to.depth == depth) {\n let parent = $from.parent, content = parent.content;\n return close(parent, content.cut(0, $from.parentOffset).append(slice.content).append(content.cut($to.parentOffset)));\n } else {\n let { start, end } = prepareSliceForReplace(slice, $from);\n return close(node, replaceThreeWay($from, start, end, $to, depth));\n }\n}\nfunction checkJoin(main, sub) {\n if (!sub.type.compatibleContent(main.type))\n throw new ReplaceError(\"Cannot join \" + sub.type.name + \" onto \" + main.type.name);\n}\nfunction joinable($before, $after, depth) {\n let node = $before.node(depth);\n checkJoin(node, $after.node(depth));\n return node;\n}\nfunction addNode(child, target) {\n let last = target.length - 1;\n if (last >= 0 && child.isText && child.sameMarkup(target[last]))\n target[last] = child.withText(target[last].text + child.text);\n else\n target.push(child);\n}\nfunction addRange($start, $end, depth, target) {\n let node = ($end || $start).node(depth);\n let startIndex = 0, endIndex = $end ? $end.index(depth) : node.childCount;\n if ($start) {\n startIndex = $start.index(depth);\n if ($start.depth > depth) {\n startIndex++;\n } else if ($start.textOffset) {\n addNode($start.nodeAfter, target);\n startIndex++;\n }\n }\n for (let i = startIndex; i < endIndex; i++)\n addNode(node.child(i), target);\n if ($end && $end.depth == depth && $end.textOffset)\n addNode($end.nodeBefore, target);\n}\nfunction close(node, content) {\n node.type.checkContent(content);\n return node.copy(content);\n}\nfunction replaceThreeWay($from, $start, $end, $to, depth) {\n let openStart = $from.depth > depth && joinable($from, $start, depth + 1);\n let openEnd = $to.depth > depth && joinable($end, $to, depth + 1);\n let content = [];\n addRange(null, $from, depth, content);\n if (openStart && openEnd && $start.index(depth) == $end.index(depth)) {\n checkJoin(openStart, openEnd);\n addNode(close(openStart, replaceThreeWay($from, $start, $end, $to, depth + 1)), content);\n } else {\n if (openStart)\n addNode(close(openStart, replaceTwoWay($from, $start, depth + 1)), content);\n addRange($start, $end, depth, content);\n if (openEnd)\n addNode(close(openEnd, replaceTwoWay($end, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction replaceTwoWay($from, $to, depth) {\n let content = [];\n addRange(null, $from, depth, content);\n if ($from.depth > depth) {\n let type = joinable($from, $to, depth + 1);\n addNode(close(type, replaceTwoWay($from, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction prepareSliceForReplace(slice, $along) {\n let extra = $along.depth - slice.openStart, parent = $along.node(extra);\n let node = parent.copy(slice.content);\n for (let i = extra - 1; i >= 0; i--)\n node = $along.node(i).copy(Fragment.from(node));\n return {\n start: node.resolveNoCache(slice.openStart + extra),\n end: node.resolveNoCache(node.content.size - slice.openEnd - extra)\n };\n}\nvar ResolvedPos = class _ResolvedPos {\n /**\n @internal\n */\n constructor(pos, path, parentOffset) {\n this.pos = pos;\n this.path = path;\n this.parentOffset = parentOffset;\n this.depth = path.length / 3 - 1;\n }\n /**\n @internal\n */\n resolveDepth(val) {\n if (val == null)\n return this.depth;\n if (val < 0)\n return this.depth + val;\n return val;\n }\n /**\n The parent node that the position points into. Note that even if\n a position points into a text node, that node is not considered\n the parent—text nodes are ‘flat’ in this model, and have no content.\n */\n get parent() {\n return this.node(this.depth);\n }\n /**\n The root node in which the position was resolved.\n */\n get doc() {\n return this.node(0);\n }\n /**\n The ancestor node at the given level. `p.node(p.depth)` is the\n same as `p.parent`.\n */\n node(depth) {\n return this.path[this.resolveDepth(depth) * 3];\n }\n /**\n The index into the ancestor at the given level. If this points\n at the 3rd node in the 2nd paragraph on the top level, for\n example, `p.index(0)` is 1 and `p.index(1)` is 2.\n */\n index(depth) {\n return this.path[this.resolveDepth(depth) * 3 + 1];\n }\n /**\n The index pointing after this position into the ancestor at the\n given level.\n */\n indexAfter(depth) {\n depth = this.resolveDepth(depth);\n return this.index(depth) + (depth == this.depth && !this.textOffset ? 0 : 1);\n }\n /**\n The (absolute) position at the start of the node at the given\n level.\n */\n start(depth) {\n depth = this.resolveDepth(depth);\n return depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n }\n /**\n The (absolute) position at the end of the node at the given\n level.\n */\n end(depth) {\n depth = this.resolveDepth(depth);\n return this.start(depth) + this.node(depth).content.size;\n }\n /**\n The (absolute) position directly before the wrapping node at the\n given level, or, when `depth` is `this.depth + 1`, the original\n position.\n */\n before(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position before the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1];\n }\n /**\n The (absolute) position directly after the wrapping node at the\n given level, or the original position when `depth` is `this.depth + 1`.\n */\n after(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position after the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1] + this.path[depth * 3].nodeSize;\n }\n /**\n When this position points into a text node, this returns the\n distance between the position and the start of the text node.\n Will be zero for positions that point between nodes.\n */\n get textOffset() {\n return this.pos - this.path[this.path.length - 1];\n }\n /**\n Get the node directly after the position, if any. If the position\n points into a text node, only the part of that node after the\n position is returned.\n */\n get nodeAfter() {\n let parent = this.parent, index = this.index(this.depth);\n if (index == parent.childCount)\n return null;\n let dOff = this.pos - this.path[this.path.length - 1], child = parent.child(index);\n return dOff ? parent.child(index).cut(dOff) : child;\n }\n /**\n Get the node directly before the position, if any. If the\n position points into a text node, only the part of that node\n before the position is returned.\n */\n get nodeBefore() {\n let index = this.index(this.depth);\n let dOff = this.pos - this.path[this.path.length - 1];\n if (dOff)\n return this.parent.child(index).cut(0, dOff);\n return index == 0 ? null : this.parent.child(index - 1);\n }\n /**\n Get the position at the given index in the parent node at the\n given depth (which defaults to `this.depth`).\n */\n posAtIndex(index, depth) {\n depth = this.resolveDepth(depth);\n let node = this.path[depth * 3], pos = depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n for (let i = 0; i < index; i++)\n pos += node.child(i).nodeSize;\n return pos;\n }\n /**\n Get the marks at this position, factoring in the surrounding\n marks' [`inclusive`](https://prosemirror.net/docs/ref/#model.MarkSpec.inclusive) property. If the\n position is at the start of a non-empty node, the marks of the\n node after it (if any) are returned.\n */\n marks() {\n let parent = this.parent, index = this.index();\n if (parent.content.size == 0)\n return Mark.none;\n if (this.textOffset)\n return parent.child(index).marks;\n let main = parent.maybeChild(index - 1), other = parent.maybeChild(index);\n if (!main) {\n let tmp = main;\n main = other;\n other = tmp;\n }\n let marks = main.marks;\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!other || !marks[i].isInSet(other.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n Get the marks after the current position, if any, except those\n that are non-inclusive and not present at position `$end`. This\n is mostly useful for getting the set of marks to preserve after a\n deletion. Will return `null` if this position is at the end of\n its parent node or its parent node isn't a textblock (in which\n case no marks should be preserved).\n */\n marksAcross($end) {\n let after = this.parent.maybeChild(this.index());\n if (!after || !after.isInline)\n return null;\n let marks = after.marks, next = $end.parent.maybeChild($end.index());\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!next || !marks[i].isInSet(next.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n The depth up to which this position and the given (non-resolved)\n position share the same parent nodes.\n */\n sharedDepth(pos) {\n for (let depth = this.depth; depth > 0; depth--)\n if (this.start(depth) <= pos && this.end(depth) >= pos)\n return depth;\n return 0;\n }\n /**\n Returns a range based on the place where this position and the\n given position diverge around block content. If both point into\n the same textblock, for example, a range around that textblock\n will be returned. If they point into different blocks, the range\n around those blocks in their shared ancestor is returned. You can\n pass in an optional predicate that will be called with a parent\n node to see if a range into that parent is acceptable.\n */\n blockRange(other = this, pred) {\n if (other.pos < this.pos)\n return other.blockRange(this);\n for (let d = this.depth - (this.parent.inlineContent || this.pos == other.pos ? 1 : 0); d >= 0; d--)\n if (other.pos <= this.end(d) && (!pred || pred(this.node(d))))\n return new NodeRange(this, other, d);\n return null;\n }\n /**\n Query whether the given position shares the same parent node.\n */\n sameParent(other) {\n return this.pos - this.parentOffset == other.pos - other.parentOffset;\n }\n /**\n Return the greater of this and the given position.\n */\n max(other) {\n return other.pos > this.pos ? other : this;\n }\n /**\n Return the smaller of this and the given position.\n */\n min(other) {\n return other.pos < this.pos ? other : this;\n }\n /**\n @internal\n */\n toString() {\n let str = \"\";\n for (let i = 1; i <= this.depth; i++)\n str += (str ? \"/\" : \"\") + this.node(i).type.name + \"_\" + this.index(i - 1);\n return str + \":\" + this.parentOffset;\n }\n /**\n @internal\n */\n static resolve(doc, pos) {\n if (!(pos >= 0 && pos <= doc.content.size))\n throw new RangeError(\"Position \" + pos + \" out of range\");\n let path = [];\n let start = 0, parentOffset = pos;\n for (let node = doc; ; ) {\n let { index, offset } = node.content.findIndex(parentOffset);\n let rem = parentOffset - offset;\n path.push(node, index, start + offset);\n if (!rem)\n break;\n node = node.child(index);\n if (node.isText)\n break;\n parentOffset = rem - 1;\n start += offset + 1;\n }\n return new _ResolvedPos(pos, path, parentOffset);\n }\n /**\n @internal\n */\n static resolveCached(doc, pos) {\n let cache = resolveCache.get(doc);\n if (cache) {\n for (let i = 0; i < cache.elts.length; i++) {\n let elt = cache.elts[i];\n if (elt.pos == pos)\n return elt;\n }\n } else {\n resolveCache.set(doc, cache = new ResolveCache());\n }\n let result = cache.elts[cache.i] = _ResolvedPos.resolve(doc, pos);\n cache.i = (cache.i + 1) % resolveCacheSize;\n return result;\n }\n};\nvar ResolveCache = class {\n constructor() {\n this.elts = [];\n this.i = 0;\n }\n};\nvar resolveCacheSize = 12;\nvar resolveCache = /* @__PURE__ */ new WeakMap();\nvar NodeRange = class {\n /**\n Construct a node range. `$from` and `$to` should point into the\n same node until at least the given `depth`, since a node range\n denotes an adjacent set of nodes in a single parent node.\n */\n constructor($from, $to, depth) {\n this.$from = $from;\n this.$to = $to;\n this.depth = depth;\n }\n /**\n The position at the start of the range.\n */\n get start() {\n return this.$from.before(this.depth + 1);\n }\n /**\n The position at the end of the range.\n */\n get end() {\n return this.$to.after(this.depth + 1);\n }\n /**\n The parent node that the range points into.\n */\n get parent() {\n return this.$from.node(this.depth);\n }\n /**\n The start index of the range in the parent node.\n */\n get startIndex() {\n return this.$from.index(this.depth);\n }\n /**\n The end index of the range in the parent node.\n */\n get endIndex() {\n return this.$to.indexAfter(this.depth);\n }\n};\nvar emptyAttrs = /* @__PURE__ */ Object.create(null);\nvar Node = class _Node {\n /**\n @internal\n */\n constructor(type, attrs, content, marks = Mark.none) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.content = content || Fragment.empty;\n }\n /**\n The array of this node's child nodes.\n */\n get children() {\n return this.content.content;\n }\n /**\n The size of this node, as defined by the integer-based [indexing\n scheme](https://prosemirror.net/docs/guide/#doc.indexing). For text nodes, this is the\n amount of characters. For other leaf nodes, it is one. For\n non-leaf nodes, it is the size of the content plus two (the\n start and end token).\n */\n get nodeSize() {\n return this.isLeaf ? 1 : 2 + this.content.size;\n }\n /**\n The number of children that the node has.\n */\n get childCount() {\n return this.content.childCount;\n }\n /**\n Get the child node at the given index. Raises an error when the\n index is out of range.\n */\n child(index) {\n return this.content.child(index);\n }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) {\n return this.content.maybeChild(index);\n }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) {\n this.content.forEach(f);\n }\n /**\n Invoke a callback for all descendant nodes recursively overlapping\n the given two positions that are relative to start of this\n node's content. This includes all ancestors of the nodes\n containing the two positions. The callback is invoked with the\n node, its position relative to the original node (method receiver),\n its parent node, and its child index. When the callback returns\n false for a given node, that node's children will not be\n recursed over. The last parameter can be used to specify a\n starting position to count from.\n */\n nodesBetween(from, to, f, startPos = 0) {\n this.content.nodesBetween(from, to, f, startPos, this);\n }\n /**\n Call the given callback for every descendant node. Doesn't\n descend into a node when the callback returns `false`.\n */\n descendants(f) {\n this.nodesBetween(0, this.content.size, f);\n }\n /**\n Concatenates all the text nodes found in this fragment and its\n children.\n */\n get textContent() {\n return this.isLeaf && this.type.spec.leafText ? this.type.spec.leafText(this) : this.textBetween(0, this.content.size, \"\");\n }\n /**\n Get all text between positions `from` and `to`. When\n `blockSeparator` is given, it will be inserted to separate text\n from different block nodes. If `leafText` is given, it'll be\n inserted for every non-text leaf node encountered, otherwise\n [`leafText`](https://prosemirror.net/docs/ref/#model.NodeSpec.leafText) will be used.\n */\n textBetween(from, to, blockSeparator, leafText) {\n return this.content.textBetween(from, to, blockSeparator, leafText);\n }\n /**\n Returns this node's first child, or `null` if there are no\n children.\n */\n get firstChild() {\n return this.content.firstChild;\n }\n /**\n Returns this node's last child, or `null` if there are no\n children.\n */\n get lastChild() {\n return this.content.lastChild;\n }\n /**\n Test whether two nodes represent the same piece of document.\n */\n eq(other) {\n return this == other || this.sameMarkup(other) && this.content.eq(other.content);\n }\n /**\n Compare the markup (type, attributes, and marks) of this node to\n those of another. Returns `true` if both have the same markup.\n */\n sameMarkup(other) {\n return this.hasMarkup(other.type, other.attrs, other.marks);\n }\n /**\n Check whether this node's markup correspond to the given type,\n attributes, and marks.\n */\n hasMarkup(type, attrs, marks) {\n return this.type == type && compareDeep(this.attrs, attrs || type.defaultAttrs || emptyAttrs) && Mark.sameSet(this.marks, marks || Mark.none);\n }\n /**\n Create a new node with the same markup as this node, containing\n the given content (or empty, if no content is given).\n */\n copy(content = null) {\n if (content == this.content)\n return this;\n return new _Node(this.type, this.attrs, content, this.marks);\n }\n /**\n Create a copy of this node, with the given set of marks instead\n of the node's own marks.\n */\n mark(marks) {\n return marks == this.marks ? this : new _Node(this.type, this.attrs, this.content, marks);\n }\n /**\n Create a copy of this node with only the content between the\n given positions. If `to` is not given, it defaults to the end of\n the node.\n */\n cut(from, to = this.content.size) {\n if (from == 0 && to == this.content.size)\n return this;\n return this.copy(this.content.cut(from, to));\n }\n /**\n Cut out the part of the document between the given positions, and\n return it as a `Slice` object.\n */\n slice(from, to = this.content.size, includeParents = false) {\n if (from == to)\n return Slice.empty;\n let $from = this.resolve(from), $to = this.resolve(to);\n let depth = includeParents ? 0 : $from.sharedDepth(to);\n let start = $from.start(depth), node = $from.node(depth);\n let content = node.content.cut($from.pos - start, $to.pos - start);\n return new Slice(content, $from.depth - depth, $to.depth - depth);\n }\n /**\n Replace the part of the document between the given positions with\n the given slice. The slice must 'fit', meaning its open sides\n must be able to connect to the surrounding content, and its\n content nodes must be valid children for the node they are placed\n into. If any of this is violated, an error of type\n [`ReplaceError`](https://prosemirror.net/docs/ref/#model.ReplaceError) is thrown.\n */\n replace(from, to, slice) {\n return replace(this.resolve(from), this.resolve(to), slice);\n }\n /**\n Find the node directly after the given position.\n */\n nodeAt(pos) {\n for (let node = this; ; ) {\n let { index, offset } = node.content.findIndex(pos);\n node = node.maybeChild(index);\n if (!node)\n return null;\n if (offset == pos || node.isText)\n return node;\n pos -= offset + 1;\n }\n }\n /**\n Find the (direct) child node after the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childAfter(pos) {\n let { index, offset } = this.content.findIndex(pos);\n return { node: this.content.maybeChild(index), index, offset };\n }\n /**\n Find the (direct) child node before the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childBefore(pos) {\n if (pos == 0)\n return { node: null, index: 0, offset: 0 };\n let { index, offset } = this.content.findIndex(pos);\n if (offset < pos)\n return { node: this.content.child(index), index, offset };\n let node = this.content.child(index - 1);\n return { node, index: index - 1, offset: offset - node.nodeSize };\n }\n /**\n Resolve the given position in the document, returning an\n [object](https://prosemirror.net/docs/ref/#model.ResolvedPos) with information about its context.\n */\n resolve(pos) {\n return ResolvedPos.resolveCached(this, pos);\n }\n /**\n @internal\n */\n resolveNoCache(pos) {\n return ResolvedPos.resolve(this, pos);\n }\n /**\n Test whether a given mark or mark type occurs in this document\n between the two given positions.\n */\n rangeHasMark(from, to, type) {\n let found2 = false;\n if (to > from)\n this.nodesBetween(from, to, (node) => {\n if (type.isInSet(node.marks))\n found2 = true;\n return !found2;\n });\n return found2;\n }\n /**\n True when this is a block (non-inline node)\n */\n get isBlock() {\n return this.type.isBlock;\n }\n /**\n True when this is a textblock node, a block node with inline\n content.\n */\n get isTextblock() {\n return this.type.isTextblock;\n }\n /**\n True when this node allows inline content.\n */\n get inlineContent() {\n return this.type.inlineContent;\n }\n /**\n True when this is an inline node (a text node or a node that can\n appear among text).\n */\n get isInline() {\n return this.type.isInline;\n }\n /**\n True when this is a text node.\n */\n get isText() {\n return this.type.isText;\n }\n /**\n True when this is a leaf node.\n */\n get isLeaf() {\n return this.type.isLeaf;\n }\n /**\n True when this is an atom, i.e. when it does not have directly\n editable content. This is usually the same as `isLeaf`, but can\n be configured with the [`atom` property](https://prosemirror.net/docs/ref/#model.NodeSpec.atom)\n on a node's spec (typically used when the node is displayed as\n an uneditable [node view](https://prosemirror.net/docs/ref/#view.NodeView)).\n */\n get isAtom() {\n return this.type.isAtom;\n }\n /**\n Return a string representation of this node for debugging\n purposes.\n */\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n let name = this.type.name;\n if (this.content.size)\n name += \"(\" + this.content.toStringInner() + \")\";\n return wrapMarks(this.marks, name);\n }\n /**\n Get the content match in this node at the given index.\n */\n contentMatchAt(index) {\n let match = this.type.contentMatch.matchFragment(this.content, 0, index);\n if (!match)\n throw new Error(\"Called contentMatchAt on a node with invalid content\");\n return match;\n }\n /**\n Test whether replacing the range between `from` and `to` (by\n child index) with the given replacement fragment (which defaults\n to the empty fragment) would leave the node's content valid. You\n can optionally pass `start` and `end` indices into the\n replacement fragment.\n */\n canReplace(from, to, replacement = Fragment.empty, start = 0, end = replacement.childCount) {\n let one = this.contentMatchAt(from).matchFragment(replacement, start, end);\n let two = one && one.matchFragment(this.content, to);\n if (!two || !two.validEnd)\n return false;\n for (let i = start; i < end; i++)\n if (!this.type.allowsMarks(replacement.child(i).marks))\n return false;\n return true;\n }\n /**\n Test whether replacing the range `from` to `to` (by index) with\n a node of the given type would leave the node's content valid.\n */\n canReplaceWith(from, to, type, marks) {\n if (marks && !this.type.allowsMarks(marks))\n return false;\n let start = this.contentMatchAt(from).matchType(type);\n let end = start && start.matchFragment(this.content, to);\n return end ? end.validEnd : false;\n }\n /**\n Test whether the given node's content could be appended to this\n node. If that node is empty, this will only return true if there\n is at least one node type that can appear in both nodes (to avoid\n merging completely incompatible nodes).\n */\n canAppend(other) {\n if (other.content.size)\n return this.canReplace(this.childCount, this.childCount, other.content);\n else\n return this.type.compatibleContent(other.type);\n }\n /**\n Check whether this node and its descendants conform to the\n schema, and raise an exception when they do not.\n */\n check() {\n this.type.checkContent(this.content);\n this.type.checkAttrs(this.attrs);\n let copy = Mark.none;\n for (let i = 0; i < this.marks.length; i++) {\n let mark = this.marks[i];\n mark.type.checkAttrs(mark.attrs);\n copy = mark.addToSet(copy);\n }\n if (!Mark.sameSet(copy, this.marks))\n throw new RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map((m) => m.type.name)}`);\n this.content.forEach((node) => node.check());\n }\n /**\n Return a JSON-serializeable representation of this node.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n if (this.content.size)\n obj.content = this.content.toJSON();\n if (this.marks.length)\n obj.marks = this.marks.map((n) => n.toJSON());\n return obj;\n }\n /**\n Deserialize a node from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Node.fromJSON\");\n let marks = void 0;\n if (json.marks) {\n if (!Array.isArray(json.marks))\n throw new RangeError(\"Invalid mark data for Node.fromJSON\");\n marks = json.marks.map(schema.markFromJSON);\n }\n if (json.type == \"text\") {\n if (typeof json.text != \"string\")\n throw new RangeError(\"Invalid text node in JSON\");\n return schema.text(json.text, marks);\n }\n let content = Fragment.fromJSON(schema, json.content);\n let node = schema.nodeType(json.type).create(json.attrs, content, marks);\n node.type.checkAttrs(node.attrs);\n return node;\n }\n};\nNode.prototype.text = void 0;\nfunction wrapMarks(marks, str) {\n for (let i = marks.length - 1; i >= 0; i--)\n str = marks[i].type.name + \"(\" + str + \")\";\n return str;\n}\nvar ContentMatch = class _ContentMatch {\n /**\n @internal\n */\n constructor(validEnd) {\n this.validEnd = validEnd;\n this.next = [];\n this.wrapCache = [];\n }\n /**\n @internal\n */\n static parse(string, nodeTypes) {\n let stream = new TokenStream(string, nodeTypes);\n if (stream.next == null)\n return _ContentMatch.empty;\n let expr = parseExpr(stream);\n if (stream.next)\n stream.err(\"Unexpected trailing text\");\n let match = dfa(nfa(expr));\n checkForDeadEnds(match, stream);\n return match;\n }\n /**\n Match a node type, returning a match after that node if\n successful.\n */\n matchType(type) {\n for (let i = 0; i < this.next.length; i++)\n if (this.next[i].type == type)\n return this.next[i].next;\n return null;\n }\n /**\n Try to match a fragment. Returns the resulting match when\n successful.\n */\n matchFragment(frag, start = 0, end = frag.childCount) {\n let cur = this;\n for (let i = start; cur && i < end; i++)\n cur = cur.matchType(frag.child(i).type);\n return cur;\n }\n /**\n @internal\n */\n get inlineContent() {\n return this.next.length != 0 && this.next[0].type.isInline;\n }\n /**\n Get the first matching node type at this match position that can\n be generated.\n */\n get defaultType() {\n for (let i = 0; i < this.next.length; i++) {\n let { type } = this.next[i];\n if (!(type.isText || type.hasRequiredAttrs()))\n return type;\n }\n return null;\n }\n /**\n @internal\n */\n compatible(other) {\n for (let i = 0; i < this.next.length; i++)\n for (let j = 0; j < other.next.length; j++)\n if (this.next[i].type == other.next[j].type)\n return true;\n return false;\n }\n /**\n Try to match the given fragment, and if that fails, see if it can\n be made to match by inserting nodes in front of it. When\n successful, return a fragment of inserted nodes (which may be\n empty if nothing had to be inserted). When `toEnd` is true, only\n return a fragment if the resulting match goes to the end of the\n content expression.\n */\n fillBefore(after, toEnd = false, startIndex = 0) {\n let seen = [this];\n function search(match, types) {\n let finished = match.matchFragment(after, startIndex);\n if (finished && (!toEnd || finished.validEnd))\n return Fragment.from(types.map((tp) => tp.createAndFill()));\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!(type.isText || type.hasRequiredAttrs()) && seen.indexOf(next) == -1) {\n seen.push(next);\n let found2 = search(next, types.concat(type));\n if (found2)\n return found2;\n }\n }\n return null;\n }\n return search(this, []);\n }\n /**\n Find a set of wrapping node types that would allow a node of the\n given type to appear at this position. The result may be empty\n (when it fits directly) and will be null when no such wrapping\n exists.\n */\n findWrapping(target) {\n for (let i = 0; i < this.wrapCache.length; i += 2)\n if (this.wrapCache[i] == target)\n return this.wrapCache[i + 1];\n let computed = this.computeWrapping(target);\n this.wrapCache.push(target, computed);\n return computed;\n }\n /**\n @internal\n */\n computeWrapping(target) {\n let seen = /* @__PURE__ */ Object.create(null), active = [{ match: this, type: null, via: null }];\n while (active.length) {\n let current = active.shift(), match = current.match;\n if (match.matchType(target)) {\n let result = [];\n for (let obj = current; obj.type; obj = obj.via)\n result.push(obj.type);\n return result.reverse();\n }\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!type.isLeaf && !type.hasRequiredAttrs() && !(type.name in seen) && (!current.type || next.validEnd)) {\n active.push({ match: type.contentMatch, type, via: current });\n seen[type.name] = true;\n }\n }\n }\n return null;\n }\n /**\n The number of outgoing edges this node has in the finite\n automaton that describes the content expression.\n */\n get edgeCount() {\n return this.next.length;\n }\n /**\n Get the _n_th outgoing edge from this node in the finite\n automaton that describes the content expression.\n */\n edge(n) {\n if (n >= this.next.length)\n throw new RangeError(`There's no ${n}th edge in this content match`);\n return this.next[n];\n }\n /**\n @internal\n */\n toString() {\n let seen = [];\n function scan(m) {\n seen.push(m);\n for (let i = 0; i < m.next.length; i++)\n if (seen.indexOf(m.next[i].next) == -1)\n scan(m.next[i].next);\n }\n scan(this);\n return seen.map((m, i) => {\n let out = i + (m.validEnd ? \"*\" : \" \") + \" \";\n for (let i2 = 0; i2 < m.next.length; i2++)\n out += (i2 ? \", \" : \"\") + m.next[i2].type.name + \"->\" + seen.indexOf(m.next[i2].next);\n return out;\n }).join(\"\\n\");\n }\n};\nContentMatch.empty = new ContentMatch(true);\nvar TokenStream = class {\n constructor(string, nodeTypes) {\n this.string = string;\n this.nodeTypes = nodeTypes;\n this.inline = null;\n this.pos = 0;\n this.tokens = string.split(/\\s*(?=\\b|\\W|$)/);\n if (this.tokens[this.tokens.length - 1] == \"\")\n this.tokens.pop();\n if (this.tokens[0] == \"\")\n this.tokens.shift();\n }\n get next() {\n return this.tokens[this.pos];\n }\n eat(tok) {\n return this.next == tok && (this.pos++ || true);\n }\n err(str) {\n throw new SyntaxError(str + \" (in content expression '\" + this.string + \"')\");\n }\n};\nfunction parseExpr(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSeq(stream));\n } while (stream.eat(\"|\"));\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n}\nfunction parseExprSeq(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSubscript(stream));\n } while (stream.next && stream.next != \")\" && stream.next != \"|\");\n return exprs.length == 1 ? exprs[0] : { type: \"seq\", exprs };\n}\nfunction parseExprSubscript(stream) {\n let expr = parseExprAtom(stream);\n for (; ; ) {\n if (stream.eat(\"+\"))\n expr = { type: \"plus\", expr };\n else if (stream.eat(\"*\"))\n expr = { type: \"star\", expr };\n else if (stream.eat(\"?\"))\n expr = { type: \"opt\", expr };\n else if (stream.eat(\"{\"))\n expr = parseExprRange(stream, expr);\n else\n break;\n }\n return expr;\n}\nfunction parseNum(stream) {\n if (/\\D/.test(stream.next))\n stream.err(\"Expected number, got '\" + stream.next + \"'\");\n let result = Number(stream.next);\n stream.pos++;\n return result;\n}\nfunction parseExprRange(stream, expr) {\n let min = parseNum(stream), max = min;\n if (stream.eat(\",\")) {\n if (stream.next != \"}\")\n max = parseNum(stream);\n else\n max = -1;\n }\n if (!stream.eat(\"}\"))\n stream.err(\"Unclosed braced range\");\n return { type: \"range\", min, max, expr };\n}\nfunction resolveName(stream, name) {\n let types = stream.nodeTypes, type = types[name];\n if (type)\n return [type];\n let result = [];\n for (let typeName in types) {\n let type2 = types[typeName];\n if (type2.isInGroup(name))\n result.push(type2);\n }\n if (result.length == 0)\n stream.err(\"No node type or group '\" + name + \"' found\");\n return result;\n}\nfunction parseExprAtom(stream) {\n if (stream.eat(\"(\")) {\n let expr = parseExpr(stream);\n if (!stream.eat(\")\"))\n stream.err(\"Missing closing paren\");\n return expr;\n } else if (!/\\W/.test(stream.next)) {\n let exprs = resolveName(stream, stream.next).map((type) => {\n if (stream.inline == null)\n stream.inline = type.isInline;\n else if (stream.inline != type.isInline)\n stream.err(\"Mixing inline and block content\");\n return { type: \"name\", value: type };\n });\n stream.pos++;\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n } else {\n stream.err(\"Unexpected token '\" + stream.next + \"'\");\n }\n}\nfunction nfa(expr) {\n let nfa2 = [[]];\n connect(compile(expr, 0), node());\n return nfa2;\n function node() {\n return nfa2.push([]) - 1;\n }\n function edge(from, to, term) {\n let edge2 = { term, to };\n nfa2[from].push(edge2);\n return edge2;\n }\n function connect(edges, to) {\n edges.forEach((edge2) => edge2.to = to);\n }\n function compile(expr2, from) {\n if (expr2.type == \"choice\") {\n return expr2.exprs.reduce((out, expr3) => out.concat(compile(expr3, from)), []);\n } else if (expr2.type == \"seq\") {\n for (let i = 0; ; i++) {\n let next = compile(expr2.exprs[i], from);\n if (i == expr2.exprs.length - 1)\n return next;\n connect(next, from = node());\n }\n } else if (expr2.type == \"star\") {\n let loop = node();\n edge(from, loop);\n connect(compile(expr2.expr, loop), loop);\n return [edge(loop)];\n } else if (expr2.type == \"plus\") {\n let loop = node();\n connect(compile(expr2.expr, from), loop);\n connect(compile(expr2.expr, loop), loop);\n return [edge(loop)];\n } else if (expr2.type == \"opt\") {\n return [edge(from)].concat(compile(expr2.expr, from));\n } else if (expr2.type == \"range\") {\n let cur = from;\n for (let i = 0; i < expr2.min; i++) {\n let next = node();\n connect(compile(expr2.expr, cur), next);\n cur = next;\n }\n if (expr2.max == -1) {\n connect(compile(expr2.expr, cur), cur);\n } else {\n for (let i = expr2.min; i < expr2.max; i++) {\n let next = node();\n edge(cur, next);\n connect(compile(expr2.expr, cur), next);\n cur = next;\n }\n }\n return [edge(cur)];\n } else if (expr2.type == \"name\") {\n return [edge(from, void 0, expr2.value)];\n } else {\n throw new Error(\"Unknown expr type\");\n }\n }\n}\nfunction cmp(a, b) {\n return b - a;\n}\nfunction nullFrom(nfa2, node) {\n let result = [];\n scan(node);\n return result.sort(cmp);\n function scan(node2) {\n let edges = nfa2[node2];\n if (edges.length == 1 && !edges[0].term)\n return scan(edges[0].to);\n result.push(node2);\n for (let i = 0; i < edges.length; i++) {\n let { term, to } = edges[i];\n if (!term && result.indexOf(to) == -1)\n scan(to);\n }\n }\n}\nfunction dfa(nfa2) {\n let labeled = /* @__PURE__ */ Object.create(null);\n return explore(nullFrom(nfa2, 0));\n function explore(states) {\n let out = [];\n states.forEach((node) => {\n nfa2[node].forEach(({ term, to }) => {\n if (!term)\n return;\n let set;\n for (let i = 0; i < out.length; i++)\n if (out[i][0] == term)\n set = out[i][1];\n nullFrom(nfa2, to).forEach((node2) => {\n if (!set)\n out.push([term, set = []]);\n if (set.indexOf(node2) == -1)\n set.push(node2);\n });\n });\n });\n let state = labeled[states.join(\",\")] = new ContentMatch(states.indexOf(nfa2.length - 1) > -1);\n for (let i = 0; i < out.length; i++) {\n let states2 = out[i][1].sort(cmp);\n state.next.push({ type: out[i][0], next: labeled[states2.join(\",\")] || explore(states2) });\n }\n return state;\n }\n}\nfunction checkForDeadEnds(match, stream) {\n for (let i = 0, work = [match]; i < work.length; i++) {\n let state = work[i], dead = !state.validEnd, nodes = [];\n for (let j = 0; j < state.next.length; j++) {\n let { type, next } = state.next[j];\n nodes.push(type.name);\n if (dead && !(type.isText || type.hasRequiredAttrs()))\n dead = false;\n if (work.indexOf(next) == -1)\n work.push(next);\n }\n if (dead)\n stream.err(\"Only non-generatable nodes (\" + nodes.join(\", \") + \") in a required position (see https://prosemirror.net/docs/guide/#generatable)\");\n }\n}\n\n// ../../node_modules/.pnpm/prosemirror-transform@1.12.0/node_modules/prosemirror-transform/dist/index.js\nvar lower16 = 65535;\nvar factor16 = Math.pow(2, 16);\nfunction makeRecover(index, offset) {\n return index + offset * factor16;\n}\nfunction recoverIndex(value) {\n return value & lower16;\n}\nfunction recoverOffset(value) {\n return (value - (value & lower16)) / factor16;\n}\nvar DEL_BEFORE = 1;\nvar DEL_AFTER = 2;\nvar DEL_ACROSS = 4;\nvar DEL_SIDE = 8;\nvar MapResult = class {\n /**\n @internal\n */\n constructor(pos, delInfo, recover) {\n this.pos = pos;\n this.delInfo = delInfo;\n this.recover = recover;\n }\n /**\n Tells you whether the position was deleted, that is, whether the\n step removed the token on the side queried (via the `assoc`)\n argument from the document.\n */\n get deleted() {\n return (this.delInfo & DEL_SIDE) > 0;\n }\n /**\n Tells you whether the token before the mapped position was deleted.\n */\n get deletedBefore() {\n return (this.delInfo & (DEL_BEFORE | DEL_ACROSS)) > 0;\n }\n /**\n True when the token after the mapped position was deleted.\n */\n get deletedAfter() {\n return (this.delInfo & (DEL_AFTER | DEL_ACROSS)) > 0;\n }\n /**\n Tells whether any of the steps mapped through deletes across the\n position (including both the token before and after the\n position).\n */\n get deletedAcross() {\n return (this.delInfo & DEL_ACROSS) > 0;\n }\n};\nvar StepMap = class _StepMap {\n /**\n Create a position map. The modifications to the document are\n represented as an array of numbers, in which each group of three\n represents a modified chunk as `[start, oldSize, newSize]`.\n */\n constructor(ranges, inverted = false) {\n this.ranges = ranges;\n this.inverted = inverted;\n if (!ranges.length && _StepMap.empty)\n return _StepMap.empty;\n }\n /**\n @internal\n */\n recover(value) {\n let diff = 0, index = recoverIndex(value);\n if (!this.inverted)\n for (let i = 0; i < index; i++)\n diff += this.ranges[i * 3 + 2] - this.ranges[i * 3 + 1];\n return this.ranges[index * 3] + diff + recoverOffset(value);\n }\n mapResult(pos, assoc = 1) {\n return this._map(pos, assoc, false);\n }\n map(pos, assoc = 1) {\n return this._map(pos, assoc, true);\n }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let diff = 0, oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex], end = start + oldSize;\n if (pos <= end) {\n let side = !oldSize ? assoc : pos == start ? -1 : pos == end ? 1 : assoc;\n let result = start + diff + (side < 0 ? 0 : newSize);\n if (simple)\n return result;\n let recover = pos == (assoc < 0 ? start : end) ? null : makeRecover(i / 3, pos - start);\n let del = pos == start ? DEL_AFTER : pos == end ? DEL_BEFORE : DEL_ACROSS;\n if (assoc < 0 ? pos != start : pos != end)\n del |= DEL_SIDE;\n return new MapResult(result, del, recover);\n }\n diff += newSize - oldSize;\n }\n return simple ? pos + diff : new MapResult(pos + diff, 0, null);\n }\n /**\n @internal\n */\n touches(pos, recover) {\n let diff = 0, index = recoverIndex(recover);\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], end = start + oldSize;\n if (pos <= end && i == index * 3)\n return true;\n diff += this.ranges[i + newIndex] - oldSize;\n }\n return false;\n }\n /**\n Calls the given function on each of the changed ranges included in\n this map.\n */\n forEach(f) {\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0, diff = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i], oldStart = start - (this.inverted ? diff : 0), newStart = start + (this.inverted ? 0 : diff);\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex];\n f(oldStart, oldStart + oldSize, newStart, newStart + newSize);\n diff += newSize - oldSize;\n }\n }\n /**\n Create an inverted version of this map. The result can be used to\n map positions in the post-step document to the pre-step document.\n */\n invert() {\n return new _StepMap(this.ranges, !this.inverted);\n }\n /**\n @internal\n */\n toString() {\n return (this.inverted ? \"-\" : \"\") + JSON.stringify(this.ranges);\n }\n /**\n Create a map that moves all positions by offset `n` (which may be\n negative). This can be useful when applying steps meant for a\n sub-document to a larger document, or vice-versa.\n */\n static offset(n) {\n return n == 0 ? _StepMap.empty : new _StepMap(n < 0 ? [0, -n, 0] : [0, 0, n]);\n }\n};\nStepMap.empty = new StepMap([]);\nvar stepsByID = /* @__PURE__ */ Object.create(null);\nvar Step = class {\n /**\n Get the step map that represents the changes made by this step,\n and which can be used to transform between positions in the old\n and the new document.\n */\n getMap() {\n return StepMap.empty;\n }\n /**\n Try to merge this step with another one, to be applied directly\n after it. Returns the merged step when possible, null if the\n steps can't be merged.\n */\n merge(other) {\n return null;\n }\n /**\n Deserialize a step from its JSON representation. Will call\n through to the step class' own implementation of this method.\n */\n static fromJSON(schema, json) {\n if (!json || !json.stepType)\n throw new RangeError(\"Invalid input for Step.fromJSON\");\n let type = stepsByID[json.stepType];\n if (!type)\n throw new RangeError(`No step type ${json.stepType} defined`);\n return type.fromJSON(schema, json);\n }\n /**\n To be able to serialize steps to JSON, each step needs a string\n ID to attach to its JSON representation. Use this method to\n register an ID for your step classes. Try to pick something\n that's unlikely to clash with steps from other modules.\n */\n static jsonID(id, stepClass) {\n if (id in stepsByID)\n throw new RangeError(\"Duplicate use of step JSON ID \" + id);\n stepsByID[id] = stepClass;\n stepClass.prototype.jsonID = id;\n return stepClass;\n }\n};\nvar StepResult = class _StepResult {\n /**\n @internal\n */\n constructor(doc, failed) {\n this.doc = doc;\n this.failed = failed;\n }\n /**\n Create a successful step result.\n */\n static ok(doc) {\n return new _StepResult(doc, null);\n }\n /**\n Create a failed step result.\n */\n static fail(message) {\n return new _StepResult(null, message);\n }\n /**\n Call [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) with the given\n arguments. Create a successful result if it succeeds, and a\n failed one if it throws a `ReplaceError`.\n */\n static fromReplace(doc, from, to, slice) {\n try {\n return _StepResult.ok(doc.replace(from, to, slice));\n } catch (e) {\n if (e instanceof ReplaceError)\n return _StepResult.fail(e.message);\n throw e;\n }\n }\n};\nfunction mapFragment(fragment, f, parent) {\n let mapped = [];\n for (let i = 0; i < fragment.childCount; i++) {\n let child = fragment.child(i);\n if (child.content.size)\n child = child.copy(mapFragment(child.content, f, child));\n if (child.isInline)\n child = f(child, parent, i);\n mapped.push(child);\n }\n return Fragment.fromArray(mapped);\n}\nvar AddMarkStep = class _AddMarkStep extends Step {\n /**\n Create a mark step.\n */\n constructor(from, to, mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to), $from = doc.resolve(this.from);\n let parent = $from.node($from.sharedDepth(this.to));\n let slice = new Slice(mapFragment(oldSlice.content, (node, parent2) => {\n if (!node.isAtom || !parent2.type.allowsMarkType(this.mark.type))\n return node;\n return node.mark(this.mark.addToSet(node.marks));\n }, parent), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new RemoveMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new _AddMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof _AddMarkStep && other.mark.eq(this.mark) && this.from <= other.to && this.to >= other.from)\n return new _AddMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return {\n stepType: \"addMark\",\n mark: this.mark.toJSON(),\n from: this.from,\n to: this.to\n };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for AddMarkStep.fromJSON\");\n return new _AddMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n};\nStep.jsonID(\"addMark\", AddMarkStep);\nvar RemoveMarkStep = class _RemoveMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(from, to, mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to);\n let slice = new Slice(mapFragment(oldSlice.content, (node) => {\n return node.mark(this.mark.removeFromSet(node.marks));\n }, doc), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new AddMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new _RemoveMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof _RemoveMarkStep && other.mark.eq(this.mark) && this.from <= other.to && this.to >= other.from)\n return new _RemoveMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return {\n stepType: \"removeMark\",\n mark: this.mark.toJSON(),\n from: this.from,\n to: this.to\n };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for RemoveMarkStep.fromJSON\");\n return new _RemoveMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n};\nStep.jsonID(\"removeMark\", RemoveMarkStep);\nvar AddNodeMarkStep = class _AddNodeMarkStep extends Step {\n /**\n Create a node mark step.\n */\n constructor(pos, mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.addToSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (node) {\n let newSet = this.mark.addToSet(node.marks);\n if (newSet.length == node.marks.length) {\n for (let i = 0; i < node.marks.length; i++)\n if (!node.marks[i].isInSet(newSet))\n return new _AddNodeMarkStep(this.pos, node.marks[i]);\n return new _AddNodeMarkStep(this.pos, this.mark);\n }\n }\n return new RemoveNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new _AddNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"addNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for AddNodeMarkStep.fromJSON\");\n return new _AddNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n};\nStep.jsonID(\"addNodeMark\", AddNodeMarkStep);\nvar RemoveNodeMarkStep = class _RemoveNodeMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(pos, mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.removeFromSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node || !this.mark.isInSet(node.marks))\n return this;\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new _RemoveNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"removeNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for RemoveNodeMarkStep.fromJSON\");\n return new _RemoveNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n};\nStep.jsonID(\"removeNodeMark\", RemoveNodeMarkStep);\nvar ReplaceStep = class _ReplaceStep extends Step {\n /**\n The given `slice` should fit the 'gap' between `from` and\n `to`—the depths must line up, and the surrounding nodes must be\n able to be joined with the open sides of the slice. When\n `structure` is true, the step will fail if the content between\n from and to is not just a sequence of closing and then opening\n tokens (this is to guard against rebased replace steps\n overwriting something they weren't supposed to).\n */\n constructor(from, to, slice, structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.slice = slice;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && contentBetween(doc, this.from, this.to))\n return StepResult.fail(\"Structure replace would overwrite content\");\n return StepResult.fromReplace(doc, this.from, this.to, this.slice);\n }\n getMap() {\n return new StepMap([this.from, this.to - this.from, this.slice.size]);\n }\n invert(doc) {\n return new _ReplaceStep(this.from, this.from + this.slice.size, doc.slice(this.from, this.to));\n }\n map(mapping) {\n let to = mapping.mapResult(this.to, -1);\n let from = this.from == this.to && _ReplaceStep.MAP_BIAS < 0 ? to : mapping.mapResult(this.from, 1);\n if (from.deletedAcross && to.deletedAcross)\n return null;\n return new _ReplaceStep(from.pos, Math.max(from.pos, to.pos), this.slice, this.structure);\n }\n merge(other) {\n if (!(other instanceof _ReplaceStep) || other.structure || this.structure)\n return null;\n if (this.from + this.slice.size == other.from && !this.slice.openEnd && !other.slice.openStart) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty : new Slice(this.slice.content.append(other.slice.content), this.slice.openStart, other.slice.openEnd);\n return new _ReplaceStep(this.from, this.to + (other.to - other.from), slice, this.structure);\n } else if (other.to == this.from && !this.slice.openStart && !other.slice.openEnd) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty : new Slice(other.slice.content.append(this.slice.content), other.slice.openStart, this.slice.openEnd);\n return new _ReplaceStep(other.from, this.to, slice, this.structure);\n } else {\n return null;\n }\n }\n toJSON() {\n let json = { stepType: \"replace\", from: this.from, to: this.to };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for ReplaceStep.fromJSON\");\n return new _ReplaceStep(json.from, json.to, Slice.fromJSON(schema, json.slice), !!json.structure);\n }\n};\nReplaceStep.MAP_BIAS = 1;\nStep.jsonID(\"replace\", ReplaceStep);\nvar ReplaceAroundStep = class _ReplaceAroundStep extends Step {\n /**\n Create a replace-around step with the given range and gap.\n `insert` should be the point in the slice into which the content\n of the gap should be moved. `structure` has the same meaning as\n it has in the [`ReplaceStep`](https://prosemirror.net/docs/ref/#transform.ReplaceStep) class.\n */\n constructor(from, to, gapFrom, gapTo, slice, insert, structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.gapFrom = gapFrom;\n this.gapTo = gapTo;\n this.slice = slice;\n this.insert = insert;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && (contentBetween(doc, this.from, this.gapFrom) || contentBetween(doc, this.gapTo, this.to)))\n return StepResult.fail(\"Structure gap-replace would overwrite content\");\n let gap = doc.slice(this.gapFrom, this.gapTo);\n if (gap.openStart || gap.openEnd)\n return StepResult.fail(\"Gap is not a flat range\");\n let inserted = this.slice.insertAt(this.insert, gap.content);\n if (!inserted)\n return StepResult.fail(\"Content does not fit in gap\");\n return StepResult.fromReplace(doc, this.from, this.to, inserted);\n }\n getMap() {\n return new StepMap([\n this.from,\n this.gapFrom - this.from,\n this.insert,\n this.gapTo,\n this.to - this.gapTo,\n this.slice.size - this.insert\n ]);\n }\n invert(doc) {\n let gap = this.gapTo - this.gapFrom;\n return new _ReplaceAroundStep(this.from, this.from + this.slice.size + gap, this.from + this.insert, this.from + this.insert + gap, doc.slice(this.from, this.to).removeBetween(this.gapFrom - this.from, this.gapTo - this.from), this.gapFrom - this.from, this.structure);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n let gapFrom = this.from == this.gapFrom ? from.pos : mapping.map(this.gapFrom, -1);\n let gapTo = this.to == this.gapTo ? to.pos : mapping.map(this.gapTo, 1);\n if (from.deletedAcross && to.deletedAcross || gapFrom < from.pos || gapTo > to.pos)\n return null;\n return new _ReplaceAroundStep(from.pos, to.pos, gapFrom, gapTo, this.slice, this.insert, this.structure);\n }\n toJSON() {\n let json = {\n stepType: \"replaceAround\",\n from: this.from,\n to: this.to,\n gapFrom: this.gapFrom,\n gapTo: this.gapTo,\n insert: this.insert\n };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\" || typeof json.gapFrom != \"number\" || typeof json.gapTo != \"number\" || typeof json.insert != \"number\")\n throw new RangeError(\"Invalid input for ReplaceAroundStep.fromJSON\");\n return new _ReplaceAroundStep(json.from, json.to, json.gapFrom, json.gapTo, Slice.fromJSON(schema, json.slice), json.insert, !!json.structure);\n }\n};\nStep.jsonID(\"replaceAround\", ReplaceAroundStep);\nfunction contentBetween(doc, from, to) {\n let $from = doc.resolve(from), dist = to - from, depth = $from.depth;\n while (dist > 0 && depth > 0 && $from.indexAfter(depth) == $from.node(depth).childCount) {\n depth--;\n dist--;\n }\n if (dist > 0) {\n let next = $from.node(depth).maybeChild($from.indexAfter(depth));\n while (dist > 0) {\n if (!next || next.isLeaf)\n return true;\n next = next.firstChild;\n dist--;\n }\n }\n return false;\n}\nvar AttrStep = class _AttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(pos, attr, value) {\n super();\n this.pos = pos;\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at attribute step's position\");\n let attrs = /* @__PURE__ */ Object.create(null);\n for (let name in node.attrs)\n attrs[name] = node.attrs[name];\n attrs[this.attr] = this.value;\n let updated = node.type.create(attrs, null, node.marks);\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new _AttrStep(this.pos, this.attr, doc.nodeAt(this.pos).attrs[this.attr]);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new _AttrStep(pos.pos, this.attr, this.value);\n }\n toJSON() {\n return { stepType: \"attr\", pos: this.pos, attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\" || typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for AttrStep.fromJSON\");\n return new _AttrStep(json.pos, json.attr, json.value);\n }\n};\nStep.jsonID(\"attr\", AttrStep);\nvar DocAttrStep = class _DocAttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(attr, value) {\n super();\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let attrs = /* @__PURE__ */ Object.create(null);\n for (let name in doc.attrs)\n attrs[name] = doc.attrs[name];\n attrs[this.attr] = this.value;\n let updated = doc.type.create(attrs, doc.content, doc.marks);\n return StepResult.ok(updated);\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new _DocAttrStep(this.attr, doc.attrs[this.attr]);\n }\n map(mapping) {\n return this;\n }\n toJSON() {\n return { stepType: \"docAttr\", attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for DocAttrStep.fromJSON\");\n return new _DocAttrStep(json.attr, json.value);\n }\n};\nStep.jsonID(\"docAttr\", DocAttrStep);\nvar TransformError = class extends Error {\n};\nTransformError = function TransformError2(message) {\n let err = Error.call(this, message);\n err.__proto__ = TransformError2.prototype;\n return err;\n};\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\nTransformError.prototype.name = \"TransformError\";\n\n// ../../node_modules/.pnpm/prosemirror-state@1.4.4/node_modules/prosemirror-state/dist/index.js\nvar classesById = /* @__PURE__ */ Object.create(null);\nvar Selection = class {\n /**\n Initialize a selection with the head and anchor and ranges. If no\n ranges are given, constructs a single range across `$anchor` and\n `$head`.\n */\n constructor($anchor, $head, ranges) {\n this.$anchor = $anchor;\n this.$head = $head;\n this.ranges = ranges || [new SelectionRange($anchor.min($head), $anchor.max($head))];\n }\n /**\n The selection's anchor, as an unresolved position.\n */\n get anchor() {\n return this.$anchor.pos;\n }\n /**\n The selection's head.\n */\n get head() {\n return this.$head.pos;\n }\n /**\n The lower bound of the selection's main range.\n */\n get from() {\n return this.$from.pos;\n }\n /**\n The upper bound of the selection's main range.\n */\n get to() {\n return this.$to.pos;\n }\n /**\n The resolved lower bound of the selection's main range.\n */\n get $from() {\n return this.ranges[0].$from;\n }\n /**\n The resolved upper bound of the selection's main range.\n */\n get $to() {\n return this.ranges[0].$to;\n }\n /**\n Indicates whether the selection contains any content.\n */\n get empty() {\n let ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++)\n if (ranges[i].$from.pos != ranges[i].$to.pos)\n return false;\n return true;\n }\n /**\n Get the content of this selection as a slice.\n */\n content() {\n return this.$from.doc.slice(this.from, this.to, true);\n }\n /**\n Replace the selection with a slice or, if no slice is given,\n delete the selection. Will append to the given transaction.\n */\n replace(tr, content = Slice.empty) {\n let lastNode = content.content.lastChild, lastParent = null;\n for (let i = 0; i < content.openEnd; i++) {\n lastParent = lastNode;\n lastNode = lastNode.lastChild;\n }\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n tr.replaceRange(mapping.map($from.pos), mapping.map($to.pos), i ? Slice.empty : content);\n if (i == 0)\n selectionToInsertionEnd(tr, mapFrom, (lastNode ? lastNode.isInline : lastParent && lastParent.isTextblock) ? -1 : 1);\n }\n }\n /**\n Replace the selection with the given node, appending the changes\n to the given transaction.\n */\n replaceWith(tr, node) {\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n let from = mapping.map($from.pos), to = mapping.map($to.pos);\n if (i) {\n tr.deleteRange(from, to);\n } else {\n tr.replaceRangeWith(from, to, node);\n selectionToInsertionEnd(tr, mapFrom, node.isInline ? -1 : 1);\n }\n }\n }\n /**\n Find a valid cursor or leaf node selection starting at the given\n position and searching back if `dir` is negative, and forward if\n positive. When `textOnly` is true, only consider cursor\n selections. Will return null when no valid selection position is\n found.\n */\n static findFrom($pos, dir, textOnly = false) {\n let inner = $pos.parent.inlineContent ? new TextSelection($pos) : findSelectionIn($pos.node(0), $pos.parent, $pos.pos, $pos.index(), dir, textOnly);\n if (inner)\n return inner;\n for (let depth = $pos.depth - 1; depth >= 0; depth--) {\n let found2 = dir < 0 ? findSelectionIn($pos.node(0), $pos.node(depth), $pos.before(depth + 1), $pos.index(depth), dir, textOnly) : findSelectionIn($pos.node(0), $pos.node(depth), $pos.after(depth + 1), $pos.index(depth) + 1, dir, textOnly);\n if (found2)\n return found2;\n }\n return null;\n }\n /**\n Find a valid cursor or leaf node selection near the given\n position. Searches forward first by default, but if `bias` is\n negative, it will search backwards first.\n */\n static near($pos, bias = 1) {\n return this.findFrom($pos, bias) || this.findFrom($pos, -bias) || new AllSelection($pos.node(0));\n }\n /**\n Find the cursor or leaf node selection closest to the start of\n the given document. Will return an\n [`AllSelection`](https://prosemirror.net/docs/ref/#state.AllSelection) if no valid position\n exists.\n */\n static atStart(doc) {\n return findSelectionIn(doc, doc, 0, 0, 1) || new AllSelection(doc);\n }\n /**\n Find the cursor or leaf node selection closest to the end of the\n given document.\n */\n static atEnd(doc) {\n return findSelectionIn(doc, doc, doc.content.size, doc.childCount, -1) || new AllSelection(doc);\n }\n /**\n Deserialize the JSON representation of a selection. Must be\n implemented for custom classes (as a static class method).\n */\n static fromJSON(doc, json) {\n if (!json || !json.type)\n throw new RangeError(\"Invalid input for Selection.fromJSON\");\n let cls = classesById[json.type];\n if (!cls)\n throw new RangeError(`No selection type ${json.type} defined`);\n return cls.fromJSON(doc, json);\n }\n /**\n To be able to deserialize selections from JSON, custom selection\n classes must register themselves with an ID string, so that they\n can be disambiguated. Try to pick something that's unlikely to\n clash with classes from other modules.\n */\n static jsonID(id, selectionClass) {\n if (id in classesById)\n throw new RangeError(\"Duplicate use of selection JSON ID \" + id);\n classesById[id] = selectionClass;\n selectionClass.prototype.jsonID = id;\n return selectionClass;\n }\n /**\n Get a [bookmark](https://prosemirror.net/docs/ref/#state.SelectionBookmark) for this selection,\n which is a value that can be mapped without having access to a\n current document, and later resolved to a real selection for a\n given document again. (This is used mostly by the history to\n track and restore old selections.) The default implementation of\n this method just converts the selection to a text selection and\n returns the bookmark for that.\n */\n getBookmark() {\n return TextSelection.between(this.$anchor, this.$head).getBookmark();\n }\n};\nSelection.prototype.visible = true;\nvar SelectionRange = class {\n /**\n Create a range.\n */\n constructor($from, $to) {\n this.$from = $from;\n this.$to = $to;\n }\n};\nvar warnedAboutTextSelection = false;\nfunction checkTextSelection($pos) {\n if (!warnedAboutTextSelection && !$pos.parent.inlineContent) {\n warnedAboutTextSelection = true;\n console[\"warn\"](\"TextSelection endpoint not pointing into a node with inline content (\" + $pos.parent.type.name + \")\");\n }\n}\nvar TextSelection = class _TextSelection extends Selection {\n /**\n Construct a text selection between the given points.\n */\n constructor($anchor, $head = $anchor) {\n checkTextSelection($anchor);\n checkTextSelection($head);\n super($anchor, $head);\n }\n /**\n Returns a resolved position if this is a cursor selection (an\n empty text selection), and null otherwise.\n */\n get $cursor() {\n return this.$anchor.pos == this.$head.pos ? this.$head : null;\n }\n map(doc, mapping) {\n let $head = doc.resolve(mapping.map(this.head));\n if (!$head.parent.inlineContent)\n return Selection.near($head);\n let $anchor = doc.resolve(mapping.map(this.anchor));\n return new _TextSelection($anchor.parent.inlineContent ? $anchor : $head, $head);\n }\n replace(tr, content = Slice.empty) {\n super.replace(tr, content);\n if (content == Slice.empty) {\n let marks = this.$from.marksAcross(this.$to);\n if (marks)\n tr.ensureMarks(marks);\n }\n }\n eq(other) {\n return other instanceof _TextSelection && other.anchor == this.anchor && other.head == this.head;\n }\n getBookmark() {\n return new TextBookmark(this.anchor, this.head);\n }\n toJSON() {\n return { type: \"text\", anchor: this.anchor, head: this.head };\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\" || typeof json.head != \"number\")\n throw new RangeError(\"Invalid input for TextSelection.fromJSON\");\n return new _TextSelection(doc.resolve(json.anchor), doc.resolve(json.head));\n }\n /**\n Create a text selection from non-resolved positions.\n */\n static create(doc, anchor, head = anchor) {\n let $anchor = doc.resolve(anchor);\n return new this($anchor, head == anchor ? $anchor : doc.resolve(head));\n }\n /**\n Return a text selection that spans the given positions or, if\n they aren't text positions, find a text selection near them.\n `bias` determines whether the method searches forward (default)\n or backwards (negative number) first. Will fall back to calling\n [`Selection.near`](https://prosemirror.net/docs/ref/#state.Selection^near) when the document\n doesn't contain a valid text position.\n */\n static between($anchor, $head, bias) {\n let dPos = $anchor.pos - $head.pos;\n if (!bias || dPos)\n bias = dPos >= 0 ? 1 : -1;\n if (!$head.parent.inlineContent) {\n let found2 = Selection.findFrom($head, bias, true) || Selection.findFrom($head, -bias, true);\n if (found2)\n $head = found2.$head;\n else\n return Selection.near($head, bias);\n }\n if (!$anchor.parent.inlineContent) {\n if (dPos == 0) {\n $anchor = $head;\n } else {\n $anchor = (Selection.findFrom($anchor, -bias, true) || Selection.findFrom($anchor, bias, true)).$anchor;\n if ($anchor.pos < $head.pos != dPos < 0)\n $anchor = $head;\n }\n }\n return new _TextSelection($anchor, $head);\n }\n};\nSelection.jsonID(\"text\", TextSelection);\nvar TextBookmark = class _TextBookmark {\n constructor(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n }\n map(mapping) {\n return new _TextBookmark(mapping.map(this.anchor), mapping.map(this.head));\n }\n resolve(doc) {\n return TextSelection.between(doc.resolve(this.anchor), doc.resolve(this.head));\n }\n};\nvar NodeSelection = class _NodeSelection extends Selection {\n /**\n Create a node selection. Does not verify the validity of its\n argument.\n */\n constructor($pos) {\n let node = $pos.nodeAfter;\n let $end = $pos.node(0).resolve($pos.pos + node.nodeSize);\n super($pos, $end);\n this.node = node;\n }\n map(doc, mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n let $pos = doc.resolve(pos);\n if (deleted)\n return Selection.near($pos);\n return new _NodeSelection($pos);\n }\n content() {\n return new Slice(Fragment.from(this.node), 0, 0);\n }\n eq(other) {\n return other instanceof _NodeSelection && other.anchor == this.anchor;\n }\n toJSON() {\n return { type: \"node\", anchor: this.anchor };\n }\n getBookmark() {\n return new NodeBookmark(this.anchor);\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\")\n throw new RangeError(\"Invalid input for NodeSelection.fromJSON\");\n return new _NodeSelection(doc.resolve(json.anchor));\n }\n /**\n Create a node selection from non-resolved positions.\n */\n static create(doc, from) {\n return new _NodeSelection(doc.resolve(from));\n }\n /**\n Determines whether the given node may be selected as a node\n selection.\n */\n static isSelectable(node) {\n return !node.isText && node.type.spec.selectable !== false;\n }\n};\nNodeSelection.prototype.visible = false;\nSelection.jsonID(\"node\", NodeSelection);\nvar NodeBookmark = class _NodeBookmark {\n constructor(anchor) {\n this.anchor = anchor;\n }\n map(mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n return deleted ? new TextBookmark(pos, pos) : new _NodeBookmark(pos);\n }\n resolve(doc) {\n let $pos = doc.resolve(this.anchor), node = $pos.nodeAfter;\n if (node && NodeSelection.isSelectable(node))\n return new NodeSelection($pos);\n return Selection.near($pos);\n }\n};\nvar AllSelection = class _AllSelection extends Selection {\n /**\n Create an all-selection over the given document.\n */\n constructor(doc) {\n super(doc.resolve(0), doc.resolve(doc.content.size));\n }\n replace(tr, content = Slice.empty) {\n if (content == Slice.empty) {\n tr.delete(0, tr.doc.content.size);\n let sel = Selection.atStart(tr.doc);\n if (!sel.eq(tr.selection))\n tr.setSelection(sel);\n } else {\n super.replace(tr, content);\n }\n }\n toJSON() {\n return { type: \"all\" };\n }\n /**\n @internal\n */\n static fromJSON(doc) {\n return new _AllSelection(doc);\n }\n map(doc) {\n return new _AllSelection(doc);\n }\n eq(other) {\n return other instanceof _AllSelection;\n }\n getBookmark() {\n return AllBookmark;\n }\n};\nSelection.jsonID(\"all\", AllSelection);\nvar AllBookmark = {\n map() {\n return this;\n },\n resolve(doc) {\n return new AllSelection(doc);\n }\n};\nfunction findSelectionIn(doc, node, pos, index, dir, text = false) {\n if (node.inlineContent)\n return TextSelection.create(doc, pos);\n for (let i = index - (dir > 0 ? 0 : 1); dir > 0 ? i < node.childCount : i >= 0; i += dir) {\n let child = node.child(i);\n if (!child.isAtom) {\n let inner = findSelectionIn(doc, child, pos + dir, dir < 0 ? child.childCount : 0, dir, text);\n if (inner)\n return inner;\n } else if (!text && NodeSelection.isSelectable(child)) {\n return NodeSelection.create(doc, pos - (dir < 0 ? child.nodeSize : 0));\n }\n pos += child.nodeSize * dir;\n }\n return null;\n}\nfunction selectionToInsertionEnd(tr, startLen, bias) {\n let last = tr.steps.length - 1;\n if (last < startLen)\n return;\n let step = tr.steps[last];\n if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep))\n return;\n let map = tr.mapping.maps[last], end;\n map.forEach((_from, _to, _newFrom, newTo) => {\n if (end == null)\n end = newTo;\n });\n tr.setSelection(Selection.near(tr.doc.resolve(end), bias));\n}\nfunction bind(f, self) {\n return !self || !f ? f : f.bind(self);\n}\nvar FieldDesc = class {\n constructor(name, desc, self) {\n this.name = name;\n this.init = bind(desc.init, self);\n this.apply = bind(desc.apply, self);\n }\n};\nvar baseFields = [\n new FieldDesc(\"doc\", {\n init(config) {\n return config.doc || config.schema.topNodeType.createAndFill();\n },\n apply(tr) {\n return tr.doc;\n }\n }),\n new FieldDesc(\"selection\", {\n init(config, instance) {\n return config.selection || Selection.atStart(instance.doc);\n },\n apply(tr) {\n return tr.selection;\n }\n }),\n new FieldDesc(\"storedMarks\", {\n init(config) {\n return config.storedMarks || null;\n },\n apply(tr, _marks, _old, state) {\n return state.selection.$cursor ? tr.storedMarks : null;\n }\n }),\n new FieldDesc(\"scrollToSelection\", {\n init() {\n return 0;\n },\n apply(tr, prev) {\n return tr.scrolledIntoView ? prev + 1 : prev;\n }\n })\n];\n\n// src/handleBackspace.ts\nvar handleBackspace = (editor, type) => {\n var _a;\n const { state, view } = editor;\n const { selection } = state;\n if (!selection.empty) return false;\n const { $from } = selection;\n if ($from.parentOffset !== 0) return false;\n const parentDepth = $from.depth - 1;\n const parent = $from.node(parentDepth);\n const index = $from.index(parentDepth);\n if (index === 0) return false;\n if (parent.type === type) {\n return editor.commands.lift(type.name);\n }\n const previous = parent.child(index - 1);\n if (previous.type !== type || !((_a = previous.lastChild) == null ? void 0 : _a.isTextblock)) {\n return false;\n }\n const blockStart = $from.before();\n const insideBlockquoteEnd = blockStart - 1;\n const targetPos = insideBlockquoteEnd - 1;\n const { tr } = state;\n tr.delete(blockStart, $from.after()).insert(targetPos, $from.parent.content);\n tr.setSelection(TextSelection.create(tr.doc, targetPos));\n view.dispatch(tr.scrollIntoView());\n return true;\n};\n\n// src/blockquote.tsx\nimport { jsx } from \"@tiptap/core/jsx-runtime\";\nvar inputRegex = /^\\s*>\\s$/;\nvar Blockquote = Node2.create({\n name: \"blockquote\",\n addOptions() {\n return {\n HTMLAttributes: {}\n };\n },\n content: \"block+\",\n group: \"block\",\n defining: true,\n parseHTML() {\n return [{ tag: \"blockquote\" }];\n },\n renderHTML({ HTMLAttributes }) {\n return /* @__PURE__ */ jsx(\"blockquote\", { ...mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), children: /* @__PURE__ */ jsx(\"slot\", {}) });\n },\n parseMarkdown: (token, helpers) => {\n var _a;\n const parseBlockChildren = (_a = helpers.parseBlockChildren) != null ? _a : helpers.parseChildren;\n return helpers.createNode(\"blockquote\", void 0, parseBlockChildren(token.tokens || []));\n },\n renderMarkdown: (node, h) => {\n if (!node.content) {\n return \"\";\n }\n const prefix = \">\";\n const result = [];\n node.content.forEach((child, index) => {\n var _a, _b;\n const childContent = (_b = (_a = h.renderChild) == null ? void 0 : _a.call(h, child, index)) != null ? _b : h.renderChildren([child]);\n const lines = childContent.split(\"\\n\");\n const linesWithPrefix = lines.map((line) => {\n if (line.trim() === \"\") {\n return prefix;\n }\n return `${prefix} ${line}`;\n });\n result.push(linesWithPrefix.join(\"\\n\"));\n });\n return result.join(`\n${prefix}\n`);\n },\n addCommands() {\n return {\n setBlockquote: () => ({ commands }) => {\n return commands.wrapIn(this.name);\n },\n toggleBlockquote: () => ({ commands }) => {\n return commands.toggleWrap(this.name);\n },\n unsetBlockquote: () => ({ commands }) => {\n return commands.lift(this.name);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Shift-b\": () => this.editor.commands.toggleBlockquote(),\n Backspace: () => handleBackspace(this.editor, this.type)\n };\n },\n addInputRules() {\n return [\n wrappingInputRule({\n find: inputRegex,\n type: this.type\n })\n ];\n }\n});\n\n// src/index.ts\nvar index_default = Blockquote;\nexport {\n Blockquote,\n index_default as default,\n inputRegex\n};\n//# sourceMappingURL=index.js.map","// src/bold.tsx\nimport { Mark, markInputRule, markPasteRule, mergeAttributes } from \"@tiptap/core\";\nimport { jsx } from \"@tiptap/core/jsx-runtime\";\nvar starInputRegex = /(?:^|\\s)(\\*\\*(?!\\s+\\*\\*)((?:[^*]+))\\*\\*(?!\\s+\\*\\*))$/;\nvar starPasteRegex = /(?:^|\\s)(\\*\\*(?!\\s+\\*\\*)((?:[^*]+))\\*\\*(?!\\s+\\*\\*))/g;\nvar underscoreInputRegex = /(?:^|\\s)(__(?!\\s+__)((?:[^_]+))__(?!\\s+__))$/;\nvar underscorePasteRegex = /(?:^|\\s)(__(?!\\s+__)((?:[^_]+))__(?!\\s+__))/g;\nvar Bold = Mark.create({\n name: \"bold\",\n addOptions() {\n return {\n HTMLAttributes: {}\n };\n },\n parseHTML() {\n return [\n {\n tag: \"strong\"\n },\n {\n tag: \"b\",\n getAttrs: (node) => node.style.fontWeight !== \"normal\" && null\n },\n {\n style: \"font-weight=400\",\n clearMark: (mark) => mark.type.name === this.name\n },\n {\n style: \"font-weight\",\n getAttrs: (value) => /^(bold(er)?|[5-9]\\d{2,})$/.test(value) && null\n }\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return /* @__PURE__ */ jsx(\"strong\", { ...mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), children: /* @__PURE__ */ jsx(\"slot\", {}) });\n },\n markdownTokenName: \"strong\",\n parseMarkdown: (token, helpers) => {\n return helpers.applyMark(\"bold\", helpers.parseInline(token.tokens || []));\n },\n markdownOptions: {\n htmlReopen: {\n open: \"<strong>\",\n close: \"</strong>\"\n }\n },\n renderMarkdown: (node, h) => {\n return `**${h.renderChildren(node)}**`;\n },\n addCommands() {\n return {\n setBold: () => ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleBold: () => ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n unsetBold: () => ({ commands }) => {\n return commands.unsetMark(this.name);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-b\": () => this.editor.commands.toggleBold(),\n \"Mod-B\": () => this.editor.commands.toggleBold()\n };\n },\n addInputRules() {\n return [\n markInputRule({\n find: starInputRegex,\n type: this.type\n }),\n markInputRule({\n find: underscoreInputRegex,\n type: this.type\n })\n ];\n },\n addPasteRules() {\n return [\n markPasteRule({\n find: starPasteRegex,\n type: this.type\n }),\n markPasteRule({\n find: underscorePasteRegex,\n type: this.type\n })\n ];\n }\n});\n\n// src/index.ts\nvar index_default = Bold;\nexport {\n Bold,\n index_default as default,\n starInputRegex,\n starPasteRegex,\n underscoreInputRegex,\n underscorePasteRegex\n};\n//# sourceMappingURL=index.js.map","// src/code-block.ts\nimport { mergeAttributes, Node, textblockTypeInputRule } from \"@tiptap/core\";\nimport { Plugin, PluginKey, Selection, TextSelection } from \"@tiptap/pm/state\";\nvar DEFAULT_TAB_SIZE = 4;\nvar backtickInputRegex = /^```([a-z]+)?[\\s\\n]$/;\nvar tildeInputRegex = /^~~~([a-z]+)?[\\s\\n]$/;\nvar CodeBlock = Node.create({\n name: \"codeBlock\",\n addOptions() {\n return {\n languageClassPrefix: \"language-\",\n exitOnTripleEnter: true,\n exitOnArrowDown: true,\n defaultLanguage: null,\n enableTabIndentation: false,\n tabSize: DEFAULT_TAB_SIZE,\n HTMLAttributes: {}\n };\n },\n content: \"text*\",\n marks: \"\",\n group: \"block\",\n code: true,\n defining: true,\n addAttributes() {\n return {\n language: {\n default: this.options.defaultLanguage,\n parseHTML: (element) => {\n var _a;\n const { languageClassPrefix } = this.options;\n if (!languageClassPrefix) {\n return null;\n }\n const classNames = [...((_a = element.firstElementChild) == null ? void 0 : _a.classList) || []];\n const languages = classNames.filter((className) => className.startsWith(languageClassPrefix)).map((className) => className.replace(languageClassPrefix, \"\"));\n const language = languages[0];\n if (!language) {\n return null;\n }\n return language;\n },\n rendered: false\n }\n };\n },\n parseHTML() {\n return [\n {\n tag: \"pre\",\n preserveWhitespace: \"full\"\n }\n ];\n },\n renderHTML({ node, HTMLAttributes }) {\n return [\n \"pre\",\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n [\n \"code\",\n {\n class: node.attrs.language ? this.options.languageClassPrefix + node.attrs.language : null\n },\n 0\n ]\n ];\n },\n markdownTokenName: \"code\",\n parseMarkdown: (token, helpers) => {\n var _a, _b;\n if (((_a = token.raw) == null ? void 0 : _a.startsWith(\"```\")) === false && ((_b = token.raw) == null ? void 0 : _b.startsWith(\"~~~\")) === false && token.codeBlockStyle !== \"indented\") {\n return [];\n }\n return helpers.createNode(\n \"codeBlock\",\n { language: token.lang || null },\n token.text ? [helpers.createTextNode(token.text)] : []\n );\n },\n renderMarkdown: (node, h) => {\n var _a;\n let output = \"\";\n const language = ((_a = node.attrs) == null ? void 0 : _a.language) || \"\";\n if (!node.content) {\n output = `\\`\\`\\`${language}\n\n\\`\\`\\``;\n } else {\n const lines = [`\\`\\`\\`${language}`, h.renderChildren(node.content), \"```\"];\n output = lines.join(\"\\n\");\n }\n return output;\n },\n addCommands() {\n return {\n setCodeBlock: (attributes) => ({ commands }) => {\n return commands.setNode(this.name, attributes);\n },\n toggleCodeBlock: (attributes) => ({ commands }) => {\n return commands.toggleNode(this.name, \"paragraph\", attributes);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Alt-c\": () => this.editor.commands.toggleCodeBlock(),\n // remove code block when at start of document or code block is empty\n Backspace: () => {\n const { empty, $anchor } = this.editor.state.selection;\n const isAtStart = $anchor.pos === 1;\n if (!empty || $anchor.parent.type.name !== this.name) {\n return false;\n }\n if (isAtStart || !$anchor.parent.textContent.length) {\n return this.editor.commands.clearNodes();\n }\n return false;\n },\n // handle tab indentation\n Tab: ({ editor }) => {\n var _a;\n if (!this.options.enableTabIndentation) {\n return false;\n }\n const tabSize = (_a = this.options.tabSize) != null ? _a : DEFAULT_TAB_SIZE;\n const { state } = editor;\n const { selection } = state;\n const { $from, empty } = selection;\n if ($from.parent.type !== this.type) {\n return false;\n }\n const indent = \" \".repeat(tabSize);\n if (empty) {\n return editor.commands.insertContent(indent);\n }\n return editor.commands.command(({ tr }) => {\n const { from, to } = selection;\n const text = state.doc.textBetween(from, to, \"\\n\", \"\\n\");\n const lines = text.split(\"\\n\");\n const indentedText = lines.map((line) => indent + line).join(\"\\n\");\n tr.replaceWith(from, to, state.schema.text(indentedText));\n return true;\n });\n },\n // handle shift+tab reverse indentation\n \"Shift-Tab\": ({ editor }) => {\n var _a;\n if (!this.options.enableTabIndentation) {\n return false;\n }\n const tabSize = (_a = this.options.tabSize) != null ? _a : DEFAULT_TAB_SIZE;\n const { state } = editor;\n const { selection } = state;\n const { $from, empty } = selection;\n if ($from.parent.type !== this.type) {\n return false;\n }\n if (empty) {\n return editor.commands.command(({ tr }) => {\n var _a2;\n const { pos } = $from;\n const codeBlockStart = $from.start();\n const codeBlockEnd = $from.end();\n const allText = state.doc.textBetween(codeBlockStart, codeBlockEnd, \"\\n\", \"\\n\");\n const lines = allText.split(\"\\n\");\n let currentLineIndex = 0;\n let charCount = 0;\n const relativeCursorPos = pos - codeBlockStart;\n for (let i = 0; i < lines.length; i += 1) {\n if (charCount + lines[i].length >= relativeCursorPos) {\n currentLineIndex = i;\n break;\n }\n charCount += lines[i].length + 1;\n }\n const currentLine = lines[currentLineIndex];\n const leadingSpaces = ((_a2 = currentLine.match(/^ */)) == null ? void 0 : _a2[0]) || \"\";\n const spacesToRemove = Math.min(leadingSpaces.length, tabSize);\n if (spacesToRemove === 0) {\n return true;\n }\n let lineStartPos = codeBlockStart;\n for (let i = 0; i < currentLineIndex; i += 1) {\n lineStartPos += lines[i].length + 1;\n }\n tr.delete(lineStartPos, lineStartPos + spacesToRemove);\n const cursorPosInLine = pos - lineStartPos;\n if (cursorPosInLine <= spacesToRemove) {\n tr.setSelection(TextSelection.create(tr.doc, lineStartPos));\n }\n return true;\n });\n }\n return editor.commands.command(({ tr }) => {\n const { from, to } = selection;\n const text = state.doc.textBetween(from, to, \"\\n\", \"\\n\");\n const lines = text.split(\"\\n\");\n const reverseIndentText = lines.map((line) => {\n var _a2;\n const leadingSpaces = ((_a2 = line.match(/^ */)) == null ? void 0 : _a2[0]) || \"\";\n const spacesToRemove = Math.min(leadingSpaces.length, tabSize);\n return line.slice(spacesToRemove);\n }).join(\"\\n\");\n tr.replaceWith(from, to, state.schema.text(reverseIndentText));\n return true;\n });\n },\n // exit node on triple enter\n Enter: ({ editor }) => {\n if (!this.options.exitOnTripleEnter) {\n return false;\n }\n const { state } = editor;\n const { selection } = state;\n const { $from, empty } = selection;\n if (!empty || $from.parent.type !== this.type) {\n return false;\n }\n const isAtEnd = $from.parentOffset === $from.parent.nodeSize - 2;\n const endsWithDoubleNewline = $from.parent.textContent.endsWith(\"\\n\\n\");\n if (!isAtEnd || !endsWithDoubleNewline) {\n return false;\n }\n return editor.chain().command(({ tr }) => {\n tr.delete($from.pos - 2, $from.pos);\n return true;\n }).exitCode().run();\n },\n // exit node on arrow down\n ArrowDown: ({ editor }) => {\n if (!this.options.exitOnArrowDown) {\n return false;\n }\n const { state } = editor;\n const { selection, doc } = state;\n const { $from, empty } = selection;\n if (!empty || $from.parent.type !== this.type) {\n return false;\n }\n const isAtEnd = $from.parentOffset === $from.parent.nodeSize - 2;\n if (!isAtEnd) {\n return false;\n }\n const after = $from.after();\n if (after === void 0) {\n return false;\n }\n const nodeAfter = doc.nodeAt(after);\n if (nodeAfter) {\n return editor.commands.command(({ tr }) => {\n tr.setSelection(Selection.near(doc.resolve(after)));\n return true;\n });\n }\n return editor.commands.exitCode();\n }\n };\n },\n addInputRules() {\n return [\n textblockTypeInputRule({\n find: backtickInputRegex,\n type: this.type,\n getAttributes: (match) => ({\n language: match[1]\n })\n }),\n textblockTypeInputRule({\n find: tildeInputRegex,\n type: this.type,\n getAttributes: (match) => ({\n language: match[1]\n })\n })\n ];\n },\n addProseMirrorPlugins() {\n return [\n // this plugin creates a code block for pasted content from VS Code\n // we can also detect the copied code language\n new Plugin({\n key: new PluginKey(\"codeBlockVSCodeHandler\"),\n props: {\n handlePaste: (view, event) => {\n if (!event.clipboardData) {\n return false;\n }\n if (this.editor.isActive(this.type.name)) {\n return false;\n }\n const text = event.clipboardData.getData(\"text/plain\");\n const vscode = event.clipboardData.getData(\"vscode-editor-data\");\n const vscodeData = vscode ? JSON.parse(vscode) : void 0;\n const language = vscodeData == null ? void 0 : vscodeData.mode;\n if (!text || !language) {\n return false;\n }\n const { tr, schema } = view.state;\n const textNode = schema.text(text.replace(/\\r\\n?/g, \"\\n\"));\n tr.replaceSelectionWith(this.type.create({ language }, textNode));\n if (tr.selection.$from.parent.type !== this.type) {\n tr.setSelection(\n TextSelection.near(tr.doc.resolve(Math.max(0, tr.selection.from - 2)))\n );\n }\n tr.setMeta(\"paste\", true);\n view.dispatch(tr);\n return true;\n }\n }\n })\n ];\n }\n});\n\n// src/index.ts\nvar index_default = CodeBlock;\nexport {\n CodeBlock,\n backtickInputRegex,\n index_default as default,\n tildeInputRegex\n};\n//# sourceMappingURL=index.js.map","// src/hard-break.ts\nimport { mergeAttributes, Node } from \"@tiptap/core\";\nvar HardBreak = Node.create({\n name: \"hardBreak\",\n markdownTokenName: \"br\",\n addOptions() {\n return {\n keepMarks: true,\n HTMLAttributes: {}\n };\n },\n inline: true,\n group: \"inline\",\n selectable: false,\n linebreakReplacement: true,\n parseHTML() {\n return [{ tag: \"br\" }];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"br\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)];\n },\n renderText() {\n return \"\\n\";\n },\n renderMarkdown: () => ` \n`,\n parseMarkdown: () => {\n return {\n type: \"hardBreak\"\n };\n },\n addCommands() {\n return {\n setHardBreak: () => ({ commands, chain, state, editor }) => {\n return commands.first([\n () => commands.exitCode(),\n () => commands.command(() => {\n const { selection, storedMarks } = state;\n if (selection.$from.parent.type.spec.isolating) {\n return false;\n }\n const { keepMarks } = this.options;\n const { splittableMarks } = editor.extensionManager;\n const marks = storedMarks || selection.$to.parentOffset && selection.$from.marks();\n return chain().insertContent({ type: this.name }).command(({ tr, dispatch }) => {\n if (dispatch && marks && keepMarks) {\n const filteredMarks = marks.filter(\n (mark) => splittableMarks.includes(mark.type.name)\n );\n tr.ensureMarks(filteredMarks);\n }\n return true;\n }).run();\n })\n ]);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Enter\": () => this.editor.commands.setHardBreak(),\n \"Shift-Enter\": () => this.editor.commands.setHardBreak()\n };\n }\n});\n\n// src/index.ts\nvar index_default = HardBreak;\nexport {\n HardBreak,\n index_default as default\n};\n//# sourceMappingURL=index.js.map","// src/heading.ts\nimport { mergeAttributes, Node, textblockTypeInputRule } from \"@tiptap/core\";\nvar Heading = Node.create({\n name: \"heading\",\n addOptions() {\n return {\n levels: [1, 2, 3, 4, 5, 6],\n HTMLAttributes: {}\n };\n },\n content: \"inline*\",\n group: \"block\",\n defining: true,\n addAttributes() {\n return {\n level: {\n default: 1,\n rendered: false\n }\n };\n },\n parseHTML() {\n return this.options.levels.map((level) => ({\n tag: `h${level}`,\n attrs: { level }\n }));\n },\n renderHTML({ node, HTMLAttributes }) {\n const hasLevel = this.options.levels.includes(node.attrs.level);\n const level = hasLevel ? node.attrs.level : this.options.levels[0];\n return [`h${level}`, mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n parseMarkdown: (token, helpers) => {\n return helpers.createNode(\n \"heading\",\n { level: token.depth || 1 },\n helpers.parseInline(token.tokens || [])\n );\n },\n renderMarkdown: (node, h) => {\n var _a;\n const level = ((_a = node.attrs) == null ? void 0 : _a.level) ? parseInt(node.attrs.level, 10) : 1;\n const headingChars = \"#\".repeat(level);\n if (!node.content) {\n return \"\";\n }\n return `${headingChars} ${h.renderChildren(node.content)}`;\n },\n addCommands() {\n return {\n setHeading: (attributes) => ({ commands }) => {\n if (!this.options.levels.includes(attributes.level)) {\n return false;\n }\n return commands.setNode(this.name, attributes);\n },\n toggleHeading: (attributes) => ({ commands }) => {\n if (!this.options.levels.includes(attributes.level)) {\n return false;\n }\n return commands.toggleNode(this.name, \"paragraph\", attributes);\n }\n };\n },\n addKeyboardShortcuts() {\n return this.options.levels.reduce(\n (items, level) => ({\n ...items,\n [`Mod-Alt-${level}`]: () => this.editor.commands.toggleHeading({ level })\n }),\n {}\n );\n },\n addInputRules() {\n return this.options.levels.map((level) => {\n return textblockTypeInputRule({\n find: new RegExp(`^(#{${Math.min(...this.options.levels)},${level}})\\\\s$`),\n type: this.type,\n getAttributes: {\n level\n }\n });\n });\n }\n});\n\n// src/index.ts\nvar index_default = Heading;\nexport {\n Heading,\n index_default as default\n};\n//# sourceMappingURL=index.js.map","// src/horizontal-rule.ts\nimport { canInsertNode, isNodeSelection, mergeAttributes, Node, nodeInputRule } from \"@tiptap/core\";\nimport { NodeSelection, TextSelection } from \"@tiptap/pm/state\";\nvar HorizontalRule = Node.create({\n name: \"horizontalRule\",\n addOptions() {\n return {\n HTMLAttributes: {},\n nextNodeType: \"paragraph\"\n };\n },\n group: \"block\",\n parseHTML() {\n return [{ tag: \"hr\" }];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"hr\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)];\n },\n markdownTokenName: \"hr\",\n parseMarkdown: (token, helpers) => {\n return helpers.createNode(\"horizontalRule\");\n },\n renderMarkdown: () => {\n return \"---\";\n },\n addCommands() {\n return {\n setHorizontalRule: () => ({ chain, state }) => {\n if (!canInsertNode(state, state.schema.nodes[this.name])) {\n return false;\n }\n const { selection } = state;\n const { $to: $originTo } = selection;\n const currentChain = chain();\n if (isNodeSelection(selection)) {\n currentChain.insertContentAt($originTo.pos, {\n type: this.name\n });\n } else {\n currentChain.insertContent({ type: this.name });\n }\n return currentChain.command(({ state: chainState, tr, dispatch }) => {\n if (dispatch) {\n const { $to } = tr.selection;\n const posAfter = $to.end();\n if ($to.nodeAfter) {\n if ($to.nodeAfter.isTextblock) {\n tr.setSelection(TextSelection.create(tr.doc, $to.pos + 1));\n } else if ($to.nodeAfter.isBlock) {\n tr.setSelection(NodeSelection.create(tr.doc, $to.pos));\n } else {\n tr.setSelection(TextSelection.create(tr.doc, $to.pos));\n }\n } else {\n const nodeType = chainState.schema.nodes[this.options.nextNodeType] || $to.parent.type.contentMatch.defaultType;\n const node = nodeType == null ? void 0 : nodeType.create();\n if (node) {\n tr.insert(posAfter, node);\n tr.setSelection(TextSelection.create(tr.doc, posAfter + 1));\n }\n }\n tr.scrollIntoView();\n }\n return true;\n }).run();\n }\n };\n },\n addInputRules() {\n return [\n nodeInputRule({\n find: /^(?:---|—-|___\\s|\\*\\*\\*\\s)$/,\n type: this.type\n })\n ];\n }\n});\n\n// src/index.ts\nvar index_default = HorizontalRule;\nexport {\n HorizontalRule,\n index_default as default\n};\n//# sourceMappingURL=index.js.map","// src/italic.ts\nimport { Mark, markInputRule, markPasteRule, mergeAttributes } from \"@tiptap/core\";\nvar starInputRegex = /(?:^|\\s)(\\*(?!\\s+\\*)((?:[^*]+))\\*(?!\\s+\\*))$/;\nvar starPasteRegex = /(?:^|\\s)(\\*(?!\\s+\\*)((?:[^*]+))\\*(?!\\s+\\*))/g;\nvar underscoreInputRegex = /(?:^|\\s)(_(?!\\s+_)((?:[^_]+))_(?!\\s+_))$/;\nvar underscorePasteRegex = /(?:^|\\s)(_(?!\\s+_)((?:[^_]+))_(?!\\s+_))/g;\nvar Italic = Mark.create({\n name: \"italic\",\n addOptions() {\n return {\n HTMLAttributes: {}\n };\n },\n parseHTML() {\n return [\n {\n tag: \"em\"\n },\n {\n tag: \"i\",\n getAttrs: (node) => node.style.fontStyle !== \"normal\" && null\n },\n {\n style: \"font-style=normal\",\n clearMark: (mark) => mark.type.name === this.name\n },\n {\n style: \"font-style=italic\"\n }\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"em\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addCommands() {\n return {\n setItalic: () => ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleItalic: () => ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n unsetItalic: () => ({ commands }) => {\n return commands.unsetMark(this.name);\n }\n };\n },\n markdownTokenName: \"em\",\n parseMarkdown: (token, helpers) => {\n return helpers.applyMark(\"italic\", helpers.parseInline(token.tokens || []));\n },\n markdownOptions: {\n htmlReopen: {\n open: \"<em>\",\n close: \"</em>\"\n }\n },\n renderMarkdown: (node, h) => {\n return `*${h.renderChildren(node)}*`;\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-i\": () => this.editor.commands.toggleItalic(),\n \"Mod-I\": () => this.editor.commands.toggleItalic()\n };\n },\n addInputRules() {\n return [\n markInputRule({\n find: starInputRegex,\n type: this.type\n }),\n markInputRule({\n find: underscoreInputRegex,\n type: this.type\n })\n ];\n },\n addPasteRules() {\n return [\n markPasteRule({\n find: starPasteRegex,\n type: this.type\n }),\n markPasteRule({\n find: underscorePasteRegex,\n type: this.type\n })\n ];\n }\n});\n\n// src/index.ts\nvar index_default = Italic;\nexport {\n Italic,\n index_default as default,\n starInputRegex,\n starPasteRegex,\n underscoreInputRegex,\n underscorePasteRegex\n};\n//# sourceMappingURL=index.js.map","// THIS FILE IS AUTOMATICALLY GENERATED DO NOT EDIT DIRECTLY\n// See update-tlds.js for encoding/decoding format\n// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\nconst encodedTlds = 'aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2odyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rck0msd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2oodside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2';\n// Internationalized domain names containing non-ASCII\nconst encodedUtlds = 'ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2';\n\n/**\n * Finite State Machine generation utilities\n */\n\n/**\n * @template T\n * @typedef {{ [group: string]: T[] }} Collections\n */\n\n/**\n * @typedef {{ [group: string]: true }} Flags\n */\n\n// Keys in scanner Collections instances\nconst numeric = 'numeric';\nconst ascii = 'ascii';\nconst alpha = 'alpha';\nconst asciinumeric = 'asciinumeric';\nconst alphanumeric = 'alphanumeric';\nconst domain = 'domain';\nconst emoji = 'emoji';\nconst scheme = 'scheme';\nconst slashscheme = 'slashscheme';\nconst whitespace = 'whitespace';\n\n/**\n * @template T\n * @param {string} name\n * @param {Collections<T>} groups to register in\n * @returns {T[]} Current list of tokens in the given collection\n */\nfunction registerGroup(name, groups) {\n if (!(name in groups)) {\n groups[name] = [];\n }\n return groups[name];\n}\n\n/**\n * @template T\n * @param {T} t token to add\n * @param {Collections<T>} groups\n * @param {Flags} flags\n */\nfunction addToGroups(t, flags, groups) {\n if (flags[numeric]) {\n flags[asciinumeric] = true;\n flags[alphanumeric] = true;\n }\n if (flags[ascii]) {\n flags[asciinumeric] = true;\n flags[alpha] = true;\n }\n if (flags[asciinumeric]) {\n flags[alphanumeric] = true;\n }\n if (flags[alpha]) {\n flags[alphanumeric] = true;\n }\n if (flags[alphanumeric]) {\n flags[domain] = true;\n }\n if (flags[emoji]) {\n flags[domain] = true;\n }\n for (const k in flags) {\n const group = registerGroup(k, groups);\n if (group.indexOf(t) < 0) {\n group.push(t);\n }\n }\n}\n\n/**\n * @template T\n * @param {T} t token to check\n * @param {Collections<T>} groups\n * @returns {Flags} group flags that contain this token\n */\nfunction flagsForToken(t, groups) {\n const result = {};\n for (const c in groups) {\n if (groups[c].indexOf(t) >= 0) {\n result[c] = true;\n }\n }\n return result;\n}\n\n/**\n * @template T\n * @typedef {null | T } Transition\n */\n\n/**\n * Define a basic state machine state. j is the list of character transitions,\n * jr is the list of regex-match transitions, jd is the default state to\n * transition to t is the accepting token type, if any. If this is the terminal\n * state, then it does not emit a token.\n *\n * The template type T represents the type of the token this state accepts. This\n * should be a string (such as of the token exports in `text.js`) or a\n * MultiToken subclass (from `multi.js`)\n *\n * @template T\n * @param {T} [token] Token that this state emits\n */\nfunction State(token = null) {\n // this.n = null; // DEBUG: State name\n /** @type {{ [input: string]: State<T> }} j */\n this.j = {}; // IMPLEMENTATION 1\n // this.j = []; // IMPLEMENTATION 2\n /** @type {[RegExp, State<T>][]} jr */\n this.jr = [];\n /** @type {?State<T>} jd */\n this.jd = null;\n /** @type {?T} t */\n this.t = token;\n}\n\n/**\n * Scanner token groups\n * @type Collections<string>\n */\nState.groups = {};\nState.prototype = {\n accepts() {\n return !!this.t;\n },\n /**\n * Follow an existing transition from the given input to the next state.\n * Does not mutate.\n * @param {string} input character or token type to transition on\n * @returns {?State<T>} the next state, if any\n */\n go(input) {\n const state = this;\n const nextState = state.j[input];\n if (nextState) {\n return nextState;\n }\n for (let i = 0; i < state.jr.length; i++) {\n const regex = state.jr[i][0];\n const nextState = state.jr[i][1]; // note: might be empty to prevent default jump\n if (nextState && regex.test(input)) {\n return nextState;\n }\n }\n // Nowhere left to jump! Return default, if any\n return state.jd;\n },\n /**\n * Whether the state has a transition for the given input. Set the second\n * argument to true to only look for an exact match (and not a default or\n * regular-expression-based transition)\n * @param {string} input\n * @param {boolean} exactOnly\n */\n has(input, exactOnly = false) {\n return exactOnly ? input in this.j : !!this.go(input);\n },\n /**\n * Short for \"transition all\"; create a transition from the array of items\n * in the given list to the same final resulting state.\n * @param {string | string[]} inputs Group of inputs to transition on\n * @param {Transition<T> | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n */\n ta(inputs, next, flags, groups) {\n for (let i = 0; i < inputs.length; i++) {\n this.tt(inputs[i], next, flags, groups);\n }\n },\n /**\n * Short for \"take regexp transition\"; defines a transition for this state\n * when it encounters a token which matches the given regular expression\n * @param {RegExp} regexp Regular expression transition (populate first)\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n tr(regexp, next, flags, groups) {\n groups = groups || State.groups;\n let nextState;\n if (next && next.j) {\n nextState = next;\n } else {\n // Token with maybe token groups\n nextState = new State(next);\n if (flags && groups) {\n addToGroups(next, flags, groups);\n }\n }\n this.jr.push([regexp, nextState]);\n return nextState;\n },\n /**\n * Short for \"take transitions\", will take as many sequential transitions as\n * the length of the given input and returns the\n * resulting final state.\n * @param {string | string[]} input\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n ts(input, next, flags, groups) {\n let state = this;\n const len = input.length;\n if (!len) {\n return state;\n }\n for (let i = 0; i < len - 1; i++) {\n state = state.tt(input[i]);\n }\n return state.tt(input[len - 1], next, flags, groups);\n },\n /**\n * Short for \"take transition\", this is a method for building/working with\n * state machines.\n *\n * If a state already exists for the given input, returns it.\n *\n * If a token is specified, that state will emit that token when reached by\n * the linkify engine.\n *\n * If no state exists, it will be initialized with some default transitions\n * that resemble existing default transitions.\n *\n * If a state is given for the second argument, that state will be\n * transitioned to on the given input regardless of what that input\n * previously did.\n *\n * Specify a token group flags to define groups that this token belongs to.\n * The token will be added to corresponding entires in the given groups\n * object.\n *\n * @param {string} input character, token type to transition on\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of groups\n * @returns {State<T>} taken after the given input\n */\n tt(input, next, flags, groups) {\n groups = groups || State.groups;\n const state = this;\n\n // Check if existing state given, just a basic transition\n if (next && next.j) {\n state.j[input] = next;\n return next;\n }\n const t = next;\n\n // Take the transition with the usual default mechanisms and use that as\n // a template for creating the next state\n let nextState,\n templateState = state.go(input);\n if (templateState) {\n nextState = new State();\n Object.assign(nextState.j, templateState.j);\n nextState.jr.push.apply(nextState.jr, templateState.jr);\n nextState.jd = templateState.jd;\n nextState.t = templateState.t;\n } else {\n nextState = new State();\n }\n if (t) {\n // Ensure newly token is in the same groups as the old token\n if (groups) {\n if (nextState.t && typeof nextState.t === 'string') {\n const allFlags = Object.assign(flagsForToken(nextState.t, groups), flags);\n addToGroups(t, allFlags, groups);\n } else if (flags) {\n addToGroups(t, flags, groups);\n }\n }\n nextState.t = t; // overwrite anything that was previously there\n }\n state.j[input] = nextState;\n return nextState;\n }\n};\n\n// Helper functions to improve minification (not exported outside linkifyjs module)\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ta = (state, input, next, flags, groups) => state.ta(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {RegExp} regexp\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst tr = (state, regexp, next, flags, groups) => state.tr(regexp, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ts = (state, input, next, flags, groups) => state.ts(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string} input\n * @param {T | State<T>} [next]\n * @param {Collections<T>} [groups]\n * @param {Flags} [flags]\n */\nconst tt = (state, input, next, flags, groups) => state.tt(input, next, flags, groups);\n\n/******************************************************************************\nText Tokens\nIdentifiers for token outputs from the regexp scanner\n******************************************************************************/\n\n// A valid web domain token\nconst WORD = 'WORD'; // only contains a-z\nconst UWORD = 'UWORD'; // contains letters other than a-z, used for IDN\nconst ASCIINUMERICAL = 'ASCIINUMERICAL'; // contains a-z, 0-9\nconst ALPHANUMERICAL = 'ALPHANUMERICAL'; // contains numbers and letters other than a-z, used for IDN\n\n// Special case of word\nconst LOCALHOST = 'LOCALHOST';\n\n// Valid top-level domain, special case of WORD (see tlds.js)\nconst TLD = 'TLD';\n\n// Valid IDN TLD, special case of UWORD (see tlds.js)\nconst UTLD = 'UTLD';\n\n// The scheme portion of a web URI protocol. Supported types include: `mailto`,\n// `file`, and user-defined custom protocols. Limited to schemes that contain\n// only letters\nconst SCHEME = 'SCHEME';\n\n// Similar to SCHEME, except makes distinction for schemes that must always be\n// followed by `://`, not just `:`. Supported types include `http`, `https`,\n// `ftp`, `ftps`\nconst SLASH_SCHEME = 'SLASH_SCHEME';\n\n// Any sequence of digits 0-9\nconst NUM = 'NUM';\n\n// Any number of consecutive whitespace characters that are not newline\nconst WS = 'WS';\n\n// New line (unix style)\nconst NL = 'NL'; // \\n\n\n// Opening/closing bracket classes\n// TODO: Rename OPEN -> LEFT and CLOSE -> RIGHT in v5 to fit with Unicode names\n// Also rename angle brackes to LESSTHAN and GREATER THAN\nconst OPENBRACE = 'OPENBRACE'; // {\nconst CLOSEBRACE = 'CLOSEBRACE'; // }\nconst OPENBRACKET = 'OPENBRACKET'; // [\nconst CLOSEBRACKET = 'CLOSEBRACKET'; // ]\nconst OPENPAREN = 'OPENPAREN'; // (\nconst CLOSEPAREN = 'CLOSEPAREN'; // )\nconst OPENANGLEBRACKET = 'OPENANGLEBRACKET'; // <\nconst CLOSEANGLEBRACKET = 'CLOSEANGLEBRACKET'; // >\nconst FULLWIDTHLEFTPAREN = 'FULLWIDTHLEFTPAREN'; // (\nconst FULLWIDTHRIGHTPAREN = 'FULLWIDTHRIGHTPAREN'; // )\nconst LEFTCORNERBRACKET = 'LEFTCORNERBRACKET'; // 「\nconst RIGHTCORNERBRACKET = 'RIGHTCORNERBRACKET'; // 」\nconst LEFTWHITECORNERBRACKET = 'LEFTWHITECORNERBRACKET'; // 『\nconst RIGHTWHITECORNERBRACKET = 'RIGHTWHITECORNERBRACKET'; // 』\nconst FULLWIDTHLESSTHAN = 'FULLWIDTHLESSTHAN'; // <\nconst FULLWIDTHGREATERTHAN = 'FULLWIDTHGREATERTHAN'; // >\n\n// Various symbols\nconst AMPERSAND = 'AMPERSAND'; // &\nconst APOSTROPHE = 'APOSTROPHE'; // '\nconst ASTERISK = 'ASTERISK'; // *\nconst AT = 'AT'; // @\nconst BACKSLASH = 'BACKSLASH'; // \\\nconst BACKTICK = 'BACKTICK'; // `\nconst CARET = 'CARET'; // ^\nconst COLON = 'COLON'; // :\nconst COMMA = 'COMMA'; // ,\nconst DOLLAR = 'DOLLAR'; // $\nconst DOT = 'DOT'; // .\nconst EQUALS = 'EQUALS'; // =\nconst EXCLAMATION = 'EXCLAMATION'; // !\nconst HYPHEN = 'HYPHEN'; // -\nconst PERCENT = 'PERCENT'; // %\nconst PIPE = 'PIPE'; // |\nconst PLUS = 'PLUS'; // +\nconst POUND = 'POUND'; // #\nconst QUERY = 'QUERY'; // ?\nconst QUOTE = 'QUOTE'; // \"\nconst FULLWIDTHMIDDLEDOT = 'FULLWIDTHMIDDLEDOT'; // ・\n\nconst SEMI = 'SEMI'; // ;\nconst SLASH = 'SLASH'; // /\nconst TILDE = 'TILDE'; // ~\nconst UNDERSCORE = 'UNDERSCORE'; // _\n\n// Emoji symbol\nconst EMOJI$1 = 'EMOJI';\n\n// Default token - anything that is not one of the above\nconst SYM = 'SYM';\n\nvar tk = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tALPHANUMERICAL: ALPHANUMERICAL,\n\tAMPERSAND: AMPERSAND,\n\tAPOSTROPHE: APOSTROPHE,\n\tASCIINUMERICAL: ASCIINUMERICAL,\n\tASTERISK: ASTERISK,\n\tAT: AT,\n\tBACKSLASH: BACKSLASH,\n\tBACKTICK: BACKTICK,\n\tCARET: CARET,\n\tCLOSEANGLEBRACKET: CLOSEANGLEBRACKET,\n\tCLOSEBRACE: CLOSEBRACE,\n\tCLOSEBRACKET: CLOSEBRACKET,\n\tCLOSEPAREN: CLOSEPAREN,\n\tCOLON: COLON,\n\tCOMMA: COMMA,\n\tDOLLAR: DOLLAR,\n\tDOT: DOT,\n\tEMOJI: EMOJI$1,\n\tEQUALS: EQUALS,\n\tEXCLAMATION: EXCLAMATION,\n\tFULLWIDTHGREATERTHAN: FULLWIDTHGREATERTHAN,\n\tFULLWIDTHLEFTPAREN: FULLWIDTHLEFTPAREN,\n\tFULLWIDTHLESSTHAN: FULLWIDTHLESSTHAN,\n\tFULLWIDTHMIDDLEDOT: FULLWIDTHMIDDLEDOT,\n\tFULLWIDTHRIGHTPAREN: FULLWIDTHRIGHTPAREN,\n\tHYPHEN: HYPHEN,\n\tLEFTCORNERBRACKET: LEFTCORNERBRACKET,\n\tLEFTWHITECORNERBRACKET: LEFTWHITECORNERBRACKET,\n\tLOCALHOST: LOCALHOST,\n\tNL: NL,\n\tNUM: NUM,\n\tOPENANGLEBRACKET: OPENANGLEBRACKET,\n\tOPENBRACE: OPENBRACE,\n\tOPENBRACKET: OPENBRACKET,\n\tOPENPAREN: OPENPAREN,\n\tPERCENT: PERCENT,\n\tPIPE: PIPE,\n\tPLUS: PLUS,\n\tPOUND: POUND,\n\tQUERY: QUERY,\n\tQUOTE: QUOTE,\n\tRIGHTCORNERBRACKET: RIGHTCORNERBRACKET,\n\tRIGHTWHITECORNERBRACKET: RIGHTWHITECORNERBRACKET,\n\tSCHEME: SCHEME,\n\tSEMI: SEMI,\n\tSLASH: SLASH,\n\tSLASH_SCHEME: SLASH_SCHEME,\n\tSYM: SYM,\n\tTILDE: TILDE,\n\tTLD: TLD,\n\tUNDERSCORE: UNDERSCORE,\n\tUTLD: UTLD,\n\tUWORD: UWORD,\n\tWORD: WORD,\n\tWS: WS\n});\n\n// Note that these two Unicode ones expand into a really big one with Babel\nconst ASCII_LETTER = /[a-z]/;\nconst LETTER = /\\p{L}/u; // Any Unicode character with letter data type\nconst EMOJI = /\\p{Emoji}/u; // Any Unicode emoji character\nconst EMOJI_VARIATION$1 = /\\ufe0f/;\nconst DIGIT = /\\d/;\nconst SPACE = /\\s/;\n\nvar regexp = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tASCII_LETTER: ASCII_LETTER,\n\tDIGIT: DIGIT,\n\tEMOJI: EMOJI,\n\tEMOJI_VARIATION: EMOJI_VARIATION$1,\n\tLETTER: LETTER,\n\tSPACE: SPACE\n});\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n*/\n\nconst CR = '\\r'; // carriage-return character\nconst LF = '\\n'; // line-feed character\nconst EMOJI_VARIATION = '\\ufe0f'; // Variation selector, follows heart and others\nconst EMOJI_JOINER = '\\u200d'; // zero-width joiner\nconst OBJECT_REPLACEMENT = '\\ufffc'; // whitespace placeholder that sometimes appears in rich text editors\n\nlet tlds = null,\n utlds = null; // don't change so only have to be computed once\n\n/**\n * Scanner output token:\n * - `t` is the token name (e.g., 'NUM', 'EMOJI', 'TLD')\n * - `v` is the value of the token (e.g., '123', '❤️', 'com')\n * - `s` is the start index of the token in the original string\n * - `e` is the end index of the token in the original string\n * @typedef {{t: string, v: string, s: number, e: number}} Token\n */\n\n/**\n * @template T\n * @typedef {{ [collection: string]: T[] }} Collections\n */\n\n/**\n * Initialize the scanner character-based state machine for the given start\n * state\n * @param {[string, boolean][]} customSchemes List of custom schemes, where each\n * item is a length-2 tuple with the first element set to the string scheme, and\n * the second element set to `true` if the `://` after the scheme is optional\n */\nfunction init$2(customSchemes = []) {\n // Frequently used states (name argument removed during minification)\n /** @type Collections<string> */\n const groups = {}; // of tokens\n State.groups = groups;\n /** @type State<string> */\n const Start = new State();\n if (tlds == null) {\n tlds = decodeTlds(encodedTlds);\n }\n if (utlds == null) {\n utlds = decodeTlds(encodedUtlds);\n }\n\n // States for special URL symbols that accept immediately after start\n tt(Start, \"'\", APOSTROPHE);\n tt(Start, '{', OPENBRACE);\n tt(Start, '}', CLOSEBRACE);\n tt(Start, '[', OPENBRACKET);\n tt(Start, ']', CLOSEBRACKET);\n tt(Start, '(', OPENPAREN);\n tt(Start, ')', CLOSEPAREN);\n tt(Start, '<', OPENANGLEBRACKET);\n tt(Start, '>', CLOSEANGLEBRACKET);\n tt(Start, '(', FULLWIDTHLEFTPAREN);\n tt(Start, ')', FULLWIDTHRIGHTPAREN);\n tt(Start, '「', LEFTCORNERBRACKET);\n tt(Start, '」', RIGHTCORNERBRACKET);\n tt(Start, '『', LEFTWHITECORNERBRACKET);\n tt(Start, '』', RIGHTWHITECORNERBRACKET);\n tt(Start, '<', FULLWIDTHLESSTHAN);\n tt(Start, '>', FULLWIDTHGREATERTHAN);\n tt(Start, '&', AMPERSAND);\n tt(Start, '*', ASTERISK);\n tt(Start, '@', AT);\n tt(Start, '`', BACKTICK);\n tt(Start, '^', CARET);\n tt(Start, ':', COLON);\n tt(Start, ',', COMMA);\n tt(Start, '$', DOLLAR);\n tt(Start, '.', DOT);\n tt(Start, '=', EQUALS);\n tt(Start, '!', EXCLAMATION);\n tt(Start, '-', HYPHEN);\n tt(Start, '%', PERCENT);\n tt(Start, '|', PIPE);\n tt(Start, '+', PLUS);\n tt(Start, '#', POUND);\n tt(Start, '?', QUERY);\n tt(Start, '\"', QUOTE);\n tt(Start, '/', SLASH);\n tt(Start, ';', SEMI);\n tt(Start, '~', TILDE);\n tt(Start, '_', UNDERSCORE);\n tt(Start, '\\\\', BACKSLASH);\n tt(Start, '・', FULLWIDTHMIDDLEDOT);\n const Num = tr(Start, DIGIT, NUM, {\n [numeric]: true\n });\n tr(Num, DIGIT, Num);\n const Asciinumeric = tr(Num, ASCII_LETTER, ASCIINUMERICAL, {\n [asciinumeric]: true\n });\n const Alphanumeric = tr(Num, LETTER, ALPHANUMERICAL, {\n [alphanumeric]: true\n });\n\n // State which emits a word token\n const Word = tr(Start, ASCII_LETTER, WORD, {\n [ascii]: true\n });\n tr(Word, DIGIT, Asciinumeric);\n tr(Word, ASCII_LETTER, Word);\n tr(Asciinumeric, DIGIT, Asciinumeric);\n tr(Asciinumeric, ASCII_LETTER, Asciinumeric);\n\n // Same as previous, but specific to non-fsm.ascii alphabet words\n const UWord = tr(Start, LETTER, UWORD, {\n [alpha]: true\n });\n tr(UWord, ASCII_LETTER); // Non-accepting\n tr(UWord, DIGIT, Alphanumeric);\n tr(UWord, LETTER, UWord);\n tr(Alphanumeric, DIGIT, Alphanumeric);\n tr(Alphanumeric, ASCII_LETTER); // Non-accepting\n tr(Alphanumeric, LETTER, Alphanumeric); // Non-accepting\n\n // Whitespace jumps\n // Tokens of only non-newline whitespace are arbitrarily long\n // If any whitespace except newline, more whitespace!\n const Nl = tt(Start, LF, NL, {\n [whitespace]: true\n });\n const Cr = tt(Start, CR, WS, {\n [whitespace]: true\n });\n const Ws = tr(Start, SPACE, WS, {\n [whitespace]: true\n });\n tt(Start, OBJECT_REPLACEMENT, Ws);\n tt(Cr, LF, Nl); // \\r\\n\n tt(Cr, OBJECT_REPLACEMENT, Ws);\n tr(Cr, SPACE, Ws);\n tt(Ws, CR); // non-accepting state to avoid mixing whitespaces\n tt(Ws, LF); // non-accepting state to avoid mixing whitespaces\n tr(Ws, SPACE, Ws);\n tt(Ws, OBJECT_REPLACEMENT, Ws);\n\n // Emoji tokens. They are not grouped by the scanner except in cases where a\n // zero-width joiner is present\n const Emoji = tr(Start, EMOJI, EMOJI$1, {\n [emoji]: true\n });\n tt(Emoji, '#'); // no transition, emoji regex seems to match #\n tr(Emoji, EMOJI, Emoji);\n tt(Emoji, EMOJI_VARIATION, Emoji);\n // tt(Start, EMOJI_VARIATION, Emoji); // This one is sketchy\n\n const EmojiJoiner = tt(Emoji, EMOJI_JOINER);\n tt(EmojiJoiner, '#');\n tr(EmojiJoiner, EMOJI, Emoji);\n // tt(EmojiJoiner, EMOJI_VARIATION, Emoji); // also sketchy\n\n // Generates states for top-level domains\n // Note that this is most accurate when tlds are in alphabetical order\n const wordjr = [[ASCII_LETTER, Word], [DIGIT, Asciinumeric]];\n const uwordjr = [[ASCII_LETTER, null], [LETTER, UWord], [DIGIT, Alphanumeric]];\n for (let i = 0; i < tlds.length; i++) {\n fastts(Start, tlds[i], TLD, WORD, wordjr);\n }\n for (let i = 0; i < utlds.length; i++) {\n fastts(Start, utlds[i], UTLD, UWORD, uwordjr);\n }\n addToGroups(TLD, {\n tld: true,\n ascii: true\n }, groups);\n addToGroups(UTLD, {\n utld: true,\n alpha: true\n }, groups);\n\n // Collect the states generated by different protocols. NOTE: If any new TLDs\n // get added that are also protocols, set the token to be the same as the\n // protocol to ensure parsing works as expected.\n fastts(Start, 'file', SCHEME, WORD, wordjr);\n fastts(Start, 'mailto', SCHEME, WORD, wordjr);\n fastts(Start, 'http', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'https', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftp', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftps', SLASH_SCHEME, WORD, wordjr);\n addToGroups(SCHEME, {\n scheme: true,\n ascii: true\n }, groups);\n addToGroups(SLASH_SCHEME, {\n slashscheme: true,\n ascii: true\n }, groups);\n\n // Register custom schemes. Assumes each scheme is asciinumeric with hyphens\n customSchemes = customSchemes.sort((a, b) => a[0] > b[0] ? 1 : -1);\n for (let i = 0; i < customSchemes.length; i++) {\n const sch = customSchemes[i][0];\n const optionalSlashSlash = customSchemes[i][1];\n const flags = optionalSlashSlash ? {\n [scheme]: true\n } : {\n [slashscheme]: true\n };\n if (sch.indexOf('-') >= 0) {\n flags[domain] = true;\n } else if (!ASCII_LETTER.test(sch)) {\n flags[numeric] = true; // numbers only\n } else if (DIGIT.test(sch)) {\n flags[asciinumeric] = true;\n } else {\n flags[ascii] = true;\n }\n ts(Start, sch, sch, flags);\n }\n\n // Localhost token\n ts(Start, 'localhost', LOCALHOST, {\n ascii: true\n });\n\n // Set default transition for start state (some symbol)\n Start.jd = new State(SYM);\n return {\n start: Start,\n tokens: Object.assign({\n groups\n }, tk)\n };\n}\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {State<string>} start scanner starting state\n\t@param {string} str input string to scan\n\t@return {Token[]} list of tokens, each with a type and value\n*/\nfunction run$1(start, str) {\n // State machine is not case sensitive, so input is tokenized in lowercased\n // form (still returns regular case). Uses selective `toLowerCase` because\n // lowercasing the entire string causes the length and character position to\n // vary in some non-English strings with V8-based runtimes.\n const iterable = stringToArray(str.replace(/[A-Z]/g, c => c.toLowerCase()));\n const charCount = iterable.length; // <= len if there are emojis, etc\n const tokens = []; // return value\n\n // cursor through the string itself, accounting for characters that have\n // width with length 2 such as emojis\n let cursor = 0;\n\n // Cursor through the array-representation of the string\n let charCursor = 0;\n\n // Tokenize the string\n while (charCursor < charCount) {\n let state = start;\n let nextState = null;\n let tokenLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n let charsSinceAccepts = -1;\n while (charCursor < charCount && (nextState = state.go(iterable[charCursor]))) {\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n charsSinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts += iterable[charCursor].length;\n charsSinceAccepts++;\n }\n tokenLength += iterable[charCursor].length;\n cursor += iterable[charCursor].length;\n charCursor++;\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n charCursor -= charsSinceAccepts;\n tokenLength -= sinceAccepts;\n\n // No more jumps, just make a new token from the last accepting one\n tokens.push({\n t: latestAccepting.t,\n // token type/name\n v: str.slice(cursor - tokenLength, cursor),\n // string value\n s: cursor - tokenLength,\n // start index\n e: cursor // end index (excluding)\n });\n }\n return tokens;\n}\n\n/**\n * Convert a String to an Array of characters, taking into account that some\n * characters like emojis take up two string indexes.\n *\n * Adapted from core-js (MIT license)\n * https://github.com/zloirock/core-js/blob/2d69cf5f99ab3ea3463c395df81e5a15b68f49d9/packages/core-js/internals/string-multibyte.js\n *\n * @function stringToArray\n * @param {string} str\n * @returns {string[]}\n */\nfunction stringToArray(str) {\n const result = [];\n const len = str.length;\n let index = 0;\n while (index < len) {\n let first = str.charCodeAt(index);\n let second;\n let char = first < 0xd800 || first > 0xdbff || index + 1 === len || (second = str.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? str[index] // single character\n : str.slice(index, index + 2); // two-index characters\n result.push(char);\n index += char.length;\n }\n return result;\n}\n\n/**\n * Fast version of ts function for when transition defaults are well known\n * @param {State<string>} state\n * @param {string} input\n * @param {string} t\n * @param {string} defaultt\n * @param {[RegExp, State<string>][]} jr\n * @returns {State<string>}\n */\nfunction fastts(state, input, t, defaultt, jr) {\n let next;\n const len = input.length;\n for (let i = 0; i < len - 1; i++) {\n const char = input[i];\n if (state.j[char]) {\n next = state.j[char];\n } else {\n next = new State(defaultt);\n next.jr = jr.slice();\n state.j[char] = next;\n }\n state = next;\n }\n next = new State(t);\n next.jr = jr.slice();\n state.j[input[len - 1]] = next;\n return next;\n}\n\n/**\n * Converts a string of Top-Level Domain names encoded in update-tlds.js back\n * into a list of strings.\n * @param {str} encoded encoded TLDs string\n * @returns {str[]} original TLDs list\n */\nfunction decodeTlds(encoded) {\n const words = [];\n const stack = [];\n let i = 0;\n let digits = '0123456789';\n while (i < encoded.length) {\n let popDigitCount = 0;\n while (digits.indexOf(encoded[i + popDigitCount]) >= 0) {\n popDigitCount++; // encountered some digits, have to pop to go one level up trie\n }\n if (popDigitCount > 0) {\n words.push(stack.join('')); // whatever preceded the pop digits must be a word\n for (let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); popCount > 0; popCount--) {\n stack.pop();\n }\n i += popDigitCount;\n } else {\n stack.push(encoded[i]); // drop down a level into the trie\n i++;\n }\n }\n return words;\n}\n\n/**\n * An object where each key is a valid DOM Event Name such as `click` or `focus`\n * and each value is an event handler function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element#events\n * @typedef {?{ [event: string]: Function }} EventListeners\n */\n\n/**\n * All formatted properties required to render a link, including `tagName`,\n * `attributes`, `content` and `eventListeners`.\n * @typedef {{ tagName: any, attributes: {[attr: string]: any}, content: string,\n * eventListeners: EventListeners }} IntermediateRepresentation\n */\n\n/**\n * Specify either an object described by the template type `O` or a function.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `O`\n * @template O\n * @typedef {O | ((value: string, type: string, token: MultiToken) => O)} OptObj\n */\n\n/**\n * Specify either a function described by template type `F` or an object.\n *\n * Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each\n * value should be a function with template type `F` that is called when the\n * corresponding link type is encountered.\n * @template F\n * @typedef {F | { [type: string]: F}} OptFn\n */\n\n/**\n * Specify either a value with template type `V`, a function that returns `V` or\n * an object where each value resolves to `V`.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `V`\n *\n * For the object, each key should be a link type (`'url'`, `'hashtag`', etc.).\n * Each value should either have type `V` or a function that returns V. This\n * function similarly takes a string value and a token.\n *\n * Example valid types for `Opt<string>`:\n *\n * ```js\n * 'hello'\n * (value, type, token) => 'world'\n * { url: 'hello', email: (value, token) => 'world'}\n * ```\n * @template V\n * @typedef {V | ((value: string, type: string, token: MultiToken) => V) | { [type: string]: V | ((value: string, token: MultiToken) => V) }} Opt\n */\n\n/**\n * See available options: https://linkify.js.org/docs/options.html\n * @typedef {{\n * \tdefaultProtocol?: string,\n * events?: OptObj<EventListeners>,\n * \tformat?: Opt<string>,\n * \tformatHref?: Opt<string>,\n * \tnl2br?: boolean,\n * \ttagName?: Opt<any>,\n * \ttarget?: Opt<string>,\n * \trel?: Opt<string>,\n * \tvalidate?: Opt<boolean>,\n * \ttruncate?: Opt<number>,\n * \tclassName?: Opt<string>,\n * \tattributes?: OptObj<({ [attr: string]: any })>,\n * ignoreTags?: string[],\n * \trender?: OptFn<((ir: IntermediateRepresentation) => any)>\n * }} Opts\n */\n\n/**\n * @type Required<Opts>\n */\nconst defaults = {\n defaultProtocol: 'http',\n events: null,\n format: noop,\n formatHref: noop,\n nl2br: false,\n tagName: 'a',\n target: null,\n rel: null,\n validate: true,\n truncate: Infinity,\n className: null,\n attributes: null,\n ignoreTags: [],\n render: null\n};\n\n/**\n * Utility class for linkify interfaces to apply specified\n * {@link Opts formatting and rendering options}.\n *\n * @param {Opts | Options} [opts] Option value overrides.\n * @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For\n * internal use) default render function that determines how to generate an\n * HTML element based on a link token's derived tagName, attributes and HTML.\n * Similar to render option\n */\nfunction Options(opts, defaultRender = null) {\n let o = Object.assign({}, defaults);\n if (opts) {\n o = Object.assign(o, opts instanceof Options ? opts.o : opts);\n }\n\n // Ensure all ignored tags are uppercase\n const ignoredTags = o.ignoreTags;\n const uppercaseIgnoredTags = [];\n for (let i = 0; i < ignoredTags.length; i++) {\n uppercaseIgnoredTags.push(ignoredTags[i].toUpperCase());\n }\n /** @protected */\n this.o = o;\n if (defaultRender) {\n this.defaultRender = defaultRender;\n }\n this.ignoreTags = uppercaseIgnoredTags;\n}\nOptions.prototype = {\n o: defaults,\n /**\n * @type string[]\n */\n ignoreTags: [],\n /**\n * @param {IntermediateRepresentation} ir\n * @returns {any}\n */\n defaultRender(ir) {\n return ir;\n },\n /**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options.\n * @param {MultiToken} token\n * @returns {boolean}\n */\n check(token) {\n return this.get('validate', token.toString(), token);\n },\n // Private methods\n\n /**\n * Resolve an option's value based on the value of the option and the given\n * params. If operator and token are specified and the target option is\n * callable, automatically calls the function with the given argument.\n * @template {keyof Opts} K\n * @param {K} key Name of option to use\n * @param {string} [operator] will be passed to the target option if it's a\n * function. If not specified, RAW function value gets returned\n * @param {MultiToken} [token] The token from linkify.tokenize\n * @returns {Opts[K] | any}\n */\n get(key, operator, token) {\n const isCallable = operator != null;\n let option = this.o[key];\n if (!option) {\n return option;\n }\n if (typeof option === 'object') {\n option = token.t in option ? option[token.t] : defaults[key];\n if (typeof option === 'function' && isCallable) {\n option = option(operator, token);\n }\n } else if (typeof option === 'function' && isCallable) {\n option = option(operator, token.t, token);\n }\n return option;\n },\n /**\n * @template {keyof Opts} L\n * @param {L} key Name of options object to use\n * @param {string} [operator]\n * @param {MultiToken} [token]\n * @returns {Opts[L] | any}\n */\n getObj(key, operator, token) {\n let obj = this.o[key];\n if (typeof obj === 'function' && operator != null) {\n obj = obj(operator, token.t, token);\n }\n return obj;\n },\n /**\n * Convert the given token to a rendered element that may be added to the\n * calling-interface's DOM\n * @param {MultiToken} token Token to render to an HTML element\n * @returns {any} Render result; e.g., HTML string, DOM element, React\n * Component, etc.\n */\n render(token) {\n const ir = token.render(this); // intermediate representation\n const renderFn = this.get('render', null, token) || this.defaultRender;\n return renderFn(ir, token.t, token);\n }\n};\nfunction noop(val) {\n return val;\n}\n\nvar options = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tOptions: Options,\n\tdefaults: defaults\n});\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n/**\n * @param {string} value\n * @param {Token[]} tokens\n */\nfunction MultiToken(value, tokens) {\n this.t = 'token';\n this.v = value;\n this.tk = tokens;\n}\n\n/**\n * Abstract class used for manufacturing tokens of text tokens. That is rather\n * than the value for a token being a small string of text, it's value an array\n * of text tokens.\n *\n * Used for grouping together URLs, emails, hashtags, and other potential\n * creations.\n * @class MultiToken\n * @property {string} t\n * @property {string} v\n * @property {Token[]} tk\n * @abstract\n */\nMultiToken.prototype = {\n isLink: false,\n /**\n * Return the string this token represents.\n * @return {string}\n */\n toString() {\n return this.v;\n },\n /**\n * What should the value for this token be in the `href` HTML attribute?\n * Returns the `.toString` value by default.\n * @param {string} [scheme]\n * @return {string}\n */\n toHref(scheme) {\n return this.toString();\n },\n /**\n * @param {Options} options Formatting options\n * @returns {string}\n */\n toFormattedString(options) {\n const val = this.toString();\n const truncate = options.get('truncate', val, this);\n const formatted = options.get('format', val, this);\n return truncate && formatted.length > truncate ? formatted.substring(0, truncate) + '…' : formatted;\n },\n /**\n *\n * @param {Options} options\n * @returns {string}\n */\n toFormattedHref(options) {\n return options.get('formatHref', this.toHref(options.get('defaultProtocol')), this);\n },\n /**\n * The start index of this token in the original input string\n * @returns {number}\n */\n startIndex() {\n return this.tk[0].s;\n },\n /**\n * The end index of this token in the original input string (up to this\n * index but not including it)\n * @returns {number}\n */\n endIndex() {\n return this.tk[this.tk.length - 1].e;\n },\n /**\n \tReturns an object of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {string} [protocol] `'http'` by default\n */\n toObject(protocol = defaults.defaultProtocol) {\n return {\n type: this.t,\n value: this.toString(),\n isLink: this.isLink,\n href: this.toHref(protocol),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n *\n * @param {Options} options Formatting option\n */\n toFormattedObject(options) {\n return {\n type: this.t,\n value: this.toFormattedString(options),\n isLink: this.isLink,\n href: this.toFormattedHref(options),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n * Whether this token should be rendered as a link according to the given options\n * @param {Options} options\n * @returns {boolean}\n */\n validate(options) {\n return options.get('validate', this.toString(), this);\n },\n /**\n * Return an object that represents how this link should be rendered.\n * @param {Options} options Formattinng options\n */\n render(options) {\n const token = this;\n const href = this.toHref(options.get('defaultProtocol'));\n const formattedHref = options.get('formatHref', href, this);\n const tagName = options.get('tagName', href, token);\n const content = this.toFormattedString(options);\n const attributes = {};\n const className = options.get('className', href, token);\n const target = options.get('target', href, token);\n const rel = options.get('rel', href, token);\n const attrs = options.getObj('attributes', href, token);\n const eventListeners = options.getObj('events', href, token);\n attributes.href = formattedHref;\n if (className) {\n attributes.class = className;\n }\n if (target) {\n attributes.target = target;\n }\n if (rel) {\n attributes.rel = rel;\n }\n if (attrs) {\n Object.assign(attributes, attrs);\n }\n return {\n tagName,\n attributes,\n content,\n eventListeners\n };\n }\n};\n\n/**\n * Create a new token that can be emitted by the parser state machine\n * @param {string} type readable type of the token\n * @param {object} props properties to assign or override, including isLink = true or false\n * @returns {new (value: string, tokens: Token[]) => MultiToken} new token class\n */\nfunction createTokenClass(type, props) {\n class Token extends MultiToken {\n constructor(value, tokens) {\n super(value, tokens);\n this.t = type;\n }\n }\n for (const p in props) {\n Token.prototype[p] = props[p];\n }\n Token.t = type;\n return Token;\n}\n\n/**\n\tRepresents a list of tokens making up a valid email address\n*/\nconst Email = createTokenClass('email', {\n isLink: true,\n toHref() {\n return 'mailto:' + this.toString();\n }\n});\n\n/**\n\tRepresents some plain text\n*/\nconst Text = createTokenClass('text');\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class Nl\n*/\nconst Nl = createTokenClass('nl');\n\n/**\n\tRepresents a list of text tokens making up a valid URL\n\t@class Url\n*/\nconst Url = createTokenClass('url', {\n isLink: true,\n /**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@param {string} [scheme] default scheme (e.g., 'https')\n \t@return {string} the full href\n */\n toHref(scheme = defaults.defaultProtocol) {\n // Check if already has a prefix scheme\n return this.hasProtocol() ? this.v : `${scheme}://${this.v}`;\n },\n /**\n * Check whether this URL token has a protocol\n * @return {boolean}\n */\n hasProtocol() {\n const tokens = this.tk;\n return tokens.length >= 2 && tokens[0].t !== LOCALHOST && tokens[1].t === COLON;\n }\n});\n\nvar multi = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBase: MultiToken,\n\tEmail: Email,\n\tMultiToken: MultiToken,\n\tNl: Nl,\n\tText: Text,\n\tUrl: Url,\n\tcreateTokenClass: createTokenClass\n});\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/EmailAddress (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main run\n*/\n\nconst makeState = arg => new State(arg);\n\n/**\n * Generate the parser multi token-based state machine\n * @param {{ groups: Collections<string> }} tokens\n */\nfunction init$1({\n groups\n}) {\n // Types of characters the URL can definitely end in\n const qsAccepting = groups.domain.concat([AMPERSAND, ASTERISK, AT, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, NUM, PERCENT, PIPE, PLUS, POUND, SLASH, SYM, TILDE, UNDERSCORE]);\n\n // Types of tokens that can follow a URL and be part of the query string\n // but cannot be the very last characters\n // Characters that cannot appear in the URL at all should be excluded\n const qsNonAccepting = [APOSTROPHE, COLON, COMMA, DOT, EXCLAMATION, PERCENT, QUERY, QUOTE, SEMI, OPENANGLEBRACKET, CLOSEANGLEBRACKET, OPENBRACE, CLOSEBRACE, CLOSEBRACKET, OPENBRACKET, OPENPAREN, CLOSEPAREN, FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN, LEFTCORNERBRACKET, RIGHTCORNERBRACKET, LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET, FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN];\n\n // For addresses without the mailto prefix\n // Tokens allowed in the localpart of the email\n const localpartAccepting = [AMPERSAND, APOSTROPHE, ASTERISK, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, OPENBRACE, CLOSEBRACE, PERCENT, PIPE, PLUS, POUND, QUERY, SLASH, SYM, TILDE, UNDERSCORE];\n\n // The universal starting state.\n /**\n * @type State<Token>\n */\n const Start = makeState();\n const Localpart = tt(Start, TILDE); // Local part of the email address\n ta(Localpart, localpartAccepting, Localpart);\n ta(Localpart, groups.domain, Localpart);\n const Domain = makeState(),\n Scheme = makeState(),\n SlashScheme = makeState();\n ta(Start, groups.domain, Domain); // parsed string ends with a potential domain name (A)\n ta(Start, groups.scheme, Scheme); // e.g., 'mailto'\n ta(Start, groups.slashscheme, SlashScheme); // e.g., 'http'\n\n ta(Domain, localpartAccepting, Localpart);\n ta(Domain, groups.domain, Domain);\n const LocalpartAt = tt(Domain, AT); // Local part of the email address plus @\n\n tt(Localpart, AT, LocalpartAt); // close to an email address now\n\n // Local part of an email address can be e.g. 'http' or 'mailto'\n tt(Scheme, AT, LocalpartAt);\n tt(SlashScheme, AT, LocalpartAt);\n const LocalpartDot = tt(Localpart, DOT); // Local part of the email address plus '.' (localpart cannot end in .)\n ta(LocalpartDot, localpartAccepting, Localpart);\n ta(LocalpartDot, groups.domain, Localpart);\n const EmailDomain = makeState();\n ta(LocalpartAt, groups.domain, EmailDomain); // parsed string starts with local email info + @ with a potential domain name\n ta(EmailDomain, groups.domain, EmailDomain);\n const EmailDomainDot = tt(EmailDomain, DOT); // domain followed by DOT\n ta(EmailDomainDot, groups.domain, EmailDomain);\n const Email$1 = makeState(Email); // Possible email address (could have more tlds)\n ta(EmailDomainDot, groups.tld, Email$1);\n ta(EmailDomainDot, groups.utld, Email$1);\n tt(LocalpartAt, LOCALHOST, Email$1);\n\n // Hyphen can jump back to a domain name\n const EmailDomainHyphen = tt(EmailDomain, HYPHEN); // parsed string starts with local email info + @ with a potential domain name\n tt(EmailDomainHyphen, HYPHEN, EmailDomainHyphen);\n ta(EmailDomainHyphen, groups.domain, EmailDomain);\n ta(Email$1, groups.domain, EmailDomain);\n tt(Email$1, DOT, EmailDomainDot);\n tt(Email$1, HYPHEN, EmailDomainHyphen);\n\n // Account for dots and hyphens. Hyphens are usually parts of domain names\n // (but not TLDs)\n const DomainHyphen = tt(Domain, HYPHEN); // domain followed by hyphen\n const DomainDot = tt(Domain, DOT); // domain followed by DOT\n tt(DomainHyphen, HYPHEN, DomainHyphen);\n ta(DomainHyphen, groups.domain, Domain);\n ta(DomainDot, localpartAccepting, Localpart);\n ta(DomainDot, groups.domain, Domain);\n const DomainDotTld = makeState(Url); // Simplest possible URL with no query string\n ta(DomainDot, groups.tld, DomainDotTld);\n ta(DomainDot, groups.utld, DomainDotTld);\n ta(DomainDotTld, groups.domain, Domain);\n ta(DomainDotTld, localpartAccepting, Localpart);\n tt(DomainDotTld, DOT, DomainDot);\n tt(DomainDotTld, HYPHEN, DomainHyphen);\n tt(DomainDotTld, AT, LocalpartAt);\n const DomainDotTldColon = tt(DomainDotTld, COLON); // URL followed by colon (potential port number here)\n const DomainDotTldColonPort = makeState(Url); // TLD followed by a port number\n ta(DomainDotTldColon, groups.numeric, DomainDotTldColonPort);\n\n // Long URL with optional port and maybe query string\n const Url$1 = makeState(Url);\n\n // URL with extra symbols at the end, followed by an opening bracket\n const UrlNonaccept = makeState(); // URL followed by some symbols (will not be part of the final URL)\n\n // Query strings\n ta(Url$1, qsAccepting, Url$1);\n ta(Url$1, qsNonAccepting, UrlNonaccept);\n ta(UrlNonaccept, qsAccepting, Url$1);\n ta(UrlNonaccept, qsNonAccepting, UrlNonaccept);\n\n // Become real URLs after `SLASH` or `COLON NUM SLASH`\n // Here works with or without scheme:// prefix\n tt(DomainDotTld, SLASH, Url$1);\n tt(DomainDotTldColonPort, SLASH, Url$1);\n\n // Note that domains that begin with schemes are treated slighly differently\n const SchemeColon = tt(Scheme, COLON); // e.g., 'mailto:'\n const SlashSchemeColon = tt(SlashScheme, COLON); // e.g., 'http:'\n const SlashSchemeColonSlash = tt(SlashSchemeColon, SLASH); // e.g., 'http:/'\n\n const UriPrefix = tt(SlashSchemeColonSlash, SLASH); // e.g., 'http://'\n\n // Scheme states can transition to domain states\n ta(Scheme, groups.domain, Domain);\n tt(Scheme, DOT, DomainDot);\n tt(Scheme, HYPHEN, DomainHyphen);\n ta(SlashScheme, groups.domain, Domain);\n tt(SlashScheme, DOT, DomainDot);\n tt(SlashScheme, HYPHEN, DomainHyphen);\n\n // Force URL with scheme prefix followed by anything sane\n ta(SchemeColon, groups.domain, Url$1);\n tt(SchemeColon, SLASH, Url$1);\n tt(SchemeColon, QUERY, Url$1);\n ta(UriPrefix, groups.domain, Url$1);\n ta(UriPrefix, qsAccepting, Url$1);\n tt(UriPrefix, SLASH, Url$1);\n const bracketPairs = [[OPENBRACE, CLOSEBRACE],\n // {}\n [OPENBRACKET, CLOSEBRACKET],\n // []\n [OPENPAREN, CLOSEPAREN],\n // ()\n [OPENANGLEBRACKET, CLOSEANGLEBRACKET],\n // <>\n [FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN],\n // ()\n [LEFTCORNERBRACKET, RIGHTCORNERBRACKET],\n // 「」\n [LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET],\n // 『』\n [FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN] // <>\n ];\n for (let i = 0; i < bracketPairs.length; i++) {\n const [OPEN, CLOSE] = bracketPairs[i];\n const UrlOpen = tt(Url$1, OPEN); // URL followed by open bracket\n\n // Continue not accepting for open brackets\n tt(UrlNonaccept, OPEN, UrlOpen);\n\n // URL that begins with an opening bracket, followed by a symbols.\n // Note that the final state can still be `UrlOpen` (if the URL has a\n // single opening bracket for some reason).\n const UrlOpenQ = makeState(Url);\n ta(UrlOpen, qsAccepting, UrlOpenQ);\n const UrlOpenSyms = makeState(); // UrlOpen followed by some symbols it cannot end it\n ta(UrlOpen, qsNonAccepting, UrlOpenSyms);\n\n // Closing bracket component. This character WILL be included in the URL.\n // Must come after qsNonAccepting (which includes all close-bracket tokens)\n // so that CLOSE -> Url wins over CLOSE -> UrlOpenSyms.\n tt(UrlOpen, CLOSE, Url$1);\n\n // URL that begins with an opening bracket, followed by some symbols\n ta(UrlOpenQ, qsAccepting, UrlOpenQ);\n ta(UrlOpenQ, qsNonAccepting, UrlOpenSyms);\n ta(UrlOpenSyms, qsAccepting, UrlOpenQ);\n ta(UrlOpenSyms, qsNonAccepting, UrlOpenSyms);\n\n // Close brace/bracket to become regular URL\n tt(UrlOpenQ, CLOSE, Url$1);\n tt(UrlOpenSyms, CLOSE, Url$1);\n }\n tt(Start, LOCALHOST, DomainDotTld); // localhost is a valid URL state\n tt(Start, NL, Nl); // single new line\n\n return {\n start: Start,\n tokens: tk\n };\n}\n\n/**\n * Run the parser state machine on a list of scanned string-based tokens to\n * create a list of multi tokens, each of which represents a URL, email address,\n * plain text, etc.\n *\n * @param {State<MultiToken>} start parser start state\n * @param {string} input the original input used to generate the given tokens\n * @param {Token[]} tokens list of scanned tokens\n * @returns {MultiToken[]}\n */\nfunction run(start, input, tokens) {\n let len = tokens.length;\n let cursor = 0;\n let multis = [];\n let textTokens = [];\n while (cursor < len) {\n let state = start;\n let secondState = null;\n let nextState = null;\n let multiLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n while (cursor < len && !(secondState = state.go(tokens[cursor].t))) {\n // Starting tokens with nowhere to jump to.\n // Consider these to be just plain text\n textTokens.push(tokens[cursor++]);\n }\n while (cursor < len && (nextState = secondState || state.go(tokens[cursor].t))) {\n // Get the next state\n secondState = null;\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts++;\n }\n cursor++;\n multiLength++;\n }\n if (sinceAccepts < 0) {\n // No accepting state was found, part of a regular text token add\n // the first text token to the text tokens array and try again from\n // the next\n cursor -= multiLength;\n if (cursor < len) {\n textTokens.push(tokens[cursor]);\n cursor++;\n }\n } else {\n // Accepting state!\n // First close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n textTokens = [];\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n multiLength -= sinceAccepts;\n\n // Create a new multitoken\n const Multi = latestAccepting.t;\n const subtokens = tokens.slice(cursor - multiLength, cursor);\n multis.push(initMultiToken(Multi, input, subtokens));\n }\n }\n\n // Finally close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n }\n return multis;\n}\n\n/**\n * Utility function for instantiating a new multitoken with all the relevant\n * fields during parsing.\n * @param {new (value: string, tokens: Token[]) => MultiToken} Multi class to instantiate\n * @param {string} input original input string\n * @param {Token[]} tokens consecutive tokens scanned from input string\n * @returns {MultiToken}\n */\nfunction initMultiToken(Multi, input, tokens) {\n const startIdx = tokens[0].s;\n const endIdx = tokens[tokens.length - 1].e;\n const value = input.slice(startIdx, endIdx);\n return new Multi(value, tokens);\n}\n\nconst warn = typeof console !== 'undefined' && console && console.warn || (() => {});\nconst warnAdvice = 'until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.';\n\n// Side-effect initialization state\nconst INIT = {\n scanner: null,\n parser: null,\n tokenQueue: [],\n pluginQueue: [],\n customSchemes: [],\n initialized: false\n};\n\n/**\n * @typedef {{\n * \tstart: State<string>,\n * \ttokens: { groups: Collections<string> } & typeof tk\n * }} ScannerInit\n */\n\n/**\n * @typedef {{\n * \tstart: State<MultiToken>,\n * \ttokens: typeof multi\n * }} ParserInit\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit }) => void} TokenPlugin\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit, parser: ParserInit }) => void} Plugin\n */\n\n/**\n * De-register all plugins and reset the internal state-machine. Used for\n * testing; not required in practice.\n * @private\n */\nfunction reset() {\n State.groups = {};\n INIT.scanner = null;\n INIT.parser = null;\n INIT.tokenQueue = [];\n INIT.pluginQueue = [];\n INIT.customSchemes = [];\n INIT.initialized = false;\n return INIT;\n}\n\n/**\n * Register a token plugin to allow the scanner to recognize additional token\n * types before the parser state machine is constructed from the results.\n * @param {string} name of plugin to register\n * @param {TokenPlugin} plugin function that accepts the scanner state machine\n * and available scanner tokens and collections and extends the state machine to\n * recognize additional tokens or groups.\n */\nfunction registerTokenPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid token plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n if (name === INIT.tokenQueue[i][0]) {\n warn(`linkifyjs: token plugin \"${name}\" already registered - will be overwritten`);\n INIT.tokenQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.tokenQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register token plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Register a linkify plugin\n * @param {string} name of plugin to register\n * @param {Plugin} plugin function that accepts the parser state machine and\n * extends the parser to recognize additional link types\n */\nfunction registerPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n if (name === INIT.pluginQueue[i][0]) {\n warn(`linkifyjs: plugin \"${name}\" already registered - will be overwritten`);\n INIT.pluginQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.pluginQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Detect URLs with the following additional protocol. Anything with format\n * \"protocol://...\" will be considered a link. If `optionalSlashSlash` is set to\n * `true`, anything with format \"protocol:...\" will be considered a link.\n * @param {string} scheme\n * @param {boolean} [optionalSlashSlash]\n */\nfunction registerCustomProtocol(scheme, optionalSlashSlash = false) {\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register custom scheme \"${scheme}\" ${warnAdvice}`);\n }\n if (!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(scheme)) {\n throw new Error(`linkifyjs: incorrect scheme format.\n1. Must only contain digits, lowercase ASCII letters or \"-\"\n2. Cannot start or end with \"-\"\n3. \"-\" cannot repeat`);\n }\n INIT.customSchemes.push([scheme, optionalSlashSlash]);\n}\n\n/**\n * Initialize the linkify state machine. Called automatically the first time\n * linkify is called on a string, but may be called manually as well.\n */\nfunction init() {\n // Initialize scanner state machine and plugins\n INIT.scanner = init$2(INIT.customSchemes);\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n INIT.tokenQueue[i][1]({\n scanner: INIT.scanner\n });\n }\n\n // Initialize parser state machine and plugins\n INIT.parser = init$1(INIT.scanner.tokens);\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n INIT.pluginQueue[i][1]({\n scanner: INIT.scanner,\n parser: INIT.parser\n });\n }\n INIT.initialized = true;\n return INIT;\n}\n\n/**\n * Parse a string into tokens that represent linkable and non-linkable sub-components\n * @param {string} str\n * @return {MultiToken[]} tokens\n */\nfunction tokenize(str) {\n if (!INIT.initialized) {\n init();\n }\n return run(INIT.parser.start, str, run$1(INIT.scanner.start, str));\n}\ntokenize.scan = run$1; // for testing\n\n/**\n * Find a list of linkable items in the given string.\n * @param {string} str string to find links in\n * @param {string | Opts} [type] either formatting options or specific type of\n * links to find, e.g., 'url' or 'email'\n * @param {Opts} [opts] formatting options for final output. Cannot be specified\n * if opts already provided in `type` argument\n */\nfunction find(str, type = null, opts = null) {\n if (type && typeof type === 'object') {\n if (opts) {\n throw Error(`linkifyjs: Invalid link type ${type}; must be a string`);\n }\n opts = type;\n type = null;\n }\n const options = new Options(opts);\n const tokens = tokenize(str);\n const filtered = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.isLink && (!type || token.t === type) && options.check(token)) {\n filtered.push(token.toFormattedObject(options));\n }\n }\n return filtered;\n}\n\n/**\n * Is the given string valid linkable text of some sort. Note that this does not\n * trim the text for you.\n *\n * Optionally pass in a second `type` param, which is the type of link to test\n * for.\n *\n * For example,\n *\n * linkify.test(str, 'email');\n *\n * Returns `true` if str is a valid email.\n * @param {string} str string to test for links\n * @param {string} [type] optional specific link type to look for\n * @returns boolean true/false\n */\nfunction test(str, type = null) {\n const tokens = tokenize(str);\n return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type);\n}\n\nexport { MultiToken, Options, State, createTokenClass, find, init, multi, options, regexp, registerCustomProtocol, registerPlugin, registerTokenPlugin, reset, stringToArray, test, multi as text, tokenize };\n","// src/link.ts\nimport { Mark, markPasteRule, mergeAttributes } from \"@tiptap/core\";\nimport { find as find2, registerCustomProtocol, reset } from \"linkifyjs\";\n\n// src/helpers/autolink.ts\nimport {\n combineTransactionSteps,\n findChildrenInRange,\n getChangedRanges,\n getMarksBetween\n} from \"@tiptap/core\";\nimport { Plugin, PluginKey } from \"@tiptap/pm/state\";\nimport { tokenize } from \"linkifyjs\";\n\n// src/helpers/whitespace.ts\nvar UNICODE_WHITESPACE_PATTERN = \"[\\0- \\xA0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]\";\nvar UNICODE_WHITESPACE_REGEX = new RegExp(UNICODE_WHITESPACE_PATTERN);\nvar UNICODE_WHITESPACE_REGEX_END = new RegExp(`${UNICODE_WHITESPACE_PATTERN}$`);\nvar UNICODE_WHITESPACE_REGEX_GLOBAL = new RegExp(UNICODE_WHITESPACE_PATTERN, \"g\");\n\n// src/helpers/autolink.ts\nfunction isValidLinkStructure(tokens) {\n if (tokens.length === 1) {\n return tokens[0].isLink;\n }\n if (tokens.length === 3 && tokens[1].isLink) {\n return [\"()\", \"[]\"].includes(tokens[0].value + tokens[2].value);\n }\n return false;\n}\nfunction autolink(options) {\n return new Plugin({\n key: new PluginKey(\"autolink\"),\n appendTransaction: (transactions, oldState, newState) => {\n const docChanges = transactions.some((transaction) => transaction.docChanged) && !oldState.doc.eq(newState.doc);\n const preventAutolink = transactions.some(\n (transaction) => transaction.getMeta(\"preventAutolink\")\n );\n if (!docChanges || preventAutolink) {\n return;\n }\n const { tr } = newState;\n const transform = combineTransactionSteps(oldState.doc, [...transactions]);\n const changes = getChangedRanges(transform);\n changes.forEach(({ newRange }) => {\n const nodesInChangedRanges = findChildrenInRange(\n newState.doc,\n newRange,\n (node) => node.isTextblock\n );\n let textBlock;\n let textBeforeWhitespace;\n if (nodesInChangedRanges.length > 1) {\n textBlock = nodesInChangedRanges[0];\n textBeforeWhitespace = newState.doc.textBetween(\n textBlock.pos,\n textBlock.pos + textBlock.node.nodeSize,\n void 0,\n \" \"\n );\n } else if (nodesInChangedRanges.length) {\n const endText = newState.doc.textBetween(newRange.from, newRange.to, \" \", \" \");\n if (!UNICODE_WHITESPACE_REGEX_END.test(endText)) {\n return;\n }\n textBlock = nodesInChangedRanges[0];\n textBeforeWhitespace = newState.doc.textBetween(\n textBlock.pos,\n newRange.to,\n void 0,\n \" \"\n );\n }\n if (textBlock && textBeforeWhitespace) {\n const wordsBeforeWhitespace = textBeforeWhitespace.split(UNICODE_WHITESPACE_REGEX).filter(Boolean);\n if (wordsBeforeWhitespace.length <= 0) {\n return false;\n }\n const lastWordBeforeSpace = wordsBeforeWhitespace[wordsBeforeWhitespace.length - 1];\n const lastWordAndBlockOffset = textBlock.pos + textBeforeWhitespace.lastIndexOf(lastWordBeforeSpace);\n if (!lastWordBeforeSpace) {\n return false;\n }\n const linksBeforeSpace = tokenize(lastWordBeforeSpace).map(\n (t) => t.toObject(options.defaultProtocol)\n );\n if (!isValidLinkStructure(linksBeforeSpace)) {\n return false;\n }\n linksBeforeSpace.filter((link) => link.isLink).map((link) => ({\n ...link,\n from: lastWordAndBlockOffset + link.start + 1,\n to: lastWordAndBlockOffset + link.end + 1\n })).filter((link) => {\n if (!newState.schema.marks.code) {\n return true;\n }\n return !newState.doc.rangeHasMark(link.from, link.to, newState.schema.marks.code);\n }).filter((link) => options.validate(link.value)).filter((link) => options.shouldAutoLink(link.value)).forEach((link) => {\n if (getMarksBetween(link.from, link.to, newState.doc).some(\n (item) => item.mark.type === options.type\n )) {\n return;\n }\n tr.addMark(\n link.from,\n link.to,\n options.type.create({\n href: link.href\n })\n );\n });\n }\n });\n if (!tr.steps.length) {\n return;\n }\n return tr;\n }\n });\n}\n\n// src/helpers/clickHandler.ts\nimport { getAttributes } from \"@tiptap/core\";\nimport { Plugin as Plugin2, PluginKey as PluginKey2 } from \"@tiptap/pm/state\";\nfunction clickHandler(options) {\n return new Plugin2({\n key: new PluginKey2(\"handleClickLink\"),\n props: {\n handleClick: (view, pos, event) => {\n var _a, _b;\n if (event.button !== 0) {\n return false;\n }\n if (!view.editable) {\n return false;\n }\n let link = null;\n if (event.target instanceof HTMLAnchorElement) {\n link = event.target;\n } else {\n const target = event.target;\n if (!target) {\n return false;\n }\n const root = options.editor.view.dom;\n link = target.closest(\"a\");\n if (link && !root.contains(link)) {\n link = null;\n }\n }\n if (!link) {\n return false;\n }\n let handled = false;\n if (options.enableClickSelection) {\n const commandResult = options.editor.commands.extendMarkRange(options.type.name);\n handled = commandResult;\n }\n if (options.openOnClick) {\n const attrs = getAttributes(view.state, options.type.name);\n const href = (_a = link.href) != null ? _a : attrs.href;\n const target = (_b = link.target) != null ? _b : attrs.target;\n if (href) {\n window.open(href, target);\n handled = true;\n }\n }\n return handled;\n }\n }\n });\n}\n\n// src/helpers/pasteHandler.ts\nimport { Plugin as Plugin3, PluginKey as PluginKey3 } from \"@tiptap/pm/state\";\nimport { find } from \"linkifyjs\";\nfunction pasteHandler(options) {\n return new Plugin3({\n key: new PluginKey3(\"handlePasteLink\"),\n props: {\n handlePaste: (view, _event, slice) => {\n const { shouldAutoLink } = options;\n const { state } = view;\n const { selection } = state;\n const { empty } = selection;\n if (empty) {\n return false;\n }\n let textContent = \"\";\n slice.content.forEach((node) => {\n textContent += node.textContent;\n });\n const link = find(textContent, { defaultProtocol: options.defaultProtocol }).find(\n (item) => item.isLink && item.value === textContent\n );\n if (!textContent || !link || shouldAutoLink !== void 0 && !shouldAutoLink(link.value)) {\n return false;\n }\n return options.editor.commands.setMark(options.type, {\n href: link.href\n });\n }\n }\n });\n}\n\n// src/link.ts\nvar pasteRegex = /https?:\\/\\/(?:www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z]{2,}\\b(?:[-a-zA-Z0-9@:%._+~#=?!&/]*)(?:[-a-zA-Z0-9@:%._+~#=?!&/]*)/gi;\nfunction isAllowedUri(uri, protocols) {\n const allowedProtocols = [\n \"http\",\n \"https\",\n \"ftp\",\n \"ftps\",\n \"mailto\",\n \"tel\",\n \"callto\",\n \"sms\",\n \"cid\",\n \"xmpp\"\n ];\n if (protocols) {\n protocols.forEach((protocol) => {\n const nextProtocol = typeof protocol === \"string\" ? protocol : protocol.scheme;\n if (nextProtocol) {\n allowedProtocols.push(nextProtocol);\n }\n });\n }\n return !uri || uri.replace(UNICODE_WHITESPACE_REGEX_GLOBAL, \"\").match(\n new RegExp(\n `^(?:(?:${allowedProtocols.map((protocol) => protocol.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\")).join(\"|\")}):|[^a-z]|[a-z0-9+.\\\\-]+(?:[^a-z+.\\\\-:]|$))`,\n \"i\"\n )\n );\n}\nvar Link = Mark.create({\n name: \"link\",\n priority: 1e3,\n keepOnSplit: false,\n exitable: true,\n onCreate() {\n if (this.options.validate && !this.options.shouldAutoLink) {\n this.options.shouldAutoLink = this.options.validate;\n console.warn(\n \"The `validate` option is deprecated. Rename to the `shouldAutoLink` option instead.\"\n );\n }\n this.options.protocols.forEach((protocol) => {\n if (typeof protocol === \"string\") {\n registerCustomProtocol(protocol);\n return;\n }\n registerCustomProtocol(protocol.scheme, protocol.optionalSlashes);\n });\n },\n onDestroy() {\n reset();\n },\n inclusive() {\n return this.options.autolink;\n },\n addOptions() {\n return {\n openOnClick: true,\n enableClickSelection: false,\n linkOnPaste: true,\n autolink: true,\n protocols: [],\n defaultProtocol: \"http\",\n HTMLAttributes: {\n target: \"_blank\",\n rel: \"noopener noreferrer nofollow\",\n class: null\n },\n isAllowedUri: (url, ctx) => !!isAllowedUri(url, ctx.protocols),\n validate: (url) => !!url,\n shouldAutoLink: (url) => {\n const hasProtocol = /^[a-z][a-z0-9+.-]*:\\/\\//i.test(url);\n const hasMaybeProtocol = /^[a-z][a-z0-9+.-]*:/i.test(url);\n if (hasProtocol || hasMaybeProtocol && !url.includes(\"@\")) {\n return true;\n }\n const urlWithoutUserinfo = url.includes(\"@\") ? url.split(\"@\").pop() : url;\n const hostname = urlWithoutUserinfo.split(/[/?#:]/)[0];\n if (/^\\d{1,3}(\\.\\d{1,3}){3}$/.test(hostname)) {\n return false;\n }\n if (!/\\./.test(hostname)) {\n return false;\n }\n return true;\n }\n };\n },\n addAttributes() {\n return {\n href: {\n default: null,\n parseHTML(element) {\n return element.getAttribute(\"href\");\n }\n },\n target: {\n default: this.options.HTMLAttributes.target\n },\n rel: {\n default: this.options.HTMLAttributes.rel\n },\n class: {\n default: this.options.HTMLAttributes.class\n },\n title: {\n default: null\n }\n };\n },\n parseHTML() {\n return [\n {\n tag: \"a[href]\",\n getAttrs: (dom) => {\n const href = dom.getAttribute(\"href\");\n if (!href || !this.options.isAllowedUri(href, {\n defaultValidate: (url) => !!isAllowedUri(url, this.options.protocols),\n protocols: this.options.protocols,\n defaultProtocol: this.options.defaultProtocol\n })) {\n return false;\n }\n return null;\n }\n }\n ];\n },\n renderHTML({ HTMLAttributes }) {\n if (!this.options.isAllowedUri(HTMLAttributes.href, {\n defaultValidate: (href) => !!isAllowedUri(href, this.options.protocols),\n protocols: this.options.protocols,\n defaultProtocol: this.options.defaultProtocol\n })) {\n return [\"a\", mergeAttributes(this.options.HTMLAttributes, { ...HTMLAttributes, href: \"\" }), 0];\n }\n return [\"a\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n markdownTokenName: \"link\",\n parseMarkdown: (token, helpers) => {\n return helpers.applyMark(\"link\", helpers.parseInline(token.tokens || []), {\n href: token.href,\n title: token.title || null\n });\n },\n renderMarkdown: (node, h) => {\n var _a, _b, _c, _d;\n const href = (_b = (_a = node.attrs) == null ? void 0 : _a.href) != null ? _b : \"\";\n const title = (_d = (_c = node.attrs) == null ? void 0 : _c.title) != null ? _d : \"\";\n const text = h.renderChildren(node);\n return title ? `[${text}](${href} \"${title}\")` : `[${text}](${href})`;\n },\n addCommands() {\n return {\n setLink: (attributes) => ({ chain }) => {\n const { href } = attributes;\n if (!this.options.isAllowedUri(href, {\n defaultValidate: (url) => !!isAllowedUri(url, this.options.protocols),\n protocols: this.options.protocols,\n defaultProtocol: this.options.defaultProtocol\n })) {\n return false;\n }\n return chain().setMark(this.name, attributes).setMeta(\"preventAutolink\", true).run();\n },\n toggleLink: (attributes) => ({ chain }) => {\n const { href } = attributes || {};\n if (href && !this.options.isAllowedUri(href, {\n defaultValidate: (url) => !!isAllowedUri(url, this.options.protocols),\n protocols: this.options.protocols,\n defaultProtocol: this.options.defaultProtocol\n })) {\n return false;\n }\n return chain().toggleMark(this.name, attributes, { extendEmptyMarkRange: true }).setMeta(\"preventAutolink\", true).run();\n },\n unsetLink: () => ({ chain }) => {\n return chain().unsetMark(this.name, { extendEmptyMarkRange: true }).setMeta(\"preventAutolink\", true).run();\n }\n };\n },\n addPasteRules() {\n return [\n markPasteRule({\n find: (text) => {\n const foundLinks = [];\n if (text) {\n const { protocols, defaultProtocol } = this.options;\n const links = find2(text).filter(\n (item) => item.isLink && this.options.isAllowedUri(item.value, {\n defaultValidate: (href) => !!isAllowedUri(href, protocols),\n protocols,\n defaultProtocol\n })\n );\n if (links.length) {\n links.forEach((link) => {\n if (!this.options.shouldAutoLink(link.value)) {\n return;\n }\n foundLinks.push({\n text: link.value,\n data: {\n href: link.href\n },\n index: link.start\n });\n });\n }\n }\n return foundLinks;\n },\n type: this.type,\n getAttributes: (match) => {\n var _a;\n return {\n href: (_a = match.data) == null ? void 0 : _a.href\n };\n }\n })\n ];\n },\n addProseMirrorPlugins() {\n const plugins = [];\n const { protocols, defaultProtocol } = this.options;\n if (this.options.autolink) {\n plugins.push(\n autolink({\n type: this.type,\n defaultProtocol: this.options.defaultProtocol,\n validate: (url) => this.options.isAllowedUri(url, {\n defaultValidate: (href) => !!isAllowedUri(href, protocols),\n protocols,\n defaultProtocol\n }),\n shouldAutoLink: this.options.shouldAutoLink\n })\n );\n }\n plugins.push(\n clickHandler({\n type: this.type,\n editor: this.editor,\n openOnClick: this.options.openOnClick === \"whenNotEditable\" ? true : this.options.openOnClick,\n enableClickSelection: this.options.enableClickSelection\n })\n );\n if (this.options.linkOnPaste) {\n plugins.push(\n pasteHandler({\n editor: this.editor,\n defaultProtocol: this.options.defaultProtocol,\n type: this.type,\n shouldAutoLink: this.options.shouldAutoLink\n })\n );\n }\n return plugins;\n }\n});\n\n// src/index.ts\nvar index_default = Link;\nexport {\n Link,\n index_default as default,\n isAllowedUri,\n pasteRegex\n};\n//# sourceMappingURL=index.js.map","// src/paragraph.ts\nimport { mergeAttributes, Node } from \"@tiptap/core\";\nvar EMPTY_PARAGRAPH_MARKDOWN = \" \";\nvar NBSP_CHAR = \"\\xA0\";\nvar Paragraph = Node.create({\n name: \"paragraph\",\n priority: 1e3,\n addOptions() {\n return {\n HTMLAttributes: {}\n };\n },\n group: \"block\",\n content: \"inline*\",\n parseHTML() {\n return [{ tag: \"p\" }];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"p\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n parseMarkdown: (token, helpers) => {\n const tokens = token.tokens || [];\n if (tokens.length === 1 && tokens[0].type === \"image\") {\n return helpers.parseChildren([tokens[0]]);\n }\n const content = helpers.parseInline(tokens);\n const hasExplicitEmptyParagraphMarker = tokens.length === 1 && tokens[0].type === \"text\" && (tokens[0].raw === EMPTY_PARAGRAPH_MARKDOWN || tokens[0].text === EMPTY_PARAGRAPH_MARKDOWN || tokens[0].raw === NBSP_CHAR || tokens[0].text === NBSP_CHAR);\n if (hasExplicitEmptyParagraphMarker && content.length === 1 && content[0].type === \"text\" && (content[0].text === EMPTY_PARAGRAPH_MARKDOWN || content[0].text === NBSP_CHAR)) {\n return helpers.createNode(\"paragraph\", void 0, []);\n }\n return helpers.createNode(\"paragraph\", void 0, content);\n },\n renderMarkdown: (node, h, ctx) => {\n var _a, _b;\n if (!node) {\n return \"\";\n }\n const content = Array.isArray(node.content) ? node.content : [];\n if (content.length === 0) {\n const previousContent = Array.isArray((_a = ctx == null ? void 0 : ctx.previousNode) == null ? void 0 : _a.content) ? ctx.previousNode.content : [];\n const previousNodeIsEmptyParagraph = ((_b = ctx == null ? void 0 : ctx.previousNode) == null ? void 0 : _b.type) === \"paragraph\" && previousContent.length === 0;\n return previousNodeIsEmptyParagraph ? EMPTY_PARAGRAPH_MARKDOWN : \"\";\n }\n return h.renderChildren(content);\n },\n addCommands() {\n return {\n setParagraph: () => ({ commands }) => {\n return commands.setNode(this.name);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Alt-0\": () => this.editor.commands.setParagraph()\n };\n }\n});\n\n// src/index.ts\nvar index_default = Paragraph;\nexport {\n Paragraph,\n index_default as default\n};\n//# sourceMappingURL=index.js.map","// src/strike.ts\nimport { Mark, markInputRule, markPasteRule, mergeAttributes } from \"@tiptap/core\";\nvar inputRegex = /(?:^|\\s)(~~(?!\\s+~~)((?:[^~]+))~~(?!\\s+~~))$/;\nvar pasteRegex = /(?:^|\\s)(~~(?!\\s+~~)((?:[^~]+))~~(?!\\s+~~))/g;\nvar Strike = Mark.create({\n name: \"strike\",\n addOptions() {\n return {\n HTMLAttributes: {}\n };\n },\n parseHTML() {\n return [\n {\n tag: \"s\"\n },\n {\n tag: \"del\"\n },\n {\n tag: \"strike\"\n },\n {\n style: \"text-decoration\",\n consuming: false,\n getAttrs: (style) => style.includes(\"line-through\") ? {} : false\n }\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\"s\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n markdownTokenName: \"del\",\n parseMarkdown: (token, helpers) => {\n return helpers.applyMark(\"strike\", helpers.parseInline(token.tokens || []));\n },\n renderMarkdown: (node, h) => {\n return `~~${h.renderChildren(node)}~~`;\n },\n addCommands() {\n return {\n setStrike: () => ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleStrike: () => ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n unsetStrike: () => ({ commands }) => {\n return commands.unsetMark(this.name);\n }\n };\n },\n addKeyboardShortcuts() {\n return {\n \"Mod-Shift-s\": () => this.editor.commands.toggleStrike()\n };\n },\n addInputRules() {\n return [\n markInputRule({\n find: inputRegex,\n type: this.type\n })\n ];\n },\n addPasteRules() {\n return [\n markPasteRule({\n find: pasteRegex,\n type: this.type\n })\n ];\n }\n});\n\n// src/index.ts\nvar index_default = Strike;\nexport {\n Strike,\n index_default as default,\n inputRegex,\n pasteRegex\n};\n//# sourceMappingURL=index.js.map","// src/text.ts\nimport { Node } from \"@tiptap/core\";\nvar Text = Node.create({\n name: \"text\",\n group: \"inline\",\n parseMarkdown: (token) => {\n return {\n type: \"text\",\n text: token.text || \"\"\n };\n },\n renderMarkdown: (node) => node.text || \"\"\n});\n\n// src/index.ts\nvar index_default = Text;\nexport {\n Text,\n index_default as default\n};\n//# sourceMappingURL=index.js.map","// src/starter-kit.ts\nimport { Extension } from \"@tiptap/core\";\nimport { Blockquote } from \"@tiptap/extension-blockquote\";\nimport { Bold } from \"@tiptap/extension-bold\";\nimport { Code } from \"@tiptap/extension-code\";\nimport { CodeBlock } from \"@tiptap/extension-code-block\";\nimport { Document } from \"@tiptap/extension-document\";\nimport { HardBreak } from \"@tiptap/extension-hard-break\";\nimport { Heading } from \"@tiptap/extension-heading\";\nimport { HorizontalRule } from \"@tiptap/extension-horizontal-rule\";\nimport { Italic } from \"@tiptap/extension-italic\";\nimport { Link } from \"@tiptap/extension-link\";\nimport { BulletList, ListItem, ListKeymap, OrderedList } from \"@tiptap/extension-list\";\nimport { Paragraph } from \"@tiptap/extension-paragraph\";\nimport { Strike } from \"@tiptap/extension-strike\";\nimport { Text } from \"@tiptap/extension-text\";\nimport { Underline } from \"@tiptap/extension-underline\";\nimport { Dropcursor, Gapcursor, TrailingNode, UndoRedo } from \"@tiptap/extensions\";\nvar StarterKit = Extension.create({\n name: \"starterKit\",\n addExtensions() {\n var _a, _b, _c, _d;\n const extensions = [];\n if (this.options.bold !== false) {\n extensions.push(Bold.configure(this.options.bold));\n }\n if (this.options.blockquote !== false) {\n extensions.push(Blockquote.configure(this.options.blockquote));\n }\n if (this.options.bulletList !== false) {\n extensions.push(BulletList.configure(this.options.bulletList));\n }\n if (this.options.code !== false) {\n extensions.push(Code.configure(this.options.code));\n }\n if (this.options.codeBlock !== false) {\n extensions.push(CodeBlock.configure(this.options.codeBlock));\n }\n if (this.options.document !== false) {\n extensions.push(Document.configure(this.options.document));\n }\n if (this.options.dropcursor !== false) {\n extensions.push(Dropcursor.configure(this.options.dropcursor));\n }\n if (this.options.gapcursor !== false) {\n extensions.push(Gapcursor.configure(this.options.gapcursor));\n }\n if (this.options.hardBreak !== false) {\n extensions.push(HardBreak.configure(this.options.hardBreak));\n }\n if (this.options.heading !== false) {\n extensions.push(Heading.configure(this.options.heading));\n }\n if (this.options.undoRedo !== false) {\n extensions.push(UndoRedo.configure(this.options.undoRedo));\n }\n if (this.options.horizontalRule !== false) {\n extensions.push(HorizontalRule.configure(this.options.horizontalRule));\n }\n if (this.options.italic !== false) {\n extensions.push(Italic.configure(this.options.italic));\n }\n if (this.options.listItem !== false) {\n extensions.push(ListItem.configure(this.options.listItem));\n }\n if (this.options.listKeymap !== false) {\n extensions.push(ListKeymap.configure((_a = this.options) == null ? void 0 : _a.listKeymap));\n }\n if (this.options.link !== false) {\n extensions.push(Link.configure((_b = this.options) == null ? void 0 : _b.link));\n }\n if (this.options.orderedList !== false) {\n extensions.push(OrderedList.configure(this.options.orderedList));\n }\n if (this.options.paragraph !== false) {\n extensions.push(Paragraph.configure(this.options.paragraph));\n }\n if (this.options.strike !== false) {\n extensions.push(Strike.configure(this.options.strike));\n }\n if (this.options.text !== false) {\n extensions.push(Text.configure(this.options.text));\n }\n if (this.options.underline !== false) {\n extensions.push(Underline.configure((_c = this.options) == null ? void 0 : _c.underline));\n }\n if (this.options.trailingNode !== false) {\n extensions.push(TrailingNode.configure((_d = this.options) == null ? void 0 : _d.trailingNode));\n }\n return extensions;\n }\n});\n\n// src/index.ts\nvar index_default = StarterKit;\nexport {\n StarterKit,\n index_default as default\n};\n//# sourceMappingURL=index.js.map","// src/code-block-lowlight.ts\nimport { CodeBlock } from \"@tiptap/extension-code-block\";\n\n// src/lowlight-plugin.ts\nimport { findChildren } from \"@tiptap/core\";\nimport { Plugin, PluginKey } from \"@tiptap/pm/state\";\nimport { Decoration, DecorationSet } from \"@tiptap/pm/view\";\nimport highlight from \"highlight.js/lib/core\";\nfunction parseNodes(nodes, className = []) {\n return nodes.flatMap((node) => {\n const classes = [...className, ...node.properties ? node.properties.className : []];\n if (node.children) {\n return parseNodes(node.children, classes);\n }\n return {\n text: node.value,\n classes\n };\n });\n}\nfunction getHighlightNodes(result) {\n return result.value || result.children || [];\n}\nfunction registered(aliasOrLanguage) {\n return Boolean(highlight.getLanguage(aliasOrLanguage));\n}\nfunction getDecorations({\n doc,\n name,\n lowlight,\n defaultLanguage\n}) {\n const decorations = [];\n findChildren(doc, (node) => node.type.name === name).forEach((block) => {\n var _a;\n let from = block.pos + 1;\n const language = block.node.attrs.language || defaultLanguage;\n const languages = lowlight.listLanguages();\n const nodes = language && (languages.includes(language) || registered(language) || ((_a = lowlight.registered) == null ? void 0 : _a.call(lowlight, language))) ? getHighlightNodes(lowlight.highlight(language, block.node.textContent)) : getHighlightNodes(lowlight.highlightAuto(block.node.textContent));\n parseNodes(nodes).forEach((node) => {\n const to = from + node.text.length;\n if (node.classes.length) {\n const decoration = Decoration.inline(from, to, {\n class: node.classes.join(\" \")\n });\n decorations.push(decoration);\n }\n from = to;\n });\n });\n return DecorationSet.create(doc, decorations);\n}\nfunction isFunction(param) {\n return typeof param === \"function\";\n}\nfunction LowlightPlugin({\n name,\n lowlight,\n defaultLanguage\n}) {\n if (![\"highlight\", \"highlightAuto\", \"listLanguages\"].every((api) => isFunction(lowlight[api]))) {\n throw Error(\n \"You should provide an instance of lowlight to use the code-block-lowlight extension\"\n );\n }\n const lowlightPlugin = new Plugin({\n key: new PluginKey(\"lowlight\"),\n state: {\n init: (_, { doc }) => getDecorations({\n doc,\n name,\n lowlight,\n defaultLanguage\n }),\n apply: (transaction, decorationSet, oldState, newState) => {\n const oldNodeName = oldState.selection.$head.parent.type.name;\n const newNodeName = newState.selection.$head.parent.type.name;\n const oldNodes = findChildren(oldState.doc, (node) => node.type.name === name);\n const newNodes = findChildren(newState.doc, (node) => node.type.name === name);\n if (transaction.docChanged && // Apply decorations if:\n // selection includes named node,\n ([oldNodeName, newNodeName].includes(name) || // OR transaction adds/removes named node,\n newNodes.length !== oldNodes.length || // OR transaction has changes that completely encapsulte a node\n // (for example, a transaction that affects the entire document).\n // Such transactions can happen during collab syncing via y-prosemirror, for example.\n transaction.steps.some((step) => {\n return (\n // @ts-ignore\n step.from !== void 0 && // @ts-ignore\n step.to !== void 0 && oldNodes.some((node) => {\n return (\n // @ts-ignore\n node.pos >= step.from && // @ts-ignore\n node.pos + node.node.nodeSize <= step.to\n );\n })\n );\n }))) {\n return getDecorations({\n doc: transaction.doc,\n name,\n lowlight,\n defaultLanguage\n });\n }\n return decorationSet.map(transaction.mapping, transaction.doc);\n }\n },\n props: {\n decorations(state) {\n return lowlightPlugin.getState(state);\n }\n }\n });\n return lowlightPlugin;\n}\n\n// src/code-block-lowlight.ts\nvar CodeBlockLowlight = CodeBlock.extend({\n addOptions() {\n var _a;\n return {\n ...(_a = this.parent) == null ? void 0 : _a.call(this),\n lowlight: {},\n languageClassPrefix: \"language-\",\n exitOnTripleEnter: true,\n exitOnArrowDown: true,\n defaultLanguage: null,\n enableTabIndentation: false,\n tabSize: 4,\n HTMLAttributes: {}\n };\n },\n addProseMirrorPlugins() {\n var _a;\n return [\n ...((_a = this.parent) == null ? void 0 : _a.call(this)) || [],\n LowlightPlugin({\n name: this.name,\n lowlight: this.options.lowlight,\n defaultLanguage: this.options.defaultLanguage\n })\n ];\n }\n});\n\n// src/index.ts\nvar index_default = CodeBlockLowlight;\nexport {\n CodeBlockLowlight,\n index_default as default\n};\n//# sourceMappingURL=index.js.map","// src/suggestion.ts\nimport { Plugin, PluginKey } from \"@tiptap/pm/state\";\n\n// src/findSuggestionMatch.ts\nimport { escapeForRegEx } from \"@tiptap/core\";\nfunction findSuggestionMatch(config) {\n var _a;\n const {\n char,\n allowSpaces: allowSpacesOption,\n allowToIncludeChar,\n allowedPrefixes,\n startOfLine,\n $position\n } = config;\n const allowSpaces = allowSpacesOption && !allowToIncludeChar;\n const escapedChar = escapeForRegEx(char);\n const suffix = new RegExp(`\\\\s${escapedChar}$`);\n const prefix = startOfLine ? \"^\" : \"\";\n const finalEscapedChar = allowToIncludeChar ? \"\" : escapedChar;\n const regexp = allowSpaces ? new RegExp(`${prefix}${escapedChar}.*?(?=\\\\s${finalEscapedChar}|$)`, \"gm\") : new RegExp(`${prefix}(?:^)?${escapedChar}[^\\\\s${finalEscapedChar}]*`, \"gm\");\n const text = ((_a = $position.nodeBefore) == null ? void 0 : _a.isText) && $position.nodeBefore.text;\n if (!text) {\n return null;\n }\n const textFrom = $position.pos - text.length;\n const match = Array.from(text.matchAll(regexp)).pop();\n if (!match || match.input === void 0 || match.index === void 0) {\n return null;\n }\n const matchPrefix = match.input.slice(Math.max(0, match.index - 1), match.index);\n const matchPrefixIsAllowed = new RegExp(`^[${allowedPrefixes == null ? void 0 : allowedPrefixes.join(\"\")}\\0]?$`).test(matchPrefix);\n if (allowedPrefixes !== null && !matchPrefixIsAllowed) {\n return null;\n }\n const from = textFrom + match.index;\n let to = from + match[0].length;\n if (allowSpaces && suffix.test(text.slice(to - 1, to + 1))) {\n match[0] += \" \";\n to += 1;\n }\n if (from < $position.pos && to >= $position.pos) {\n return {\n range: {\n from,\n to\n },\n query: match[0].slice(char.length),\n text: match[0]\n };\n }\n return null;\n}\n\n// src/helpers.ts\nfunction hasInsertedWhitespace(transaction) {\n if (!transaction.docChanged) {\n return false;\n }\n return transaction.steps.some((step) => {\n const slice = step.slice;\n if (!(slice == null ? void 0 : slice.content)) {\n return false;\n }\n const inserted = slice.content.textBetween(0, slice.content.size, \"\\n\");\n return /\\s/.test(inserted);\n });\n}\nfunction getAnchorClientRect(editor) {\n return () => {\n const pos = editor.state.selection.$anchor.pos;\n const coords = editor.view.coordsAtPos(pos);\n const { top, right, bottom, left } = coords;\n try {\n return new DOMRect(left, top, right - left, bottom - top);\n } catch {\n return null;\n }\n };\n}\nfunction clientRectFor(editor, view, decorationNode, pluginKey) {\n if (!decorationNode) {\n return getAnchorClientRect(editor);\n }\n return () => {\n const state = pluginKey.getState(editor.state);\n const decorationId = state == null ? void 0 : state.decorationId;\n const currentDecorationNode = view.dom.querySelector(`[data-decoration-id=\"${decorationId}\"]`);\n return (currentDecorationNode == null ? void 0 : currentDecorationNode.getBoundingClientRect()) || null;\n };\n}\nfunction shouldKeepDismissed({\n match,\n dismissedRange,\n state,\n transaction,\n editor,\n shouldResetDismissed,\n effectiveAllowSpaces\n}) {\n if (shouldResetDismissed == null ? void 0 : shouldResetDismissed({\n editor,\n state,\n range: dismissedRange,\n match,\n transaction,\n allowSpaces: effectiveAllowSpaces\n })) {\n return false;\n }\n if (effectiveAllowSpaces) {\n return match.range.from === dismissedRange.from;\n }\n return match.range.from === dismissedRange.from && !hasInsertedWhitespace(transaction);\n}\nfunction dispatchExit({\n view,\n pluginKeyRef\n}) {\n const tr = view.state.tr.setMeta(pluginKeyRef, { exit: true });\n view.dispatch(tr);\n}\n\n// src/plugin/props.ts\nimport { Decoration, DecorationSet } from \"@tiptap/pm/view\";\nfunction createSuggestionProps({\n pluginKey,\n decorationTag,\n decorationClass,\n decorationContent,\n decorationEmptyClass,\n renderer,\n dispatchExit: dispatchExit2\n}) {\n return {\n /**\n * Call the keydown hook if suggestion is active.\n */\n handleKeyDown(view, event) {\n var _a, _b;\n const state = pluginKey.getState(view.state);\n if (!state.active) {\n return false;\n }\n if (event.key === \"Escape\" || event.key === \"Esc\") {\n (_a = renderer == null ? void 0 : renderer.onKeyDown) == null ? void 0 : _a.call(renderer, { view, event, range: state.range });\n dispatchExit2(view);\n return true;\n }\n const handled = ((_b = renderer == null ? void 0 : renderer.onKeyDown) == null ? void 0 : _b.call(renderer, { view, event, range: state.range })) || false;\n return handled;\n },\n /**\n * Setup decorator on the currently active suggestion.\n */\n decorations(state) {\n const pluginState = pluginKey.getState(state);\n const { active, range, decorationId, query } = pluginState;\n if (!active) {\n return null;\n }\n const isEmpty = !(query == null ? void 0 : query.length);\n const classNames = [decorationClass];\n if (isEmpty) {\n classNames.push(decorationEmptyClass);\n }\n return DecorationSet.create(state.doc, [\n Decoration.inline(range.from, range.to, {\n nodeName: decorationTag,\n class: classNames.join(\" \"),\n \"data-decoration-id\": decorationId || void 0,\n \"data-decoration-content\": decorationContent\n })\n ]);\n }\n };\n}\n\n// src/plugin/state.ts\nfunction createSuggestionState({\n editor,\n char,\n effectiveAllowSpaces,\n allowToIncludeChar,\n allowedPrefixes,\n startOfLine,\n findSuggestionMatch: findSuggestionMatch2,\n allow,\n shouldShow,\n shouldKeepDismissed: shouldKeepDismissed2,\n pluginKey\n}) {\n return {\n /**\n * Initialize the plugin's internal state.\n */\n init() {\n return {\n active: false,\n range: { from: 0, to: 0 },\n query: null,\n text: null,\n composing: false,\n dismissedRange: null\n };\n },\n /**\n * Apply changes to the plugin state from a view transaction.\n */\n apply(transaction, prev, _oldState, state) {\n const { isEditable } = editor;\n const { composing } = editor.view;\n const { selection } = transaction;\n const { empty, from } = selection;\n const next = { ...prev };\n const meta = transaction.getMeta(pluginKey);\n if (meta && meta.exit) {\n next.active = false;\n next.decorationId = null;\n next.range = { from: 0, to: 0 };\n next.query = null;\n next.text = null;\n next.dismissedRange = prev.active ? { ...prev.range } : prev.dismissedRange;\n return next;\n }\n next.composing = composing;\n if (transaction.docChanged && next.dismissedRange !== null) {\n next.dismissedRange = {\n from: transaction.mapping.map(next.dismissedRange.from),\n to: transaction.mapping.map(next.dismissedRange.to)\n };\n }\n if (isEditable && (empty || editor.view.composing)) {\n if ((from < prev.range.from || from > prev.range.to) && !composing && !prev.composing) {\n next.active = false;\n }\n const match = findSuggestionMatch2({\n char,\n allowSpaces: effectiveAllowSpaces,\n allowToIncludeChar,\n allowedPrefixes,\n startOfLine,\n $position: selection.$from\n });\n const decorationId = `id_${Math.floor(Math.random() * 4294967295)}`;\n if (match && allow({\n editor,\n state,\n range: match.range,\n isActive: prev.active\n }) && (!shouldShow || shouldShow({\n editor,\n range: match.range,\n query: match.query,\n text: match.text,\n transaction\n }))) {\n if (next.dismissedRange !== null && !shouldKeepDismissed2({\n match,\n dismissedRange: next.dismissedRange,\n state,\n transaction\n })) {\n next.dismissedRange = null;\n }\n if (next.dismissedRange === null) {\n next.active = true;\n next.decorationId = prev.decorationId || decorationId;\n next.range = match.range;\n next.query = match.query;\n next.text = match.text;\n } else {\n next.active = false;\n }\n } else {\n if (!match) {\n next.dismissedRange = null;\n }\n next.active = false;\n }\n } else {\n next.active = false;\n }\n if (!next.active) {\n next.decorationId = null;\n next.range = { from: 0, to: 0 };\n next.query = null;\n next.text = null;\n }\n return next;\n }\n };\n}\n\n// src/plugin/async.ts\nfunction createSuggestionAsyncRequestManager({\n editor,\n items\n}) {\n let abortController = null;\n let debounceTimer = null;\n let debounceResolve = null;\n const clearDebounceTimer = () => {\n if (debounceTimer !== null) {\n clearTimeout(debounceTimer);\n debounceTimer = null;\n }\n debounceResolve == null ? void 0 : debounceResolve();\n debounceResolve = null;\n };\n const waitForDebounce = (delay) => {\n return new Promise((resolve) => {\n debounceResolve = resolve;\n debounceTimer = setTimeout(() => {\n debounceTimer = null;\n const pendingResolve = debounceResolve;\n debounceResolve = null;\n pendingResolve == null ? void 0 : pendingResolve();\n }, delay);\n });\n };\n const abort = () => {\n abortController == null ? void 0 : abortController.abort();\n clearDebounceTimer();\n abortController = null;\n };\n const fetch = async (query, debounce) => {\n abort();\n abortController = new AbortController();\n const controller = abortController;\n if (debounce > 0) {\n await waitForDebounce(debounce);\n }\n if (abortController !== controller || controller.signal.aborted) {\n return { status: \"aborted\" };\n }\n try {\n const result = await items({\n editor,\n query,\n signal: controller.signal\n });\n if (abortController !== controller || controller.signal.aborted) {\n return { status: \"aborted\" };\n }\n return { status: \"resolved\", items: result };\n } catch {\n if (abortController !== controller || controller.signal.aborted) {\n return { status: \"aborted\" };\n }\n return { status: \"error\" };\n }\n };\n return {\n abort,\n fetch\n };\n}\n\n// src/plugin/floating-ui.ts\nimport {\n autoUpdate,\n computePosition,\n flip as floatingUiFlip,\n offset as floatingUiOffset\n} from \"@floating-ui/dom\";\nfunction createSuggestionFloatingUiConfig({\n placement,\n offset,\n flip,\n floatingUi\n}) {\n var _a, _b, _c, _d;\n const middleware = [\n floatingUiOffset({\n mainAxis: (_a = offset.mainAxis) != null ? _a : 4,\n crossAxis: (_b = offset.crossAxis) != null ? _b : 0\n })\n ];\n if (flip) {\n middleware.push(floatingUiFlip());\n }\n if ((_c = floatingUi == null ? void 0 : floatingUi.middleware) == null ? void 0 : _c.length) {\n middleware.push(...floatingUi.middleware);\n }\n return {\n placement,\n strategy: (_d = floatingUi == null ? void 0 : floatingUi.strategy) != null ? _d : \"absolute\",\n middleware\n };\n}\nfunction resolveContainer(container) {\n if (container instanceof HTMLElement) {\n return container;\n }\n if (typeof container === \"string\") {\n try {\n const found = document.querySelector(container);\n if (found) {\n return found;\n }\n } catch {\n return document.body;\n }\n }\n return document.body;\n}\nfunction createMount({\n getReferenceRect,\n contextElement,\n config,\n container,\n dismissOnOutsideClick,\n dismiss\n}) {\n return (element, options = {}) => {\n const reference = {\n getBoundingClientRect: () => {\n var _a;\n return (_a = getReferenceRect()) != null ? _a : new DOMRect();\n },\n contextElement\n };\n let positioned = false;\n const mountedByUs = !element.isConnected;\n if (mountedByUs) {\n resolveContainer(container).appendChild(element);\n }\n if (!options.onPosition) {\n element.style.visibility = \"hidden\";\n element.style.width = \"max-content\";\n }\n const update = () => {\n computePosition(reference, element, {\n placement: config.placement,\n strategy: config.strategy,\n middleware: config.middleware\n }).then(({ x, y, placement, strategy }) => {\n if (options.onPosition) {\n options.onPosition({ x, y, placement, strategy });\n return;\n }\n Object.assign(element.style, {\n position: strategy,\n left: `${x}px`,\n top: `${y}px`\n });\n if (!positioned) {\n positioned = true;\n element.style.visibility = \"\";\n }\n });\n };\n const cleanupAutoUpdate = autoUpdate(reference, element, update, options.autoUpdate);\n let onOutsidePointerDown;\n if (dismissOnOutsideClick) {\n onOutsidePointerDown = (event) => {\n const target = event.target;\n if (!(target instanceof Node) || element.contains(target) || contextElement.contains(target)) {\n return;\n }\n dismiss();\n };\n document.addEventListener(\"pointerdown\", onOutsidePointerDown, true);\n }\n return () => {\n cleanupAutoUpdate();\n if (onOutsidePointerDown) {\n document.removeEventListener(\"pointerdown\", onOutsidePointerDown, true);\n }\n if (mountedByUs) {\n element.remove();\n }\n };\n };\n}\n\n// src/plugin/view.ts\nfunction createSuggestionView({\n editor,\n pluginKey,\n items,\n renderer,\n minQueryLength,\n debounce,\n initialItems,\n placement,\n offset: offsetOption,\n container,\n flip,\n floatingUi,\n dismissOnOutsideClick,\n command,\n clientRectFor: clientRectFor2,\n dispatchExit: dispatchExit2\n}) {\n let props;\n const asyncRequest = createSuggestionAsyncRequestManager({\n editor,\n items\n });\n const floatingUiConfig = createSuggestionFloatingUiConfig({\n placement,\n offset: offsetOption,\n flip,\n floatingUi\n });\n function dispatchStateUpdate(state, dispatchProps) {\n var _a, _b, _c;\n switch (state) {\n case \"started\":\n (_a = renderer == null ? void 0 : renderer.onStart) == null ? void 0 : _a.call(renderer, dispatchProps);\n break;\n case \"updated\":\n (_b = renderer == null ? void 0 : renderer.onUpdate) == null ? void 0 : _b.call(renderer, dispatchProps);\n break;\n case \"stopped\":\n (_c = renderer == null ? void 0 : renderer.onExit) == null ? void 0 : _c.call(renderer, dispatchProps);\n break;\n default:\n break;\n }\n }\n return {\n update: async (view, prevState) => {\n var _a, _b, _c, _d;\n const prev = pluginKey.getState(prevState);\n const next = pluginKey.getState(view.state);\n if (!prev || !next) {\n return;\n }\n let currentState = null;\n const queryChanged = prev.query !== next.query;\n const textChanged = prev.text !== next.text;\n const rangeChanged = prev.range.from !== next.range.from || prev.range.to !== next.range.to;\n const effectiveQueryChanged = queryChanged || textChanged || rangeChanged;\n if (!prev.active && next.active) {\n currentState = \"started\";\n } else if (prev.active && !next.active) {\n currentState = \"stopped\";\n } else if (next.active && effectiveQueryChanged) {\n currentState = \"updated\";\n } else {\n return;\n }\n const state = currentState === \"stopped\" ? prev : next;\n const decorationNode = view.dom.querySelector(`[data-decoration-id=\"${state.decorationId}\"]`);\n const clientRect = clientRectFor2(view, decorationNode);\n const exceedsMinQueryLength = minQueryLength === 0 || (state.query ? state.query.length >= minQueryLength : false);\n const willFetch = (currentState === \"started\" || currentState === \"updated\") && exceedsMinQueryLength;\n props = {\n editor,\n range: state.range,\n query: state.query || \"\",\n text: state.text || \"\",\n items: initialItems != null ? initialItems : [],\n command: (commandProps) => {\n return command({\n editor,\n range: state.range,\n props: commandProps\n });\n },\n decorationNode,\n clientRect,\n loading: willFetch,\n placement,\n offset: { mainAxis: (_a = offsetOption.mainAxis) != null ? _a : 4, crossAxis: (_b = offsetOption.crossAxis) != null ? _b : 0 },\n container,\n flip,\n floatingUi: floatingUiConfig,\n mount: createMount({\n getReferenceRect: clientRect,\n contextElement: view.dom,\n config: floatingUiConfig,\n container,\n dismissOnOutsideClick,\n dismiss: () => dispatchExit2(editor.view)\n })\n };\n if (currentState === \"started\") {\n (_c = renderer == null ? void 0 : renderer.onBeforeStart) == null ? void 0 : _c.call(renderer, props);\n }\n if (currentState === \"updated\") {\n (_d = renderer == null ? void 0 : renderer.onBeforeUpdate) == null ? void 0 : _d.call(renderer, props);\n }\n if (currentState === \"started\") {\n dispatchStateUpdate(currentState, props);\n }\n if (currentState === \"started\" || currentState === \"updated\") {\n if (!willFetch) {\n asyncRequest.abort();\n props = { ...props, items: initialItems != null ? initialItems : [], loading: false };\n } else {\n props = { ...props, items: initialItems != null ? initialItems : [], loading: true };\n currentState = \"updated\";\n dispatchStateUpdate(currentState, props);\n const result = await asyncRequest.fetch(state.query || \"\", debounce);\n if (result.status === \"aborted\") {\n return;\n }\n const currentPluginState = pluginKey.getState(view.state);\n if (!(currentPluginState == null ? void 0 : currentPluginState.active)) {\n asyncRequest.abort();\n return;\n }\n props = result.status === \"resolved\" ? {\n ...props,\n items: result.items,\n loading: false\n } : {\n ...props,\n loading: false\n };\n }\n }\n if (currentState === \"stopped\") {\n asyncRequest.abort();\n dispatchStateUpdate(currentState, props);\n props = void 0;\n return;\n }\n if (currentState === \"updated\") {\n dispatchStateUpdate(currentState, props);\n }\n },\n destroy: () => {\n var _a;\n asyncRequest.abort();\n if (!props) {\n return;\n }\n (_a = renderer == null ? void 0 : renderer.onExit) == null ? void 0 : _a.call(renderer, props);\n }\n };\n}\n\n// src/suggestion.ts\nvar SuggestionPluginKey = new PluginKey(\"suggestion\");\nfunction Suggestion({\n pluginKey = SuggestionPluginKey,\n editor,\n char = \"@\",\n allowSpaces = false,\n allowToIncludeChar = false,\n allowedPrefixes = [\" \"],\n startOfLine = false,\n decorationTag = \"span\",\n decorationClass = \"suggestion\",\n decorationContent = \"\",\n decorationEmptyClass = \"is-empty\",\n command = () => null,\n items = () => [],\n minQueryLength = 0,\n debounce = 0,\n initialItems,\n placement = \"bottom-start\",\n offset: offsetOption = {},\n container,\n flip = true,\n floatingUi,\n dismissOnOutsideClick = true,\n render = () => ({}),\n allow = () => true,\n findSuggestionMatch: findSuggestionMatch2 = findSuggestionMatch,\n shouldShow,\n shouldResetDismissed\n}) {\n const renderer = render == null ? void 0 : render();\n const effectiveAllowSpaces = allowSpaces && !allowToIncludeChar;\n const clientRectFor2 = (view, decorationNode) => clientRectFor(editor, view, decorationNode, pluginKey);\n function shouldKeepDismissed2(props) {\n return shouldKeepDismissed({\n ...props,\n editor,\n shouldResetDismissed,\n effectiveAllowSpaces\n });\n }\n const dispatchExit2 = (view) => dispatchExit({\n view,\n pluginKeyRef: pluginKey\n });\n return new Plugin({\n key: pluginKey,\n view: () => createSuggestionView({\n editor,\n pluginKey,\n items,\n renderer,\n minQueryLength,\n debounce,\n initialItems,\n placement,\n offset: offsetOption,\n container,\n flip,\n floatingUi,\n dismissOnOutsideClick,\n command,\n clientRectFor: clientRectFor2,\n dispatchExit: dispatchExit2\n }),\n state: createSuggestionState({\n editor,\n char,\n effectiveAllowSpaces,\n allowToIncludeChar,\n allowedPrefixes,\n startOfLine,\n findSuggestionMatch: findSuggestionMatch2,\n allow,\n shouldShow,\n shouldKeepDismissed: shouldKeepDismissed2,\n pluginKey\n }),\n props: createSuggestionProps({\n pluginKey,\n decorationTag,\n decorationClass,\n decorationContent,\n decorationEmptyClass,\n renderer,\n dispatchExit: dispatchExit2\n })\n });\n}\nfunction exitSuggestion(view, pluginKeyRef = SuggestionPluginKey) {\n const tr = view.state.tr.setMeta(pluginKeyRef, { exit: true });\n view.dispatch(tr);\n}\n\n// src/index.ts\nvar index_default = Suggestion;\nexport {\n Suggestion,\n SuggestionPluginKey,\n index_default as default,\n exitSuggestion,\n findSuggestionMatch\n};\n//# sourceMappingURL=index.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nvar rowSizeBase = {\n width: '100%',\n height: '10px',\n top: '0px',\n left: '0px',\n cursor: 'row-resize',\n};\nvar colSizeBase = {\n width: '10px',\n height: '100%',\n top: '0px',\n left: '0px',\n cursor: 'col-resize',\n};\nvar edgeBase = {\n width: '20px',\n height: '20px',\n position: 'absolute',\n};\nvar styles = {\n top: __assign(__assign({}, rowSizeBase), { top: '-5px' }),\n right: __assign(__assign({}, colSizeBase), { left: undefined, right: '-5px' }),\n bottom: __assign(__assign({}, rowSizeBase), { top: undefined, bottom: '-5px' }),\n left: __assign(__assign({}, colSizeBase), { left: '-5px' }),\n topRight: __assign(__assign({}, edgeBase), { right: '-10px', top: '-10px', cursor: 'ne-resize' }),\n bottomRight: __assign(__assign({}, edgeBase), { right: '-10px', bottom: '-10px', cursor: 'se-resize' }),\n bottomLeft: __assign(__assign({}, edgeBase), { left: '-10px', bottom: '-10px', cursor: 'sw-resize' }),\n topLeft: __assign(__assign({}, edgeBase), { left: '-10px', top: '-10px', cursor: 'nw-resize' }),\n};\nvar Resizer = /** @class */ (function (_super) {\n __extends(Resizer, _super);\n function Resizer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onMouseDown = function (e) {\n _this.props.onResizeStart(e, _this.props.direction);\n };\n _this.onTouchStart = function (e) {\n _this.props.onResizeStart(e, _this.props.direction);\n };\n return _this;\n }\n Resizer.prototype.render = function () {\n return (React.createElement(\"div\", { className: this.props.className || '', style: __assign(__assign({ position: 'absolute', userSelect: 'none' }, styles[this.props.direction]), (this.props.replaceStyles || {})), onMouseDown: this.onMouseDown, onTouchStart: this.onTouchStart }, this.props.children));\n };\n return Resizer;\n}(React.PureComponent));\nexport { Resizer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { flushSync } from 'react-dom';\nimport { Resizer } from './resizer';\nvar DEFAULT_SIZE = {\n width: 'auto',\n height: 'auto',\n};\nvar clamp = function (n, min, max) { return Math.max(Math.min(n, max), min); };\nvar snap = function (n, size) { return Math.round(n / size) * size; };\nvar hasDirection = function (dir, target) {\n return new RegExp(dir, 'i').test(target);\n};\n// INFO: In case of window is a Proxy and does not porxy Events correctly, use isTouchEvent & isMouseEvent to distinguish event type instead of `instanceof`.\nvar isTouchEvent = function (event) {\n return Boolean(event.touches && event.touches.length);\n};\nvar isMouseEvent = function (event) {\n return Boolean((event.clientX || event.clientX === 0) &&\n (event.clientY || event.clientY === 0));\n};\nvar findClosestSnap = function (n, snapArray, snapGap) {\n if (snapGap === void 0) { snapGap = 0; }\n var closestGapIndex = snapArray.reduce(function (prev, curr, index) { return (Math.abs(curr - n) < Math.abs(snapArray[prev] - n) ? index : prev); }, 0);\n var gap = Math.abs(snapArray[closestGapIndex] - n);\n return snapGap === 0 || gap < snapGap ? snapArray[closestGapIndex] : n;\n};\nvar getStringSize = function (n) {\n n = n.toString();\n if (n === 'auto') {\n return n;\n }\n if (n.endsWith('px')) {\n return n;\n }\n if (n.endsWith('%')) {\n return n;\n }\n if (n.endsWith('vh')) {\n return n;\n }\n if (n.endsWith('vw')) {\n return n;\n }\n if (n.endsWith('vmax')) {\n return n;\n }\n if (n.endsWith('vmin')) {\n return n;\n }\n return n + \"px\";\n};\nvar getPixelSize = function (size, parentSize, innerWidth, innerHeight) {\n if (size && typeof size === 'string') {\n if (size.endsWith('px')) {\n return Number(size.replace('px', ''));\n }\n if (size.endsWith('%')) {\n var ratio = Number(size.replace('%', '')) / 100;\n return parentSize * ratio;\n }\n if (size.endsWith('vw')) {\n var ratio = Number(size.replace('vw', '')) / 100;\n return innerWidth * ratio;\n }\n if (size.endsWith('vh')) {\n var ratio = Number(size.replace('vh', '')) / 100;\n return innerHeight * ratio;\n }\n }\n return size;\n};\nvar calculateNewMax = function (parentSize, innerWidth, innerHeight, maxWidth, maxHeight, minWidth, minHeight) {\n maxWidth = getPixelSize(maxWidth, parentSize.width, innerWidth, innerHeight);\n maxHeight = getPixelSize(maxHeight, parentSize.height, innerWidth, innerHeight);\n minWidth = getPixelSize(minWidth, parentSize.width, innerWidth, innerHeight);\n minHeight = getPixelSize(minHeight, parentSize.height, innerWidth, innerHeight);\n return {\n maxWidth: typeof maxWidth === 'undefined' ? undefined : Number(maxWidth),\n maxHeight: typeof maxHeight === 'undefined' ? undefined : Number(maxHeight),\n minWidth: typeof minWidth === 'undefined' ? undefined : Number(minWidth),\n minHeight: typeof minHeight === 'undefined' ? undefined : Number(minHeight),\n };\n};\nvar definedProps = [\n 'as',\n 'style',\n 'className',\n 'grid',\n 'snap',\n 'bounds',\n 'boundsByDirection',\n 'size',\n 'defaultSize',\n 'minWidth',\n 'minHeight',\n 'maxWidth',\n 'maxHeight',\n 'lockAspectRatio',\n 'lockAspectRatioExtraWidth',\n 'lockAspectRatioExtraHeight',\n 'enable',\n 'handleStyles',\n 'handleClasses',\n 'handleWrapperStyle',\n 'handleWrapperClass',\n 'children',\n 'onResizeStart',\n 'onResize',\n 'onResizeStop',\n 'handleComponent',\n 'scale',\n 'resizeRatio',\n 'snapGap',\n];\n// HACK: This class is used to calculate % size.\nvar baseClassName = '__resizable_base__';\nvar Resizable = /** @class */ (function (_super) {\n __extends(Resizable, _super);\n function Resizable(props) {\n var _this = _super.call(this, props) || this;\n _this.ratio = 1;\n _this.resizable = null;\n // For parent boundary\n _this.parentLeft = 0;\n _this.parentTop = 0;\n // For boundary\n _this.resizableLeft = 0;\n _this.resizableRight = 0;\n _this.resizableTop = 0;\n _this.resizableBottom = 0;\n // For target boundary\n _this.targetLeft = 0;\n _this.targetTop = 0;\n _this.appendBase = function () {\n if (!_this.resizable || !_this.window) {\n return null;\n }\n var parent = _this.parentNode;\n if (!parent) {\n return null;\n }\n var element = _this.window.document.createElement('div');\n element.style.width = '100%';\n element.style.height = '100%';\n element.style.position = 'absolute';\n element.style.transform = 'scale(0, 0)';\n element.style.left = '0';\n element.style.flex = '0 0 100%';\n if (element.classList) {\n element.classList.add(baseClassName);\n }\n else {\n element.className += baseClassName;\n }\n parent.appendChild(element);\n return element;\n };\n _this.removeBase = function (base) {\n var parent = _this.parentNode;\n if (!parent) {\n return;\n }\n parent.removeChild(base);\n };\n _this.ref = function (c) {\n if (c) {\n _this.resizable = c;\n }\n };\n _this.state = {\n isResizing: false,\n width: typeof (_this.propsSize && _this.propsSize.width) === 'undefined'\n ? 'auto'\n : _this.propsSize && _this.propsSize.width,\n height: typeof (_this.propsSize && _this.propsSize.height) === 'undefined'\n ? 'auto'\n : _this.propsSize && _this.propsSize.height,\n direction: 'right',\n original: {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n },\n backgroundStyle: {\n height: '100%',\n width: '100%',\n backgroundColor: 'rgba(0,0,0,0)',\n cursor: 'auto',\n opacity: 0,\n position: 'fixed',\n zIndex: 9999,\n top: '0',\n left: '0',\n bottom: '0',\n right: '0',\n },\n flexBasis: undefined,\n };\n _this.onResizeStart = _this.onResizeStart.bind(_this);\n _this.onMouseMove = _this.onMouseMove.bind(_this);\n _this.onMouseUp = _this.onMouseUp.bind(_this);\n return _this;\n }\n Object.defineProperty(Resizable.prototype, \"parentNode\", {\n get: function () {\n if (!this.resizable) {\n return null;\n }\n return this.resizable.parentNode;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"window\", {\n get: function () {\n if (!this.resizable) {\n return null;\n }\n if (!this.resizable.ownerDocument) {\n return null;\n }\n return this.resizable.ownerDocument.defaultView;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"propsSize\", {\n get: function () {\n return this.props.size || this.props.defaultSize || DEFAULT_SIZE;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"size\", {\n get: function () {\n var width = 0;\n var height = 0;\n if (this.resizable && this.window) {\n var orgWidth = this.resizable.offsetWidth;\n var orgHeight = this.resizable.offsetHeight;\n // HACK: Set position `relative` to get parent size.\n // This is because when re-resizable set `absolute`, I can not get base width correctly.\n var orgPosition = this.resizable.style.position;\n if (orgPosition !== 'relative') {\n this.resizable.style.position = 'relative';\n }\n // INFO: Use original width or height if set auto.\n width = this.resizable.style.width !== 'auto' ? this.resizable.offsetWidth : orgWidth;\n height = this.resizable.style.height !== 'auto' ? this.resizable.offsetHeight : orgHeight;\n // Restore original position\n this.resizable.style.position = orgPosition;\n }\n return { width: width, height: height };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Resizable.prototype, \"sizeStyle\", {\n get: function () {\n var _this = this;\n var size = this.props.size;\n var getSize = function (key) {\n if (typeof _this.state[key] === 'undefined' || _this.state[key] === 'auto') {\n return 'auto';\n }\n if (_this.propsSize && _this.propsSize[key] && _this.propsSize[key].toString().endsWith('%')) {\n if (_this.state[key].toString().endsWith('%')) {\n return _this.state[key].toString();\n }\n var parentSize = _this.getParentSize();\n var value = Number(_this.state[key].toString().replace('px', ''));\n var percent = (value / parentSize[key]) * 100;\n return percent + \"%\";\n }\n return getStringSize(_this.state[key]);\n };\n var width = size && typeof size.width !== 'undefined' && !this.state.isResizing\n ? getStringSize(size.width)\n : getSize('width');\n var height = size && typeof size.height !== 'undefined' && !this.state.isResizing\n ? getStringSize(size.height)\n : getSize('height');\n return { width: width, height: height };\n },\n enumerable: false,\n configurable: true\n });\n Resizable.prototype.getParentSize = function () {\n if (!this.parentNode) {\n if (!this.window) {\n return { width: 0, height: 0 };\n }\n return { width: this.window.innerWidth, height: this.window.innerHeight };\n }\n var base = this.appendBase();\n if (!base) {\n return { width: 0, height: 0 };\n }\n // INFO: To calculate parent width with flex layout\n var wrapChanged = false;\n var wrap = this.parentNode.style.flexWrap;\n if (wrap !== 'wrap') {\n wrapChanged = true;\n this.parentNode.style.flexWrap = 'wrap';\n // HACK: Use relative to get parent padding size\n }\n base.style.position = 'relative';\n base.style.minWidth = '100%';\n base.style.minHeight = '100%';\n var size = {\n width: base.offsetWidth,\n height: base.offsetHeight,\n };\n if (wrapChanged) {\n this.parentNode.style.flexWrap = wrap;\n }\n this.removeBase(base);\n return size;\n };\n Resizable.prototype.bindEvents = function () {\n if (this.window) {\n this.window.addEventListener('mouseup', this.onMouseUp);\n this.window.addEventListener('mousemove', this.onMouseMove);\n this.window.addEventListener('mouseleave', this.onMouseUp);\n this.window.addEventListener('touchmove', this.onMouseMove, {\n capture: true,\n passive: false,\n });\n this.window.addEventListener('touchend', this.onMouseUp);\n }\n };\n Resizable.prototype.unbindEvents = function () {\n if (this.window) {\n this.window.removeEventListener('mouseup', this.onMouseUp);\n this.window.removeEventListener('mousemove', this.onMouseMove);\n this.window.removeEventListener('mouseleave', this.onMouseUp);\n this.window.removeEventListener('touchmove', this.onMouseMove, true);\n this.window.removeEventListener('touchend', this.onMouseUp);\n }\n };\n Resizable.prototype.componentDidMount = function () {\n if (!this.resizable || !this.window) {\n return;\n }\n var computedStyle = this.window.getComputedStyle(this.resizable);\n this.setState({\n width: this.state.width || this.size.width,\n height: this.state.height || this.size.height,\n flexBasis: computedStyle.flexBasis !== 'auto' ? computedStyle.flexBasis : undefined,\n });\n };\n Resizable.prototype.componentWillUnmount = function () {\n if (this.window) {\n this.unbindEvents();\n }\n };\n Resizable.prototype.createSizeForCssProperty = function (newSize, kind) {\n var propsSize = this.propsSize && this.propsSize[kind];\n return this.state[kind] === 'auto' &&\n this.state.original[kind] === newSize &&\n (typeof propsSize === 'undefined' || propsSize === 'auto')\n ? 'auto'\n : newSize;\n };\n Resizable.prototype.calculateNewMaxFromBoundary = function (maxWidth, maxHeight) {\n var boundsByDirection = this.props.boundsByDirection;\n var direction = this.state.direction;\n var widthByDirection = boundsByDirection && hasDirection('left', direction);\n var heightByDirection = boundsByDirection && hasDirection('top', direction);\n var boundWidth;\n var boundHeight;\n if (this.props.bounds === 'parent') {\n var parent_1 = this.parentNode;\n if (parent_1) {\n boundWidth = widthByDirection\n ? this.resizableRight - this.parentLeft\n : parent_1.offsetWidth + (this.parentLeft - this.resizableLeft);\n boundHeight = heightByDirection\n ? this.resizableBottom - this.parentTop\n : parent_1.offsetHeight + (this.parentTop - this.resizableTop);\n }\n }\n else if (this.props.bounds === 'window') {\n if (this.window) {\n boundWidth = widthByDirection ? this.resizableRight : this.window.innerWidth - this.resizableLeft;\n boundHeight = heightByDirection ? this.resizableBottom : this.window.innerHeight - this.resizableTop;\n }\n }\n else if (this.props.bounds) {\n boundWidth = widthByDirection\n ? this.resizableRight - this.targetLeft\n : this.props.bounds.offsetWidth + (this.targetLeft - this.resizableLeft);\n boundHeight = heightByDirection\n ? this.resizableBottom - this.targetTop\n : this.props.bounds.offsetHeight + (this.targetTop - this.resizableTop);\n }\n if (boundWidth && Number.isFinite(boundWidth)) {\n maxWidth = maxWidth && maxWidth < boundWidth ? maxWidth : boundWidth;\n }\n if (boundHeight && Number.isFinite(boundHeight)) {\n maxHeight = maxHeight && maxHeight < boundHeight ? maxHeight : boundHeight;\n }\n return { maxWidth: maxWidth, maxHeight: maxHeight };\n };\n Resizable.prototype.calculateNewSizeFromDirection = function (clientX, clientY) {\n var scale = this.props.scale || 1;\n var resizeRatio = this.props.resizeRatio || 1;\n var _a = this.state, direction = _a.direction, original = _a.original;\n var _b = this.props, lockAspectRatio = _b.lockAspectRatio, lockAspectRatioExtraHeight = _b.lockAspectRatioExtraHeight, lockAspectRatioExtraWidth = _b.lockAspectRatioExtraWidth;\n var newWidth = original.width;\n var newHeight = original.height;\n var extraHeight = lockAspectRatioExtraHeight || 0;\n var extraWidth = lockAspectRatioExtraWidth || 0;\n if (hasDirection('right', direction)) {\n newWidth = original.width + ((clientX - original.x) * resizeRatio) / scale;\n if (lockAspectRatio) {\n newHeight = (newWidth - extraWidth) / this.ratio + extraHeight;\n }\n }\n if (hasDirection('left', direction)) {\n newWidth = original.width - ((clientX - original.x) * resizeRatio) / scale;\n if (lockAspectRatio) {\n newHeight = (newWidth - extraWidth) / this.ratio + extraHeight;\n }\n }\n if (hasDirection('bottom', direction)) {\n newHeight = original.height + ((clientY - original.y) * resizeRatio) / scale;\n if (lockAspectRatio) {\n newWidth = (newHeight - extraHeight) * this.ratio + extraWidth;\n }\n }\n if (hasDirection('top', direction)) {\n newHeight = original.height - ((clientY - original.y) * resizeRatio) / scale;\n if (lockAspectRatio) {\n newWidth = (newHeight - extraHeight) * this.ratio + extraWidth;\n }\n }\n return { newWidth: newWidth, newHeight: newHeight };\n };\n Resizable.prototype.calculateNewSizeFromAspectRatio = function (newWidth, newHeight, max, min) {\n var _a = this.props, lockAspectRatio = _a.lockAspectRatio, lockAspectRatioExtraHeight = _a.lockAspectRatioExtraHeight, lockAspectRatioExtraWidth = _a.lockAspectRatioExtraWidth;\n var computedMinWidth = typeof min.width === 'undefined' ? 10 : min.width;\n var computedMaxWidth = typeof max.width === 'undefined' || max.width < 0 ? newWidth : max.width;\n var computedMinHeight = typeof min.height === 'undefined' ? 10 : min.height;\n var computedMaxHeight = typeof max.height === 'undefined' || max.height < 0 ? newHeight : max.height;\n var extraHeight = lockAspectRatioExtraHeight || 0;\n var extraWidth = lockAspectRatioExtraWidth || 0;\n if (lockAspectRatio) {\n var extraMinWidth = (computedMinHeight - extraHeight) * this.ratio + extraWidth;\n var extraMaxWidth = (computedMaxHeight - extraHeight) * this.ratio + extraWidth;\n var extraMinHeight = (computedMinWidth - extraWidth) / this.ratio + extraHeight;\n var extraMaxHeight = (computedMaxWidth - extraWidth) / this.ratio + extraHeight;\n var lockedMinWidth = Math.max(computedMinWidth, extraMinWidth);\n var lockedMaxWidth = Math.min(computedMaxWidth, extraMaxWidth);\n var lockedMinHeight = Math.max(computedMinHeight, extraMinHeight);\n var lockedMaxHeight = Math.min(computedMaxHeight, extraMaxHeight);\n newWidth = clamp(newWidth, lockedMinWidth, lockedMaxWidth);\n newHeight = clamp(newHeight, lockedMinHeight, lockedMaxHeight);\n }\n else {\n newWidth = clamp(newWidth, computedMinWidth, computedMaxWidth);\n newHeight = clamp(newHeight, computedMinHeight, computedMaxHeight);\n }\n return { newWidth: newWidth, newHeight: newHeight };\n };\n Resizable.prototype.setBoundingClientRect = function () {\n // For parent boundary\n if (this.props.bounds === 'parent') {\n var parent_2 = this.parentNode;\n if (parent_2) {\n var parentRect = parent_2.getBoundingClientRect();\n this.parentLeft = parentRect.left;\n this.parentTop = parentRect.top;\n }\n }\n // For target(html element) boundary\n if (this.props.bounds && typeof this.props.bounds !== 'string') {\n var targetRect = this.props.bounds.getBoundingClientRect();\n this.targetLeft = targetRect.left;\n this.targetTop = targetRect.top;\n }\n // For boundary\n if (this.resizable) {\n var _a = this.resizable.getBoundingClientRect(), left = _a.left, top_1 = _a.top, right = _a.right, bottom = _a.bottom;\n this.resizableLeft = left;\n this.resizableRight = right;\n this.resizableTop = top_1;\n this.resizableBottom = bottom;\n }\n };\n Resizable.prototype.onResizeStart = function (event, direction) {\n if (!this.resizable || !this.window) {\n return;\n }\n var clientX = 0;\n var clientY = 0;\n if (event.nativeEvent && isMouseEvent(event.nativeEvent)) {\n clientX = event.nativeEvent.clientX;\n clientY = event.nativeEvent.clientY;\n }\n else if (event.nativeEvent && isTouchEvent(event.nativeEvent)) {\n clientX = event.nativeEvent.touches[0].clientX;\n clientY = event.nativeEvent.touches[0].clientY;\n }\n if (this.props.onResizeStart) {\n if (this.resizable) {\n var startResize = this.props.onResizeStart(event, direction, this.resizable);\n if (startResize === false) {\n return;\n }\n }\n }\n // Fix #168\n if (this.props.size) {\n if (typeof this.props.size.height !== 'undefined' && this.props.size.height !== this.state.height) {\n this.setState({ height: this.props.size.height });\n }\n if (typeof this.props.size.width !== 'undefined' && this.props.size.width !== this.state.width) {\n this.setState({ width: this.props.size.width });\n }\n }\n // For lockAspectRatio case\n this.ratio =\n typeof this.props.lockAspectRatio === 'number' ? this.props.lockAspectRatio : this.size.width / this.size.height;\n var flexBasis;\n var computedStyle = this.window.getComputedStyle(this.resizable);\n if (computedStyle.flexBasis !== 'auto') {\n var parent_3 = this.parentNode;\n if (parent_3) {\n var dir = this.window.getComputedStyle(parent_3).flexDirection;\n this.flexDir = dir.startsWith('row') ? 'row' : 'column';\n flexBasis = computedStyle.flexBasis;\n }\n }\n // For boundary\n this.setBoundingClientRect();\n this.bindEvents();\n var state = {\n original: {\n x: clientX,\n y: clientY,\n width: this.size.width,\n height: this.size.height,\n },\n isResizing: true,\n backgroundStyle: __assign(__assign({}, this.state.backgroundStyle), { cursor: this.window.getComputedStyle(event.target).cursor || 'auto' }),\n direction: direction,\n flexBasis: flexBasis,\n };\n this.setState(state);\n };\n Resizable.prototype.onMouseMove = function (event) {\n var _this = this;\n if (!this.state.isResizing || !this.resizable || !this.window) {\n return;\n }\n if (this.window.TouchEvent && isTouchEvent(event)) {\n try {\n event.preventDefault();\n event.stopPropagation();\n }\n catch (e) {\n // Ignore on fail\n }\n }\n var _a = this.props, maxWidth = _a.maxWidth, maxHeight = _a.maxHeight, minWidth = _a.minWidth, minHeight = _a.minHeight;\n var clientX = isTouchEvent(event) ? event.touches[0].clientX : event.clientX;\n var clientY = isTouchEvent(event) ? event.touches[0].clientY : event.clientY;\n var _b = this.state, direction = _b.direction, original = _b.original, width = _b.width, height = _b.height;\n var parentSize = this.getParentSize();\n var max = calculateNewMax(parentSize, this.window.innerWidth, this.window.innerHeight, maxWidth, maxHeight, minWidth, minHeight);\n maxWidth = max.maxWidth;\n maxHeight = max.maxHeight;\n minWidth = max.minWidth;\n minHeight = max.minHeight;\n // Calculate new size\n var _c = this.calculateNewSizeFromDirection(clientX, clientY), newHeight = _c.newHeight, newWidth = _c.newWidth;\n // Calculate max size from boundary settings\n var boundaryMax = this.calculateNewMaxFromBoundary(maxWidth, maxHeight);\n if (this.props.snap && this.props.snap.x) {\n newWidth = findClosestSnap(newWidth, this.props.snap.x, this.props.snapGap);\n }\n if (this.props.snap && this.props.snap.y) {\n newHeight = findClosestSnap(newHeight, this.props.snap.y, this.props.snapGap);\n }\n // Calculate new size from aspect ratio\n var newSize = this.calculateNewSizeFromAspectRatio(newWidth, newHeight, { width: boundaryMax.maxWidth, height: boundaryMax.maxHeight }, { width: minWidth, height: minHeight });\n newWidth = newSize.newWidth;\n newHeight = newSize.newHeight;\n if (this.props.grid) {\n var newGridWidth = snap(newWidth, this.props.grid[0]);\n var newGridHeight = snap(newHeight, this.props.grid[1]);\n var gap = this.props.snapGap || 0;\n newWidth = gap === 0 || Math.abs(newGridWidth - newWidth) <= gap ? newGridWidth : newWidth;\n newHeight = gap === 0 || Math.abs(newGridHeight - newHeight) <= gap ? newGridHeight : newHeight;\n }\n var delta = {\n width: newWidth - original.width,\n height: newHeight - original.height,\n };\n if (width && typeof width === 'string') {\n if (width.endsWith('%')) {\n var percent = (newWidth / parentSize.width) * 100;\n newWidth = percent + \"%\";\n }\n else if (width.endsWith('vw')) {\n var vw = (newWidth / this.window.innerWidth) * 100;\n newWidth = vw + \"vw\";\n }\n else if (width.endsWith('vh')) {\n var vh = (newWidth / this.window.innerHeight) * 100;\n newWidth = vh + \"vh\";\n }\n }\n if (height && typeof height === 'string') {\n if (height.endsWith('%')) {\n var percent = (newHeight / parentSize.height) * 100;\n newHeight = percent + \"%\";\n }\n else if (height.endsWith('vw')) {\n var vw = (newHeight / this.window.innerWidth) * 100;\n newHeight = vw + \"vw\";\n }\n else if (height.endsWith('vh')) {\n var vh = (newHeight / this.window.innerHeight) * 100;\n newHeight = vh + \"vh\";\n }\n }\n var newState = {\n width: this.createSizeForCssProperty(newWidth, 'width'),\n height: this.createSizeForCssProperty(newHeight, 'height'),\n };\n if (this.flexDir === 'row') {\n newState.flexBasis = newState.width;\n }\n else if (this.flexDir === 'column') {\n newState.flexBasis = newState.height;\n }\n // For v18, update state sync\n flushSync(function () {\n _this.setState(newState);\n });\n if (this.props.onResize) {\n this.props.onResize(event, direction, this.resizable, delta);\n }\n };\n Resizable.prototype.onMouseUp = function (event) {\n var _a = this.state, isResizing = _a.isResizing, direction = _a.direction, original = _a.original;\n if (!isResizing || !this.resizable) {\n return;\n }\n var delta = {\n width: this.size.width - original.width,\n height: this.size.height - original.height,\n };\n if (this.props.onResizeStop) {\n this.props.onResizeStop(event, direction, this.resizable, delta);\n }\n if (this.props.size) {\n this.setState(this.props.size);\n }\n this.unbindEvents();\n this.setState({\n isResizing: false,\n backgroundStyle: __assign(__assign({}, this.state.backgroundStyle), { cursor: 'auto' }),\n });\n };\n Resizable.prototype.updateSize = function (size) {\n this.setState({ width: size.width, height: size.height });\n };\n Resizable.prototype.renderResizer = function () {\n var _this = this;\n var _a = this.props, enable = _a.enable, handleStyles = _a.handleStyles, handleClasses = _a.handleClasses, handleWrapperStyle = _a.handleWrapperStyle, handleWrapperClass = _a.handleWrapperClass, handleComponent = _a.handleComponent;\n if (!enable) {\n return null;\n }\n var resizers = Object.keys(enable).map(function (dir) {\n if (enable[dir] !== false) {\n return (React.createElement(Resizer, { key: dir, direction: dir, onResizeStart: _this.onResizeStart, replaceStyles: handleStyles && handleStyles[dir], className: handleClasses && handleClasses[dir] }, handleComponent && handleComponent[dir] ? handleComponent[dir] : null));\n }\n return null;\n });\n // #93 Wrap the resize box in span (will not break 100% width/height)\n return (React.createElement(\"div\", { className: handleWrapperClass, style: handleWrapperStyle }, resizers));\n };\n Resizable.prototype.render = function () {\n var _this = this;\n var extendsProps = Object.keys(this.props).reduce(function (acc, key) {\n if (definedProps.indexOf(key) !== -1) {\n return acc;\n }\n acc[key] = _this.props[key];\n return acc;\n }, {});\n var style = __assign(__assign(__assign({ position: 'relative', userSelect: this.state.isResizing ? 'none' : 'auto' }, this.props.style), this.sizeStyle), { maxWidth: this.props.maxWidth, maxHeight: this.props.maxHeight, minWidth: this.props.minWidth, minHeight: this.props.minHeight, boxSizing: 'border-box', flexShrink: 0 });\n if (this.state.flexBasis) {\n style.flexBasis = this.state.flexBasis;\n }\n var Wrapper = this.props.as || 'div';\n return (React.createElement(Wrapper, __assign({ ref: this.ref, style: style, className: this.props.className }, extendsProps),\n this.state.isResizing && React.createElement(\"div\", { style: this.state.backgroundStyle }),\n this.props.children,\n this.renderResizer()));\n };\n Resizable.defaultProps = {\n as: 'div',\n onResizeStart: function () { },\n onResize: function () { },\n onResizeStop: function () { },\n enable: {\n top: true,\n right: true,\n bottom: true,\n left: true,\n topRight: true,\n bottomRight: true,\n bottomLeft: true,\n topLeft: true,\n },\n style: {},\n grid: [1, 1],\n lockAspectRatio: false,\n lockAspectRatioExtraWidth: 0,\n lockAspectRatioExtraHeight: 0,\n scale: 1,\n resizeRatio: 1,\n snapGap: 0,\n };\n return Resizable;\n}(React.PureComponent));\nexport { Resizable };\n","// src/mention.ts\nimport { createInlineMarkdownSpec, mergeAttributes, Node } from \"@tiptap/core\";\nimport { Node as ProseMirrorNode } from \"@tiptap/pm/model\";\nimport { Suggestion } from \"@tiptap/suggestion\";\n\n// src/utils/get-default-suggestion-attributes.ts\nimport { PluginKey } from \"@tiptap/pm/state\";\nfunction getSuggestionOptions({\n editor: tiptapEditor,\n overrideSuggestionOptions,\n extensionName,\n char = \"@\"\n}) {\n const pluginKey = new PluginKey();\n return {\n editor: tiptapEditor,\n char,\n pluginKey,\n command: ({ editor, range, props }) => {\n var _a, _b, _c;\n const nodeAfter = editor.view.state.selection.$to.nodeAfter;\n const overrideSpace = (_a = nodeAfter == null ? void 0 : nodeAfter.text) == null ? void 0 : _a.startsWith(\" \");\n if (overrideSpace) {\n range.to += 1;\n }\n editor.chain().focus().insertContentAt(range, [\n {\n type: extensionName,\n attrs: { ...props, mentionSuggestionChar: char }\n },\n {\n type: \"text\",\n text: \" \"\n }\n ]).run();\n (_c = (_b = editor.view.dom.ownerDocument.defaultView) == null ? void 0 : _b.getSelection()) == null ? void 0 : _c.collapseToEnd();\n },\n allow: ({ state, range }) => {\n const $from = state.doc.resolve(range.from);\n const type = state.schema.nodes[extensionName];\n const allow = !!$from.parent.type.contentMatch.matchType(type);\n return allow;\n },\n ...overrideSuggestionOptions\n };\n}\n\n// src/mention.ts\nfunction getSuggestions(options) {\n return (options.options.suggestions.length ? options.options.suggestions : [options.options.suggestion]).map(\n (suggestion) => getSuggestionOptions({\n // @ts-ignore `editor` can be `undefined` when converting the document to HTML with the HTML utility\n editor: options.editor,\n overrideSuggestionOptions: suggestion,\n extensionName: options.name,\n char: suggestion.char\n })\n );\n}\nfunction getSuggestionFromChar(options, char) {\n const suggestions = getSuggestions(options);\n const suggestion = suggestions.find((s) => s.char === char);\n if (suggestion) {\n return suggestion;\n }\n if (suggestions.length) {\n return suggestions[0];\n }\n return null;\n}\nvar Mention = Node.create({\n name: \"mention\",\n priority: 101,\n addOptions() {\n return {\n HTMLAttributes: {},\n renderText({ node, suggestion }) {\n var _a, _b;\n return `${(_a = suggestion == null ? void 0 : suggestion.char) != null ? _a : \"@\"}${(_b = node.attrs.label) != null ? _b : node.attrs.id}`;\n },\n deleteTriggerWithBackspace: false,\n renderHTML({ options, node, suggestion }) {\n var _a, _b;\n return [\n \"span\",\n mergeAttributes(this.HTMLAttributes, options.HTMLAttributes),\n `${(_a = suggestion == null ? void 0 : suggestion.char) != null ? _a : \"@\"}${(_b = node.attrs.label) != null ? _b : node.attrs.id}`\n ];\n },\n suggestions: [],\n suggestion: {}\n };\n },\n group: \"inline\",\n inline: true,\n selectable: false,\n atom: true,\n addAttributes() {\n return {\n id: {\n default: null,\n parseHTML: (element) => element.getAttribute(\"data-id\"),\n renderHTML: (attributes) => {\n if (!attributes.id) {\n return {};\n }\n return {\n \"data-id\": attributes.id\n };\n }\n },\n label: {\n default: null,\n parseHTML: (element) => element.getAttribute(\"data-label\"),\n renderHTML: (attributes) => {\n if (!attributes.label) {\n return {};\n }\n return {\n \"data-label\": attributes.label\n };\n }\n },\n // When there are multiple types of mentions, this attribute helps distinguish them\n mentionSuggestionChar: {\n default: \"@\",\n parseHTML: (element) => element.getAttribute(\"data-mention-suggestion-char\"),\n renderHTML: (attributes) => {\n return {\n \"data-mention-suggestion-char\": attributes.mentionSuggestionChar\n };\n }\n }\n };\n },\n parseHTML() {\n return [\n {\n tag: `span[data-type=\"${this.name}\"]`\n }\n ];\n },\n renderHTML({ node, HTMLAttributes }) {\n const suggestion = getSuggestionFromChar(this, node.attrs.mentionSuggestionChar);\n if (this.options.renderLabel !== void 0) {\n console.warn(\"renderLabel is deprecated use renderText and renderHTML instead\");\n return [\n \"span\",\n mergeAttributes({ \"data-type\": this.name }, this.options.HTMLAttributes, HTMLAttributes),\n this.options.renderLabel({\n options: this.options,\n node,\n suggestion\n })\n ];\n }\n const mergedOptions = { ...this.options };\n mergedOptions.HTMLAttributes = mergeAttributes(\n { \"data-type\": this.name },\n this.options.HTMLAttributes,\n HTMLAttributes\n );\n const html = this.options.renderHTML({\n options: mergedOptions,\n node,\n suggestion\n });\n if (typeof html === \"string\") {\n return [\n \"span\",\n mergeAttributes({ \"data-type\": this.name }, this.options.HTMLAttributes, HTMLAttributes),\n html\n ];\n }\n return html;\n },\n ...createInlineMarkdownSpec({\n nodeName: \"mention\",\n name: \"@\",\n selfClosing: true,\n allowedAttributes: [\"id\", \"label\", { name: \"mentionSuggestionChar\", skipIfDefault: \"@\" }],\n parseAttributes: (attrString) => {\n const attrs = {};\n const regex = /(\\w+)=(?:\"([^\"]*)\"|'([^']*)')/g;\n let match = regex.exec(attrString);\n while (match !== null) {\n const [, key, doubleQuoted, singleQuoted] = match;\n const value = doubleQuoted != null ? doubleQuoted : singleQuoted;\n attrs[key === \"char\" ? \"mentionSuggestionChar\" : key] = value;\n match = regex.exec(attrString);\n }\n return attrs;\n },\n serializeAttributes: (attrs) => {\n return Object.entries(attrs).filter(([, value]) => value !== void 0 && value !== null).map(([key, value]) => {\n const serializedKey = key === \"mentionSuggestionChar\" ? \"char\" : key;\n return `${serializedKey}=\"${value}\"`;\n }).join(\" \");\n }\n }),\n renderText({ node }) {\n const args = {\n options: this.options,\n node,\n suggestion: getSuggestionFromChar(this, node.attrs.mentionSuggestionChar)\n };\n if (this.options.renderLabel !== void 0) {\n console.warn(\"renderLabel is deprecated use renderText and renderHTML instead\");\n return this.options.renderLabel(args);\n }\n return this.options.renderText(args);\n },\n addKeyboardShortcuts() {\n return {\n Backspace: () => this.editor.commands.command(({ tr, state }) => {\n let isMention = false;\n const { selection } = state;\n const { empty, anchor } = selection;\n if (!empty) {\n return false;\n }\n let mentionNode = new ProseMirrorNode();\n let mentionPos = 0;\n state.doc.nodesBetween(anchor - 1, anchor, (node, pos) => {\n if (node.type.name === this.name) {\n isMention = true;\n mentionNode = node;\n mentionPos = pos;\n return false;\n }\n });\n if (isMention) {\n tr.insertText(\n this.options.deleteTriggerWithBackspace ? \"\" : mentionNode.attrs.mentionSuggestionChar,\n mentionPos,\n mentionPos + mentionNode.nodeSize\n );\n }\n return isMention;\n })\n };\n },\n addProseMirrorPlugins() {\n return getSuggestions(this).map(Suggestion);\n }\n});\n\n// src/index.ts\nvar index_default = Mention;\nexport {\n Mention,\n index_default as default\n};\n//# sourceMappingURL=index.js.map","import { MARGIN_HEIGHT } from \"./constants\";\n\nexport const scrollHandler = ({ wrapperRef, index }) => {\n if (!wrapperRef.current || index >= wrapperRef.current.children.length) {\n return;\n }\n\n const parentItem = wrapperRef.current;\n const selectedItem = parentItem.children[index];\n const itemHeight = selectedItem.clientHeight + MARGIN_HEIGHT;\n\n let scrollPosition = parentItem.scrollTop;\n if (\n selectedItem.offsetTop + itemHeight >\n scrollPosition + parentItem.clientHeight\n ) {\n scrollPosition =\n selectedItem.offsetTop - parentItem.clientHeight + itemHeight;\n } else if (scrollPosition > selectedItem.offsetTop) {\n scrollPosition = selectedItem.offsetTop - MARGIN_HEIGHT;\n }\n\n wrapperRef.current.scrollTop = scrollPosition;\n};\n","import { isEmpty, isNil, pluck, prop } from \"ramda\";\n\nimport { DEFAULT_SEARCH_KEYS, FUZZY_SEARCH_DEFAULT_LIMIT } from \"./constants\";\n\nconst calculateScore = (input, target) => {\n const inputLower = input.toLowerCase();\n const targetLower = target.toLowerCase();\n\n const substringIndex = targetLower.indexOf(inputLower);\n if (substringIndex !== -1) {\n return 1.0 - (substringIndex / targetLower.length) * 0.1;\n }\n\n let inputIndex = 0;\n let targetIndex = 0;\n let firstMatchIndex = -1;\n let consecutiveMatches = 0;\n let maxConsecutive = 0;\n\n while (inputIndex < inputLower.length && targetIndex < targetLower.length) {\n if (inputLower[inputIndex] === targetLower[targetIndex]) {\n if (firstMatchIndex === -1) {\n firstMatchIndex = targetIndex;\n }\n consecutiveMatches++;\n inputIndex++;\n } else {\n maxConsecutive = Math.max(maxConsecutive, consecutiveMatches);\n consecutiveMatches = 0;\n }\n targetIndex++;\n }\n maxConsecutive = Math.max(maxConsecutive, consecutiveMatches);\n\n if (inputIndex < inputLower.length) {\n return 0;\n }\n\n const positionScore = 1.0 - firstMatchIndex / targetLower.length;\n const consecutiveBonus = maxConsecutive / inputLower.length;\n const lengthRatio = inputLower.length / targetLower.length;\n\n const score =\n positionScore * 0.6 + consecutiveBonus * 0.2 + lengthRatio * 0.2;\n\n return Math.min(score, 0.89);\n};\n\nexport const fuzzySearch = (\n items,\n query,\n options = { limit: FUZZY_SEARCH_DEFAULT_LIMIT }\n) => {\n const { limit = FUZZY_SEARCH_DEFAULT_LIMIT, keys = DEFAULT_SEARCH_KEYS } =\n options;\n\n if (!query || typeof query !== \"string\" || !items || isEmpty(items)) {\n return items ? items.slice(0, limit) : [];\n }\n\n const trimmedQuery = query.trim();\n if (!trimmedQuery) {\n return items ? items.slice(0, limit) : [];\n }\n\n const fieldAccessors = keys.map(key => ({\n getValue: typeof key === \"string\" ? prop(key) : prop(key.name),\n weight: typeof key === \"string\" ? 1 : key.weight || 1,\n }));\n\n const results = items.reduce((acc, item) => {\n const bestScore = fieldAccessors.reduce((maxScore, accessor) => {\n const fieldValue = accessor.getValue(item);\n if (isNil(fieldValue)) return maxScore;\n\n const fieldString = String(fieldValue);\n const score = calculateScore(trimmedQuery, fieldString);\n if (score <= 0) return maxScore;\n\n const weightedScore = score * accessor.weight;\n\n return weightedScore > maxScore ? weightedScore : maxScore;\n }, 0);\n\n if (bestScore > 0) {\n acc.push({ item, score: bestScore });\n }\n\n return acc;\n }, []);\n\n results.sort((a, b) => {\n if (Math.abs(a.score - b.score) < 0.001) {\n const aTitle = a.item.title || a.item.name || \"\";\n const bTitle = b.item.title || b.item.name || \"\";\n\n return aTitle.localeCompare(bTitle);\n }\n\n return b.score - a.score;\n });\n\n return pluck(\"item\", results.slice(0, limit));\n};\n"],"names":["NEETO_KB_ENDPOINT","globalProps","kbUrl","NEETO_KB_ARTICLES_URL","MODE","MODAL","SELECT","MODAL_BOTTOM_MARGIN","MODAL_LEFT_OFFSET","MODAL_TOP_OFFSET","MODAL_TRANSFORM_Y","MODAL_TRANSFORM_X","buildArticleFullUrl","slug","concat","createArticleOptions","articles","map","article","label","decodeHtmlEntities","title","value","id","data","_objectSpread","type","extractKbArticleIds","editor","articleIds","doc","state","descendants","node","marks","forEach","mark","name","attrs","push","_toConsumableArray","Set","QUERY_KEYS","KB_ARTICLES","apiConfig","baseURL","headers","_globalProps$organiza","organization","apiKey","transformResponseCase","transformRequestCase","fetchArticles","params","axios","get","neetoKbApi","useFetchKbArticles","_ref","arguments","length","undefined","_ref$searchTerm","searchTerm","_ref$reactQueryOption","reactQueryOptions","queryParams","search_term","useQuery","queryKey","queryFn","_queryFn","_asyncToGenerator","_regeneratorRuntime","_callee","_response$data","response","wrap","_callee$","_context","prev","next","sent","abrupt","stop","apply","useDeletedArticles","_useState","useState","_useState2","_slicedToArray","deletedArticleIds","setDeletedArticleIds","_useFetchKbArticles","enabled","_useFetchKbArticles$d","allArticles","isCheckingDeleted","isLoading","checkAllArticles","articleIdsInEditor","isEmpty","existingArticleIds","pluck","deletedIds","filter","has","useEffect","isArticleDeleted","bind","useEditorWarnings","initialValue","isProduction","process","env","RAILS_ENV","includes","isNotPresent","console","warn","index_default","isObject","every","create","equalityTrait.EqualityTraitSymbol","object.size","object.hasProperty","oneOf","math.floor","array.unfold","map.create","string.fromCamelCase","conditions.undefinedToNull","storage.varStorage","f.isOneOf","math.max","binary.BITS7","binary.BIT8","math.isNegativeZero","binary.BITS6","binary.BIT7","string.utf8TextEncoder","string.encodeUtf8","math.min","number.isInteger","math.abs","binary.BITS31","array.isArray","string.fromCharCode","env.isBrowser","encoding.encode","encoding.writeAny","string.repeat","equalityTraits.EqualityTraitSymbol","equalityTraits.equals","arr.isArray","arr.every","arr.some","obj.isObject","obj.every","fun.equalityDeep","error.methodUnimplemented","error.unexpectedCase","obj.hasProperty","env.production","error.create","prng.int53","number.MIN_SAFE_INTEGER","number.MAX_SAFE_INTEGER","prng.word","prng.bool","prng.oneOf","prng.int32","$.$custom","binary.BIT30","buf.toBase64","sha256.digest","buf.encodeAny","set.create","random.oneOf","eventloop.timeout","AllSelection","TextSelection","NodeSelection","Selection","environment.isBrowser","dom.doc","PModel.Slice","PModel.Fragment","object.keys","object.every","map.setIfUndefined","ReplaceStep","undo","redo","Item","Text","ySyncPluginKey2","coreGetUpdatedPosition","Node","inputRegex","pasteRegex","Fragment","Node2","mergeAttributes2","handleBackspace","isNodeActive2","getNodeType2","Extension2","mergeAttributes3","wrappingInputRule2","Node4","mergeAttributes4","renderNestedMarkdownContent2","wrappingInputRule3","Node5","mergeAttributes5","Extension3","CellSelection2","getStyleProperty2","getStyleProperty3","Extension4","getStyleProperty4","Extension5","getStyleProperty5","Extension6","Slice","Plugin2","PluginKey2","PluginKey3","Decoration2","DecorationSet2","Plugin3","Plugin4","PluginKey4","DecorationSet3","Decoration3","Extension7","PluginKey5","Plugin5","Extension8","jsx","starInputRegex","starPasteRegex","underscoreInputRegex","underscorePasteRegex","find2","highlight","offset","flip","floatingUiOffset","floatingUiFlip","__extends","this","__assign","ProseMirrorNode","scrollHandler","wrapperRef","index","current","children","parentItem","selectedItem","itemHeight","clientHeight","MARGIN_HEIGHT","scrollPosition","scrollTop","offsetTop","calculateScore","input","target","inputLower","toLowerCase","targetLower","substringIndex","indexOf","inputIndex","targetIndex","firstMatchIndex","consecutiveMatches","maxConsecutive","Math","max","positionScore","consecutiveBonus","lengthRatio","score","min","fuzzySearch","items","query","options","limit","FUZZY_SEARCH_DEFAULT_LIMIT","_options$limit","_options$keys","keys","DEFAULT_SEARCH_KEYS","slice","trimmedQuery","trim","fieldAccessors","key","getValue","prop","weight","results","reduce","acc","item","bestScore","maxScore","accessor","fieldValue","isNil","fieldString","String","weightedScore","sort","a","b","abs","aTitle","bTitle","localeCompare"],"mappings":"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","x_google_ignoreList":[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65]}
|