@bigbinary/neeto-editor 1.47.108 → 1.47.110

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.
Files changed (89) hide show
  1. package/dist/Attachments.js +52 -0
  2. package/dist/Attachments.js.map +1 -0
  3. package/dist/Editor.js +22376 -0
  4. package/dist/Editor.js.map +1 -0
  5. package/dist/EditorContent.js +250 -0
  6. package/dist/EditorContent.js.map +1 -0
  7. package/dist/FormikEditor.js +199 -0
  8. package/dist/FormikEditor.js.map +1 -0
  9. package/dist/Menu.js +106 -0
  10. package/dist/Menu.js.map +1 -0
  11. package/dist/chunk-BFTU3MAI.js +8 -0
  12. package/dist/chunk-BFTU3MAI.js.map +1 -0
  13. package/dist/chunk-BJhk4N3E.js +25765 -0
  14. package/dist/chunk-BJhk4N3E.js.map +1 -0
  15. package/dist/chunk-BR5ZkH7J.js +16238 -0
  16. package/dist/chunk-BR5ZkH7J.js.map +1 -0
  17. package/dist/chunk-C2dztUxs.js +4 -0
  18. package/dist/chunk-C2dztUxs.js.map +1 -0
  19. package/dist/chunk-CAGz17QN.js +571 -0
  20. package/dist/chunk-CAGz17QN.js.map +1 -0
  21. package/dist/chunk-CUwAOdCi.js +12640 -0
  22. package/dist/chunk-CUwAOdCi.js.map +1 -0
  23. package/dist/chunk-DNMH2cJJ.js +84 -0
  24. package/dist/chunk-DNMH2cJJ.js.map +1 -0
  25. package/dist/chunk-Dq9G_Haj.js +6729 -0
  26. package/dist/chunk-Dq9G_Haj.js.map +1 -0
  27. package/dist/chunk-DxGDZoUl.js +19 -0
  28. package/dist/chunk-DxGDZoUl.js.map +1 -0
  29. package/dist/chunk-sfpDYWCU.js +19022 -0
  30. package/dist/chunk-sfpDYWCU.js.map +1 -0
  31. package/dist/chunk-zRPC4lVr.js +9073 -0
  32. package/dist/chunk-zRPC4lVr.js.map +1 -0
  33. package/dist/cjs/Attachments.cjs.js +58 -0
  34. package/dist/cjs/Attachments.cjs.js.map +1 -0
  35. package/dist/cjs/Editor.cjs.js +22473 -0
  36. package/dist/cjs/Editor.cjs.js.map +1 -0
  37. package/dist/cjs/EditorContent.cjs.js +264 -0
  38. package/dist/cjs/EditorContent.cjs.js.map +1 -0
  39. package/dist/cjs/FormikEditor.cjs.js +206 -0
  40. package/dist/cjs/FormikEditor.cjs.js.map +1 -0
  41. package/dist/cjs/Menu.cjs.js +112 -0
  42. package/dist/cjs/Menu.cjs.js.map +1 -0
  43. package/dist/cjs/chunk-2HrSPdAV.cjs.js +92 -0
  44. package/dist/cjs/chunk-2HrSPdAV.cjs.js.map +1 -0
  45. package/dist/cjs/chunk-8GIxbIj_.cjs.js +597 -0
  46. package/dist/cjs/chunk-8GIxbIj_.cjs.js.map +1 -0
  47. package/dist/cjs/chunk-B6qYtOJe.cjs.js +6 -0
  48. package/dist/cjs/chunk-B6qYtOJe.cjs.js.map +1 -0
  49. package/dist/cjs/chunk-BGy3NmZC.cjs.js +49 -0
  50. package/dist/cjs/chunk-BGy3NmZC.cjs.js.map +1 -0
  51. package/dist/cjs/chunk-BJu3ubxk.cjs.js +11 -0
  52. package/dist/cjs/chunk-BJu3ubxk.cjs.js.map +1 -0
  53. package/dist/cjs/chunk-BzUZpT8V.cjs.js +6770 -0
  54. package/dist/cjs/chunk-BzUZpT8V.cjs.js.map +1 -0
  55. package/dist/cjs/chunk-CSn1uTr2.cjs.js +12645 -0
  56. package/dist/cjs/chunk-CSn1uTr2.cjs.js.map +1 -0
  57. package/dist/cjs/chunk-CdckCFos.cjs.js +25777 -0
  58. package/dist/cjs/chunk-CdckCFos.cjs.js.map +1 -0
  59. package/dist/cjs/chunk-De3nCFAF.cjs.js +16258 -0
  60. package/dist/cjs/chunk-De3nCFAF.cjs.js.map +1 -0
  61. package/dist/cjs/chunk-DjozIdFz.cjs.js +9135 -0
  62. package/dist/cjs/chunk-DjozIdFz.cjs.js.map +1 -0
  63. package/dist/cjs/chunk-krXdNjm-.cjs.js +19151 -0
  64. package/dist/cjs/chunk-krXdNjm-.cjs.js.map +1 -0
  65. package/dist/cjs/constants.cjs.js +13 -0
  66. package/dist/cjs/constants.cjs.js.map +1 -0
  67. package/dist/cjs/index.cjs.js +159 -0
  68. package/dist/cjs/index.cjs.js.map +1 -0
  69. package/dist/cjs/utils.cjs.js +27 -0
  70. package/dist/cjs/utils.cjs.js.map +1 -0
  71. package/dist/codeblockHighlight.js +15155 -0
  72. package/dist/codeblockHighlight.js.map +1 -0
  73. package/dist/constants.js +6 -0
  74. package/dist/constants.js.map +1 -0
  75. package/dist/editor-content.min.css +1 -0
  76. package/dist/editor-output-pdf-email.css +1 -0
  77. package/dist/editor-output-pdf-email.js +4 -0
  78. package/dist/editor-output-pdf-email.js.map +1 -0
  79. package/dist/editor-output.js +4 -0
  80. package/dist/editor-output.js.map +1 -0
  81. package/dist/editor-stats.html +4860 -0
  82. package/dist/editorUtils.js +170 -0
  83. package/dist/headerLinks.js +59 -0
  84. package/dist/headerLinks.js.map +1 -0
  85. package/dist/index.js +142 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/utils.js +15 -0
  88. package/dist/utils.js.map +1 -0
  89. package/package.json +3 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Editor.js","sources":["../src/components/Common/ErrorWrapper.jsx","../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","../src/components/Editor/CustomExtensions/CharacterCount/index.jsx","../node_modules/@tiptap/extension-character-count/dist/index.js","../node_modules/@tiptap/extension-code/dist/index.js","../node_modules/lib0/math.js","../node_modules/lib0/set.js","../node_modules/lib0/string.js","../node_modules/lib0/error.js","../node_modules/lib0/map.js","../node_modules/lib0/object.js","../node_modules/lib0/function.js","../node_modules/lib0/mutex.js","../node_modules/lib0/diff.js","../node_modules/y-prosemirror/src/plugins/keys.js","../node_modules/lib0/webcrypto.js","../node_modules/lib0/random.js","../node_modules/lib0/conditions.js","../node_modules/lib0/storage.js","../node_modules/lib0/environment.js","../node_modules/lib0/dom.js","../node_modules/lib0/eventloop.js","../node_modules/y-prosemirror/src/plugins/sync-plugin.js","../node_modules/y-prosemirror/src/lib.js","../node_modules/y-prosemirror/src/plugins/cursor-plugin.js","../node_modules/y-prosemirror/src/plugins/undo-plugin.js","../node_modules/@tiptap/extension-collaboration/dist/index.js","../node_modules/@tiptap/extension-collaboration-cursor/dist/index.js","../node_modules/@tiptap/extension-text-style/dist/index.js","../node_modules/@tiptap/extension-color/dist/index.js","../node_modules/@tiptap/extension-document/dist/index.js","../node_modules/@tiptap/extension-focus/dist/index.js","../node_modules/@tiptap/extension-highlight/dist/index.js","../node_modules/@tiptap/extension-list-item/dist/index.js","../node_modules/@tiptap/extension-table-cell/dist/index.js","../node_modules/@tiptap/extension-table-header/dist/index.js","../node_modules/@tiptap/extension-table-row/dist/index.js","../node_modules/@tiptap/extension-underline/dist/index.js","../node_modules/@tiptap/extension-blockquote/dist/index.js","../node_modules/@tiptap/extension-bold/dist/index.js","../node_modules/@tiptap/extension-bullet-list/dist/index.js","../node_modules/@tiptap/extension-code-block/dist/index.js","../node_modules/prosemirror-dropcursor/dist/index.js","../node_modules/@tiptap/extension-dropcursor/dist/index.js","../node_modules/prosemirror-gapcursor/dist/index.js","../node_modules/@tiptap/extension-gapcursor/dist/index.js","../node_modules/@tiptap/extension-hard-break/dist/index.js","../node_modules/@tiptap/extension-heading/dist/index.js","../node_modules/rope-sequence/dist/index.js","../node_modules/prosemirror-history/dist/index.js","../node_modules/@tiptap/extension-history/dist/index.js","../node_modules/@tiptap/extension-horizontal-rule/dist/index.js","../node_modules/@tiptap/extension-italic/dist/index.js","../node_modules/@tiptap/extension-ordered-list/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","../src/components/Editor/CustomExtensions/BackgroundColor/ExtensionConfig.js","../node_modules/@tiptap/extension-list/dist/index.js","../src/components/Editor/CustomExtensions/BulletList/ExtensionConfig.js","../src/components/Editor/CustomExtensions/Callout/CalloutComponent.jsx","../src/components/Editor/CustomExtensions/Callout/ExtensionConfig.js","../node_modules/@tiptap/extension-code-block-lowlight/dist/index.js","../src/components/Editor/CustomExtensions/CodeBlock/constants.js","../src/components/Editor/CustomExtensions/CodeBlock/plugins.js","../src/components/Editor/CustomExtensions/CodeBlock/CodeBlockComponent.jsx","../src/components/Editor/CustomExtensions/CodeBlock/ExtensionConfig.js","../src/components/Editor/CustomExtensions/CustomCommands/ExtensionConfig.js","../src/components/Editor/CustomExtensions/DeletedArticleDecoration/ExtensionConfig.js","../node_modules/@tiptap/suggestion/dist/index.js","../src/components/Editor/CustomExtensions/Emoji/EmojiPicker/ExtensionConfig.js","../src/components/Editor/CustomExtensions/Emoji/EmojiSuggestion/constants.js","../src/components/Editor/CustomExtensions/Emoji/EmojiSuggestion/utils.js","../src/components/Editor/CustomExtensions/Emoji/EmojiSuggestion/EmojiSuggestionMenu.jsx","../src/components/Editor/CustomExtensions/Emoji/EmojiSuggestion/ExtensionConfig.js","../src/components/Editor/CustomExtensions/Image/constants.js","../node_modules/re-resizable/lib/resizer.js","../node_modules/re-resizable/lib/index.js","../src/components/Editor/CustomExtensions/Image/ImagePreviewModal.jsx","../src/components/Editor/CustomExtensions/Image/Menu.jsx","../src/components/Editor/CustomExtensions/Image/ImageComponent.jsx","../src/components/Editor/CustomExtensions/Image/ExtensionConfig.js","../src/components/Editor/CustomExtensions/Image/FigCaption.js","../src/components/Editor/CustomExtensions/Italic/ExtensionConfig.js","../src/components/Editor/CustomExtensions/KeyboardShortcuts/ExtensionConfig.js","../node_modules/linkifyjs/dist/linkify.mjs","../node_modules/@tiptap/extension-link/dist/index.js","../src/components/Editor/CustomExtensions/Link/constants.js","../src/components/Editor/CustomExtensions/Link/ExtensionConfig.js","../node_modules/@tiptap/extension-mention/dist/index.js","../src/utils/scrollhandler.js","../src/components/Editor/CustomExtensions/Mention/MentionList.jsx","../src/components/Editor/CustomExtensions/Mention/utils.js","../src/components/Editor/CustomExtensions/Mention/ExtensionConfig.js","../src/components/Editor/CustomExtensions/OrderedList/ExtensionConfig.js","../src/components/Editor/CustomExtensions/Placeholder/ExtensionConfig.js","../src/components/Editor/CustomExtensions/SelectionDecoration/ExtensionConfig.js","../src/utils/fuzzySearch.js","../src/components/Editor/CustomExtensions/SlashCommands/Menu.jsx","../src/components/Editor/CustomExtensions/SlashCommands/CommandsList.jsx","../src/components/Editor/CustomExtensions/SlashCommands/constants.js","../src/components/Editor/CustomExtensions/SlashCommands/utils.js","../src/components/Editor/CustomExtensions/SlashCommands/ExtensionConfig.js","../src/components/Editor/CustomExtensions/SpecialMentions/ExtensionConfig.js","../node_modules/prosemirror-tables/node_modules/prosemirror-transform/dist/index.js","../node_modules/prosemirror-tables/dist/index.js","../node_modules/@tiptap/extension-table/dist/index.js","../src/components/Editor/CustomExtensions/Table/TableView.js","../src/components/Editor/CustomExtensions/Table/ExtensionConfig.js","../node_modules/@tiptap/extension-task-item/dist/index.js","../node_modules/@tiptap/extension-task-list/dist/index.js","../src/components/Editor/CustomExtensions/TodoList/ExtensionConfig.js","../src/components/Editor/CustomExtensions/Variable/constants.js","../src/components/Editor/CustomExtensions/Variable/VariableComponent.jsx","../src/components/Editor/CustomExtensions/Variable/ExtensionConfig.js","../src/components/Editor/CustomExtensions/Video/VideoComponent.jsx","../src/components/Editor/CustomExtensions/Embeds/EmbedComponent.jsx","../src/components/Editor/CustomExtensions/Video/ExtensionConfig.jsx","../src/components/Editor/CustomExtensions/hooks/useCustomExtensions.js","../src/components/Editor/CustomExtensions/LinkKbArticles/ArticlesList.jsx","../src/components/Editor/CustomExtensions/LinkKbArticles/hooks/useArticleNavigation.js","../src/components/Editor/CustomExtensions/LinkKbArticles/ArticlePicker.jsx","../src/components/Editor/CustomExtensions/LinkKbArticles/ArticleSelector.jsx","../src/components/Editor/CustomExtensions/Table/utils.js","../src/components/Editor/CustomExtensions/Table/TableActionMenu.jsx","../src/components/Editor/CustomExtensions/LinkKbArticles/KbArticleDeletedModal.jsx","../src/components/Editor/CustomExtensions/LinkKbArticles/KbArticleEdit.jsx","../src/components/Editor/CustomExtensions/LinkKbArticles/KbArticleView.jsx","../src/components/Editor/LinkPopOver.jsx","../src/components/Editor/index.jsx"],"sourcesContent":["import { memo } from \"react\";\n\nimport classnames from \"classnames\";\nimport { isNotPresent } from \"neetocist\";\nimport { is } from \"ramda\";\n\nconst ErrorWrapper = ({ error, children, className }) => {\n const isError = !isNotPresent(error);\n const wrapperClasses = classnames({\n \"neeto-editor-error\": isError,\n [className]: className,\n });\n\n const getErrorMessage = () => {\n if (!error) return null;\n\n let message;\n\n if (is(String, error)) {\n message = error;\n } else if (is(Array, error)) {\n message = error[0];\n } else if (is(Object, error)) {\n message = error.message;\n }\n\n if (isNotPresent(message)) return null;\n\n return message;\n };\n\n return (\n <>\n <div className={wrapperClasses}>{children}</div>\n {isError && (\n <p className=\"neeto-ui-input__error\" data-testid=\"neeto-editor-error-text\">\n {getErrorMessage()}\n </p>\n )}\n </>\n );\n};\n\nexport default memo(ErrorWrapper);\n","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","const CharacterCountWrapper = ({ editor, children }) => {\n if (!editor) return children;\n\n return (\n <>\n {children}\n <p\n className=\"neeto-editor-character-count\"\n data-testid=\"neeto-editor-character-count\"\n >\n {editor.storage.characterCount.characters()} characters\n </p>\n </>\n );\n};\n\nexport default CharacterCountWrapper;\n","import { Extension } from '@tiptap/core';\nimport { Plugin, PluginKey } from '@tiptap/pm/state';\n\n/**\n * This extension allows you to count the characters and words of your document.\n * @see https://tiptap.dev/api/extensions/character-count\n */\nconst CharacterCount = Extension.create({\n name: 'characterCount',\n addOptions() {\n return {\n limit: null,\n mode: 'textSize',\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 || options === void 0 ? void 0 : options.node) || this.editor.state.doc;\n const mode = (options === null || options === void 0 ? void 0 : options.mode) || this.options.mode;\n if (mode === 'textSize') {\n const text = node.textBetween(0, node.content.size, undefined, ' ');\n return text.length;\n }\n return node.nodeSize;\n };\n this.storage.words = options => {\n const node = (options === null || options === void 0 ? void 0 : options.node) || this.editor.state.doc;\n const text = node.textBetween(0, node.content.size, ' ', ' ');\n const words = text.split(' ').filter(word => word !== '');\n return words.length;\n };\n },\n addProseMirrorPlugins() {\n return [\n new Plugin({\n key: new PluginKey('characterCount'),\n filterTransaction: (transaction, state) => {\n const limit = this.options.limit;\n // Nothing has changed or no limit is defined. Ignore it.\n if (!transaction.docChanged || limit === 0 || limit === null || limit === undefined) {\n return true;\n }\n const oldSize = this.storage.characters({ node: state.doc });\n const newSize = this.storage.characters({ node: transaction.doc });\n // Everything is in the limit. Good.\n if (newSize <= limit) {\n return true;\n }\n // The limit has already been exceeded but will be reduced.\n if (oldSize > limit && newSize > limit && newSize <= oldSize) {\n return true;\n }\n // The limit has already been exceeded and will be increased further.\n if (oldSize > limit && newSize > limit && newSize > oldSize) {\n return false;\n }\n const isPaste = transaction.getMeta('paste');\n // Block all exceeding transactions that were not pasted.\n if (!isPaste) {\n return false;\n }\n // For pasted content, we try to remove the exceeding content.\n const pos = transaction.selection.$head.pos;\n const over = newSize - limit;\n const from = pos - over;\n const to = pos;\n // It’s probably a bad idea to mutate transactions within `filterTransaction`\n // but for now this is working fine.\n transaction.deleteRange(from, to);\n // In some situations, the limit will continue to be exceeded after trimming.\n // This happens e.g. when truncating within a complex node (e.g. table)\n // and ProseMirror has to close this node again.\n // If this is the case, we prevent the transaction completely.\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\nexport { CharacterCount, CharacterCount as default };\n//# sourceMappingURL=index.js.map\n","import { Mark, mergeAttributes, markInputRule, markPasteRule } from '@tiptap/core';\n\n/**\n * Matches inline code.\n */\nconst inputRegex = /(?:^|\\s)(`(?!\\s+`)((?:[^`]+))`(?!\\s+`))$/;\n/**\n * Matches inline code while pasting.\n */\nconst pasteRegex = /(?:^|\\s)(`(?!\\s+`)((?:[^`]+))`(?!\\s+`))/g;\n/**\n * This extension allows you to mark text as inline code.\n * @see https://tiptap.dev/api/marks/code\n */\nconst 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 [\n { tag: 'code' },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['code', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\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: 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\nexport { Code, Code as default, inputRegex, pasteRegex };\n//# sourceMappingURL=index.js.map\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 * @param {number} n\n * @return {boolean} Wether n is negative. This function also differentiates between -0 and +0\n */\nexport const isNegativeZero = n => n !== 0 ? n < 0 : 1 / n < 0\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}\n */\nexport const first = set =>\n set.values().next().value ?? undefined\n\n/**\n * @template T\n * @param {Iterable<T>} entries\n * @return {Set<T>}\n */\nexport const from = entries => new Set(entries)\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}\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}\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 * 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 * Utility module to work with key-value stores.\n *\n * @module map\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","/**\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 * 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 {{[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 * @param {Object<string,any>} obj\n * @param {function(any,string):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|undefined} obj\n */\nexport const isEmpty = obj => {\n // eslint-disable-next-line\n for (const _k in obj) {\n return false\n }\n return true\n}\n\n/**\n * @param {Object<string,any>} obj\n * @param {function(any,string):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|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)) && b[key] === val))\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'\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 == null || b == null) {\n return equalityStrict(a, b)\n }\n if (a.constructor !== b.constructor) {\n return false\n }\n if (a === b) {\n return true\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 Object:\n if (object.length(a) !== object.length(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 * 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 * 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 * @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 * `delete`\n *\n * @template T\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","import { PluginKey } from 'prosemirror-state' // eslint-disable-line\n\n/**\n * The unique prosemirror plugin key for syncPlugin\n *\n * @public\n */\nexport const ySyncPluginKey = new PluginKey('y-sync')\n\n/**\n * The unique prosemirror plugin key for undoPlugin\n *\n * @public\n */\nexport const yUndoPluginKey = new PluginKey('y-undo')\n\n/**\n * The unique prosemirror plugin key for cursorPlugin\n *\n * @public\n */\nexport const yCursorPluginKey = new PluginKey('yjs-cursor')\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 * 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 map\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","/* 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'\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 * @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 * @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 * @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 * @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\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 * @return {function(function():void):void}\n */\nexport const createDebouncer = timeout => {\n let timer = -1\n return f => {\n clearTimeout(timer)\n if (f) {\n timer = /** @type {any} */ (setTimeout(f, timeout))\n }\n }\n}\n","/**\n * @module bindings/prosemirror\n */\n\nimport { createMutex } from 'lib0/mutex'\nimport * as PModel from 'prosemirror-model'\nimport { Plugin, TextSelection } from \"prosemirror-state\"; // eslint-disable-line\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 { ySyncPluginKey, yUndoPluginKey } from './keys.js'\nimport * as Y from 'yjs'\nimport {\n absolutePositionToRelativePosition,\n relativePositionToAbsolutePosition\n} from '../lib.js'\nimport * as random from 'lib0/random'\nimport * as environment from 'lib0/environment'\nimport * as dom from 'lib0/dom'\nimport * as eventloop from 'lib0/eventloop'\n\n/**\n * @param {Y.Item} item\n * @param {Y.Snapshot} [snapshot]\n */\nexport const 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 */\nexport const 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 {any} tr\n * @param {any} relSel\n * @param {ProsemirrorBinding} binding\n */\nconst restoreRelativeSelection = (tr, relSel, binding) => {\n if (relSel !== null && relSel.anchor !== null && relSel.head !== null) {\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 if (anchor !== null && head !== null) {\n tr = tr.setSelection(TextSelection.create(tr.doc, anchor, head))\n }\n }\n}\n\nexport const getRelativeSelection = (pmbinding, state) => ({\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})\n\n/**\n * Binding for prosemirror.\n *\n * @protected\n */\nexport class 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 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 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.mapping\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.mapping\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 tr.setSelection(TextSelection.create(tr.doc, sel.anchor, sel.head))\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 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 }\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 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 this.type,\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 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 const fragmentContent = this.type.toArray().map((t) =>\n createNodeIfNotExists(\n /** @type {Y.XmlElement | Y.XmlHook} */ (t),\n this.prosemirrorView.state.schema,\n this.mapping\n )\n ).filter((n) => n !== null)\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)\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 _prosemirrorChanged (doc) {\n this.doc.transact(() => {\n updateYFragment(this.doc, this.type, doc, this.mapping)\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 {ProsemirrorMapping} mapping\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 mapping,\n snapshot,\n prevSnapshot,\n computeYChange\n) => {\n const node = /** @type {PModel.Node} */ (mapping.get(el))\n if (node === undefined) {\n if (el instanceof Y.XmlElement) {\n return createNodeFromYElement(\n el,\n schema,\n mapping,\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 {ProsemirrorMapping} mapping\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 */\nexport const createNodeFromYElement = (\n el,\n schema,\n mapping,\n snapshot,\n prevSnapshot,\n computeYChange\n) => {\n const children = []\n const createChildren = (type) => {\n if (type.constructor === Y.XmlElement) {\n const n = createNodeIfNotExists(\n type,\n schema,\n mapping,\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._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 mapping,\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 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 mapping.delete(el)\n return null\n }\n}\n\n/**\n * @private\n * @param {Y.XmlText} text\n * @param {any} schema\n * @param {ProsemirrorMapping} _mapping\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 _mapping,\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 const marks = []\n for (const markName in delta.attributes) {\n marks.push(schema.mark(markName, delta.attributes[markName]))\n }\n nodes.push(schema.text(delta.insert, marks))\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 {ProsemirrorMapping} mapping\n * @return {Y.XmlText}\n */\nconst createTypeFromTextNodes = (nodes, mapping) => {\n const type = new Y.XmlText()\n const delta = nodes.map((node) => ({\n // @ts-ignore\n insert: node.text,\n attributes: marksToAttributes(node.marks)\n }))\n type.applyDelta(delta)\n mapping.set(type, nodes)\n return type\n}\n\n/**\n * @private\n * @param {any} node prosemirror node\n * @param {ProsemirrorMapping} mapping\n * @return {Y.XmlElement}\n */\nconst createTypeFromElementNode = (node, mapping) => {\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, mapping)\n )\n )\n 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 {ProsemirrorMapping} mapping\n * @return {Y.XmlElement|Y.XmlText}\n */\nconst createTypeFromTextOrElementNode = (node, mapping) =>\n node instanceof Array\n ? createTypeFromTextNodes(node, mapping)\n : createTypeFromElementNode(node, mapping)\n\nconst isObject = (val) => typeof val === 'object' && val !== null\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((d, i) =>\n d.insert === /** @type {any} */ (ptexts[i]).text &&\n object.keys(d.attributes || {}).length === ptexts[i].marks.length &&\n ptexts[i].marks.every((mark) =>\n equalAttrs(d.attributes[mark.type.name] || {}, mark.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 {ProsemirrorMapping} mapping\n * @return {{ foundMappedChild: boolean, equalityFactor: number }}\n */\nconst computeChildEqualityFactor = (ytype, pnode, mapping) => {\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(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(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\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 {ProsemirrorMapping} mapping\n */\nconst updateYText = (ytext, ptexts, mapping) => {\n 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))\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 marksToAttributes = (marks) => {\n const pattrs = {}\n marks.forEach((mark) => {\n if (mark.type.name !== 'ychange') {\n pattrs[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 {ProsemirrorMapping} mapping\n */\nexport const updateYFragment = (y, yDomFragment, pNode, mapping) => {\n if (\n yDomFragment instanceof Y.XmlElement &&\n yDomFragment.nodeName !== pNode.type.name\n ) {\n throw new Error('node name mismatch!')\n }\n 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(mapping.get(leftY), leftP)) {\n if (equalYTypePNode(leftY, leftP)) {\n // update mapping\n 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(mapping.get(rightY), rightP)) {\n if (equalYTypePNode(rightY, rightP)) {\n // update mapping\n 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, mapping)\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 mapping\n )\n const equalityRight = computeChildEqualityFactor(\n /** @type {Y.XmlElement} */ (rightY),\n /** @type {PModel.Node} */ (rightP),\n mapping\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 mapping\n )\n left += 1\n } else if (updateRight) {\n updateYFragment(\n y,\n /** @type {Y.XmlFragment} */ (rightY),\n /** @type {PModel.Node} */ (rightP),\n mapping\n )\n right += 1\n } else {\n mapping.delete(yDomFragment.get(left))\n yDomFragment.delete(left, 1)\n yDomFragment.insert(left, [\n createTypeFromTextOrElementNode(leftP, mapping)\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 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 => 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], mapping))\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","import { updateYFragment, createNodeFromYElement } from './plugins/sync-plugin.js' // eslint-disable-line\nimport { ySyncPluginKey } from './plugins/keys.js'\nimport * as Y from 'yjs'\nimport { EditorView } from 'prosemirror-view' // eslint-disable-line\nimport { Node, Schema, Fragment } from 'prosemirror-model' // eslint-disable-line\nimport * as error from 'lib0/error'\nimport * as map from 'lib0/map'\nimport * as eventloop from 'lib0/eventloop'\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\nconst updateMetas = () => {\n const ups = /** @type {Map<EditorView, Map<any, any>>} */ (viewsToUpdate)\n viewsToUpdate = null\n ups.forEach((metas, view) => {\n const tr = view.state.tr\n const syncState = ySyncPluginKey.getState(view.state)\n if (syncState && syncState.binding && !syncState.binding.isDestroyed) {\n metas.forEach((val, key) => {\n tr.setMeta(key, val)\n })\n view.dispatch(tr)\n }\n })\n}\n\nexport const setMeta = (view, key, value) => {\n if (!viewsToUpdate) {\n viewsToUpdate = new Map()\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 */\nexport const 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\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 */\nexport const 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 pos += /** @type {any} */ (mapping.get(t)).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 pos += /** @type {any} */ (mapping.get(contentType)).nodeSize\n }\n }\n n = n.right\n }\n }\n type = /** @type {Y.AbstractType} */ (parent)\n }\n return pos - 1 // we don't count the most outer tag, because it is a fragment\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 */\nexport const yXmlFragmentToProseMirrorFragment = (yXmlFragment, schema) => {\n const fragmentContent = yXmlFragment.toArray().map((t) =>\n createNodeFromYElement(\n /** @type {Y.XmlElement} */ (t),\n schema,\n new Map()\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 */\nexport const 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 */\nexport const initProseMirrorDoc = (yXmlFragment, schema) => {\n /**\n * @type {ProsemirrorMapping}\n */\n const mapping = new Map()\n const fragmentContent = yXmlFragment.toArray().map((t) =>\n createNodeFromYElement(\n /** @type {Y.XmlElement} */ (t),\n schema,\n mapping\n )\n ).filter((n) => n !== null)\n const doc = schema.topNodeType.create(null, Fragment.fromArray(fragmentContent))\n return { doc, 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 */\nexport function 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 */\nexport function 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, 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 */\nexport function 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 */\nexport function 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 */\nexport function 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 */\nexport function 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 */\nexport function 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 */\nexport function yXmlFragmentToProsemirrorJSON (xmlFragment) {\n const items = xmlFragment.toArray()\n\n function 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.nodeName) {\n const delta = item.toDelta()\n response = delta.map((d) => {\n const text = {\n type: 'text',\n text: d.insert\n }\n\n if (d.attributes) {\n text.marks = Object.keys(d.attributes).map((type) => {\n const attrs = d.attributes[type]\n const mark = {\n type\n }\n\n if (Object.keys(attrs)) {\n mark.attrs = attrs\n }\n\n return mark\n })\n }\n return text\n })\n } else {\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 }\n\n return response\n }\n\n return {\n type: 'doc',\n content: items.map(serialize)\n }\n}\n","import * as Y from 'yjs'\nimport { Decoration, DecorationSet } from \"prosemirror-view\"; // eslint-disable-line\nimport { Plugin } from \"prosemirror-state\"; // eslint-disable-line\nimport { Awareness } from \"y-protocols/awareness\"; // eslint-disable-line\nimport {\n absolutePositionToRelativePosition,\n relativePositionToAbsolutePosition,\n setMeta\n} from '../lib.js'\nimport { yCursorPluginKey, ySyncPluginKey } from './keys.js'\n\nimport * as math from 'lib0/math'\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 */\nexport const defaultAwarenessStateFilter = (currentClientId, userClientId, _user) => currentClientId !== userClientId\n\n/**\n * Default generator for a cursor element\n *\n * @param {any} user user data\n * @return {HTMLElement}\n */\nexport const 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 */\nexport const 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 {function({ name: string, color: string }):Element} createCursor\n * @param {function({ name: string, color: string }):import('prosemirror-view').DecorationAttrs} createSelection\n * @return {any} DecorationSet\n */\nexport const createDecorations = (\n state,\n awareness,\n awarenessFilter,\n createCursor,\n createSelection\n) => {\n const ystate = ySyncPluginKey.getState(state)\n const y = ystate.doc\n const decorations = []\n if (\n ystate.snapshot != null || 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 if (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), {\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), {\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 {function(any):HTMLElement} [opts.cursorBuilder]\n * @param {function(any):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 */\nexport const 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 return prevState.map(tr.mapping, tr.doc)\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 const updateCursorInfo = () => {\n const ystate = ySyncPluginKey.getState(view.state)\n // @note We make implicit checks when checking for the cursor property\n const current = awareness.getLocalState() || {}\n if (view.hasFocus()) {\n const selection = getSelection(view.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 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 awareness.on('change', awarenessListener)\n view.dom.addEventListener('focusin', updateCursorInfo)\n view.dom.addEventListener('focusout', updateCursorInfo)\n return {\n update: updateCursorInfo,\n destroy: () => {\n view.dom.removeEventListener('focusin', updateCursorInfo)\n view.dom.removeEventListener('focusout', updateCursorInfo)\n awareness.off('change', awarenessListener)\n awareness.setLocalStateField(cursorStateField, null)\n }\n }\n }\n })\n","import { Plugin } from 'prosemirror-state' // eslint-disable-line\n\nimport { getRelativeSelection } from './sync-plugin.js'\nimport { UndoManager, Item, ContentType, XmlElement, Text } from 'yjs'\nimport { yUndoPluginKey, ySyncPluginKey } from './keys.js'\n\nexport const undo = state => {\n const undoManager = yUndoPluginKey.getState(state).undoManager\n if (undoManager != null) {\n undoManager.undo()\n return true\n }\n}\n\nexport const redo = state => {\n const undoManager = yUndoPluginKey.getState(state).undoManager\n if (undoManager != null) {\n undoManager.redo()\n return true\n }\n}\n\nexport const defaultProtectedNodes = new Set(['paragraph'])\n\nexport const 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\nexport const 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 const _undoManager = 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 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 }\n }\n }\n})\n","import { Extension } from '@tiptap/core';\nimport { yUndoPluginKey, undo, redo, yUndoPlugin, ySyncPlugin, ySyncPluginKey } from 'y-prosemirror';\n\n/**\n * This extension allows you to collaborate with others in real-time.\n * @see https://tiptap.dev/api/extensions/collaboration\n */\nconst Collaboration = Extension.create({\n name: 'collaboration',\n priority: 1000,\n addOptions() {\n return {\n document: null,\n field: 'default',\n fragment: null,\n };\n },\n onCreate() {\n if (this.editor.extensionManager.extensions.find(extension => extension.name === 'history')) {\n console.warn('[tiptap warn]: \"@tiptap/extension-collaboration\" comes with its own history support and is not compatible with \"@tiptap/extension-history\".');\n }\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\n ? this.options.fragment\n : this.options.document.getXmlFragment(this.options.field);\n // Quick fix until there is an official implementation (thanks to @hamflx).\n // See https://github.com/yjs/y-prosemirror/issues/114 and https://github.com/yjs/y-prosemirror/issues/102\n const yUndoPluginInstance = yUndoPlugin();\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 // eslint-disable-next-line\n undoManager.restore = () => { };\n }\n const viewRet = originalUndoPluginView ? originalUndoPluginView(view) : undefined;\n return {\n destroy: () => {\n const hasUndoManSelf = undoManager.trackedOrigins.has(undoManager);\n // eslint-disable-next-line\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 // eslint-disable-next-line\n undoManager._observers = observers;\n };\n if (viewRet === null || viewRet === void 0 ? 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 [ySyncPluginInstance, yUndoPluginInstance];\n },\n});\n\n/**\n * Checks if a transaction was originated from a Yjs change.\n * @param {Transaction} transaction - The transaction to check.\n * @returns {boolean} - True if the transaction was originated from a Yjs change, false otherwise.\n * @example\n * const transaction = new Transaction(doc)\n * const isOrigin = isChangeOrigin(transaction) // returns false\n */\nfunction isChangeOrigin(transaction) {\n return !!transaction.getMeta(ySyncPluginKey);\n}\n\nexport { Collaboration, Collaboration as default, isChangeOrigin };\n//# sourceMappingURL=index.js.map\n","import { Extension } from '@tiptap/core';\nimport { defaultSelectionBuilder, yCursorPlugin } from 'y-prosemirror';\n\nconst awarenessStatesToArray = (states) => {\n return Array.from(states.entries()).map(([key, value]) => {\n return {\n clientId: key,\n ...value.user,\n };\n });\n};\nconst defaultOnUpdate = () => null;\n/**\n * This extension allows you to add collaboration cursors to your editor.\n * @see https://tiptap.dev/api/extensions/collaboration-cursor\n */\nconst CollaborationCursor = Extension.create({\n name: 'collaborationCursor',\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-cursor__caret');\n cursor.setAttribute('style', `border-color: ${user.color}`);\n const label = document.createElement('div');\n label.classList.add('collaboration-cursor__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('[tiptap warn]: DEPRECATED: The \"onUpdate\" option is deprecated. Please use `editor.storage.collaborationCursor.users` instead. Read more: https://tiptap.dev/api/extensions/collaboration-cursor');\n }\n if (!this.options.provider) {\n throw new Error('The \"provider\" option is required for the CollaborationCursor extension');\n }\n },\n addStorage() {\n return {\n users: [],\n };\n },\n addCommands() {\n return {\n updateUser: attributes => () => {\n this.options.user = attributes;\n this.options.provider.awareness.setLocalStateField('user', this.options.user);\n return true;\n },\n user: attributes => ({ editor }) => {\n console.warn('[tiptap warn]: DEPRECATED: The \"user\" command is deprecated. Please use \"updateUser\" instead. Read more: https://tiptap.dev/api/extensions/collaboration-cursor');\n return editor.commands.updateUser(attributes);\n },\n };\n },\n addProseMirrorPlugins() {\n return [\n yCursorPlugin((() => {\n this.options.provider.awareness.setLocalStateField('user', this.options.user);\n this.storage.users = awarenessStatesToArray(this.options.provider.awareness.states);\n this.options.provider.awareness.on('update', () => {\n this.storage.users = awarenessStatesToArray(this.options.provider.awareness.states);\n });\n return this.options.provider.awareness;\n })(), \n // @ts-ignore\n {\n cursorBuilder: this.options.render,\n selectionBuilder: this.options.selectionRender,\n }),\n ];\n },\n});\n\nexport { CollaborationCursor, CollaborationCursor as default };\n//# sourceMappingURL=index.js.map\n","import { Mark, mergeAttributes, getMarkAttributes } from '@tiptap/core';\n\n/**\n * This extension allows you to create text styles. It is required by default\n * for the `textColor` and `backgroundColor` extensions.\n * @see https://www.tiptap.dev/api/marks/text-style\n */\nconst TextStyle = Mark.create({\n name: 'textStyle',\n priority: 101,\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n parseHTML() {\n return [\n {\n tag: 'span',\n getAttrs: element => {\n const hasStyles = element.hasAttribute('style');\n if (!hasStyles) {\n return false;\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 removeEmptyTextStyle: () => ({ state, commands }) => {\n const attributes = getMarkAttributes(state, this.type);\n const hasStyles = Object.entries(attributes).some(([, value]) => !!value);\n if (hasStyles) {\n return true;\n }\n return commands.unsetMark(this.name);\n },\n };\n },\n});\n\nexport { TextStyle, TextStyle as default };\n//# sourceMappingURL=index.js.map\n","import '@tiptap/extension-text-style';\nimport { Extension } from '@tiptap/core';\n\n/**\n * This extension allows you to color your text.\n * @see https://tiptap.dev/api/extensions/color\n */\nconst Color = Extension.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 => { var _a; return (_a = element.style.color) === null || _a === void 0 ? void 0 : _a.replace(/['\"]+/g, ''); },\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()\n .setMark('textStyle', { color })\n .run();\n },\n unsetColor: () => ({ chain }) => {\n return chain()\n .setMark('textStyle', { color: null })\n .removeEmptyTextStyle()\n .run();\n },\n };\n },\n});\n\nexport { Color, Color as default };\n//# sourceMappingURL=index.js.map\n","import { Node } from '@tiptap/core';\n\n/**\n * The default document node which represents the top level node of the editor.\n * @see https://tiptap.dev/api/nodes/document\n */\nconst Document = Node.create({\n name: 'doc',\n topNode: true,\n content: 'block+',\n});\n\nexport { Document, Document as default };\n//# sourceMappingURL=index.js.map\n","import { Extension } from '@tiptap/core';\nimport { Plugin, PluginKey } from '@tiptap/pm/state';\nimport { DecorationSet, Decoration } from '@tiptap/pm/view';\n\n/**\n * This extension allows you to add a class to the focused node.\n * @see https://www.tiptap.dev/api/extensions/focus\n */\nconst FocusClasses = Extension.create({\n name: 'focus',\n addOptions() {\n return {\n className: 'has-focus',\n mode: 'all',\n };\n },\n addProseMirrorPlugins() {\n return [\n new Plugin({\n key: new PluginKey('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 // Maximum Levels\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 // Loop through current\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)\n || (this.options.mode === 'shallowest' && currentLevel > 1);\n if (outOfScope) {\n return this.options.mode === 'deepest';\n }\n decorations.push(Decoration.node(pos, pos + node.nodeSize, {\n class: this.options.className,\n }));\n });\n return DecorationSet.create(doc, decorations);\n },\n },\n }),\n ];\n },\n});\n\nexport { FocusClasses, FocusClasses as default };\n//# sourceMappingURL=index.js.map\n","import { Mark, mergeAttributes, markInputRule, markPasteRule } from '@tiptap/core';\n\n/**\n * Matches a highlight to a ==highlight== on input.\n */\nconst inputRegex = /(?:^|\\s)(==(?!\\s+==)((?:[^=]+))==(?!\\s+==))$/;\n/**\n * Matches a highlight to a ==highlight== on paste.\n */\nconst pasteRegex = /(?:^|\\s)(==(?!\\s+==)((?:[^=]+))==(?!\\s+==))/g;\n/**\n * This extension allows you to highlight text.\n * @see https://www.tiptap.dev/api/marks/highlight\n */\nconst 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 parseHTML: element => element.getAttribute('data-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 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\nexport { Highlight, Highlight as default, inputRegex, pasteRegex };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes } from '@tiptap/core';\n\n/**\n * This extension allows you to create list items.\n * @see https://www.tiptap.dev/api/nodes/list-item\n */\nconst ListItem = Node.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', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\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\nexport { ListItem, ListItem as default };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes } from '@tiptap/core';\n\n/**\n * This extension allows you to create table cells.\n * @see https://www.tiptap.dev/api/nodes/table-cell\n */\nconst 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 const colwidth = element.getAttribute('colwidth');\n const value = colwidth\n ? [parseInt(colwidth, 10)]\n : null;\n return value;\n },\n },\n };\n },\n tableRole: 'cell',\n isolating: true,\n parseHTML() {\n return [\n { tag: 'td' },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['td', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n});\n\nexport { TableCell, TableCell as default };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes } from '@tiptap/core';\n\n/**\n * This extension allows you to create table headers.\n * @see https://www.tiptap.dev/api/nodes/table-header\n */\nconst TableHeader = Node.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\n ? [parseInt(colwidth, 10)]\n : null;\n return value;\n },\n },\n };\n },\n tableRole: 'header_cell',\n isolating: true,\n parseHTML() {\n return [\n { tag: 'th' },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['th', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n});\n\nexport { TableHeader, TableHeader as default };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes } from '@tiptap/core';\n\n/**\n * This extension allows you to create table rows.\n * @see https://www.tiptap.dev/api/nodes/table-row\n */\nconst TableRow = Node.create({\n name: 'tableRow',\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n content: '(tableCell | tableHeader)*',\n tableRole: 'row',\n parseHTML() {\n return [\n { tag: 'tr' },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['tr', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n});\n\nexport { TableRow, TableRow as default };\n//# sourceMappingURL=index.js.map\n","import { Mark, mergeAttributes } from '@tiptap/core';\n\n/**\n * This extension allows you to create underline text.\n * @see https://www.tiptap.dev/api/marks/underline\n */\nconst 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 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\nexport { Underline, Underline as default };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes, wrappingInputRule } from '@tiptap/core';\n\n/**\n * Matches a blockquote to a `>` as input.\n */\nconst inputRegex = /^\\s*>\\s$/;\n/**\n * This extension allows you to create blockquotes.\n * @see https://tiptap.dev/api/nodes/blockquote\n */\nconst Blockquote = Node.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 [\n { tag: 'blockquote' },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['blockquote', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\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 };\n },\n addInputRules() {\n return [\n wrappingInputRule({\n find: inputRegex,\n type: this.type,\n }),\n ];\n },\n});\n\nexport { Blockquote, Blockquote as default, inputRegex };\n//# sourceMappingURL=index.js.map\n","import { Mark, mergeAttributes, markInputRule, markPasteRule } from '@tiptap/core';\n\n/**\n * Matches bold text via `**` as input.\n */\nconst starInputRegex = /(?:^|\\s)(\\*\\*(?!\\s+\\*\\*)((?:[^*]+))\\*\\*(?!\\s+\\*\\*))$/;\n/**\n * Matches bold text via `**` while pasting.\n */\nconst starPasteRegex = /(?:^|\\s)(\\*\\*(?!\\s+\\*\\*)((?:[^*]+))\\*\\*(?!\\s+\\*\\*))/g;\n/**\n * Matches bold text via `__` as input.\n */\nconst underscoreInputRegex = /(?:^|\\s)(__(?!\\s+__)((?:[^_]+))__(?!\\s+__))$/;\n/**\n * Matches bold text via `__` while pasting.\n */\nconst underscorePasteRegex = /(?:^|\\s)(__(?!\\s+__)((?:[^_]+))__(?!\\s+__))/g;\n/**\n * This extension allows you to mark text as bold.\n * @see https://tiptap.dev/api/marks/bold\n */\nconst 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',\n getAttrs: value => /^(bold(er)?|[5-9]\\d{2,})$/.test(value) && null,\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['strong', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\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\nexport { Bold, Bold as default, starInputRegex, starPasteRegex, underscoreInputRegex, underscorePasteRegex };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes, Mark, getMarkAttributes, wrappingInputRule } from '@tiptap/core';\n\n/**\n * This extension allows you to create list items.\n * @see https://www.tiptap.dev/api/nodes/list-item\n */\nconst ListItem = Node.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', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\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/**\n * This extension allows you to create text styles. It is required by default\n * for the `textColor` and `backgroundColor` extensions.\n * @see https://www.tiptap.dev/api/marks/text-style\n */\nconst TextStyle = Mark.create({\n name: 'textStyle',\n priority: 101,\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n parseHTML() {\n return [\n {\n tag: 'span',\n getAttrs: element => {\n const hasStyles = element.hasAttribute('style');\n if (!hasStyles) {\n return false;\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 removeEmptyTextStyle: () => ({ state, commands }) => {\n const attributes = getMarkAttributes(state, this.type);\n const hasStyles = Object.entries(attributes).some(([, value]) => !!value);\n if (hasStyles) {\n return true;\n }\n return commands.unsetMark(this.name);\n },\n };\n },\n});\n\n/**\n * Matches a bullet list to a dash or asterisk.\n */\nconst inputRegex = /^\\s*([-+*])\\s$/;\n/**\n * This extension allows you to create bullet lists.\n * This requires the ListItem extension\n * @see https://tiptap.dev/api/nodes/bullet-list\n * @see https://tiptap.dev/api/nodes/list-item.\n */\nconst 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 [\n { tag: 'ul' },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['ul', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\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(ListItem.name, this.editor.getAttributes(TextStyle.name)).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: inputRegex,\n type: this.type,\n });\n if (this.options.keepMarks || this.options.keepAttributes) {\n inputRule = wrappingInputRule({\n find: inputRegex,\n type: this.type,\n keepMarks: this.options.keepMarks,\n keepAttributes: this.options.keepAttributes,\n getAttributes: () => { return this.editor.getAttributes(TextStyle.name); },\n editor: this.editor,\n });\n }\n return [\n inputRule,\n ];\n },\n});\n\nexport { BulletList, BulletList as default, inputRegex };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes, textblockTypeInputRule } from '@tiptap/core';\nimport { Selection, Plugin, PluginKey, TextSelection } from '@tiptap/pm/state';\n\n/**\n * Matches a code block with backticks.\n */\nconst backtickInputRegex = /^```([a-z]+)?[\\s\\n]$/;\n/**\n * Matches a code block with tildes.\n */\nconst tildeInputRegex = /^~~~([a-z]+)?[\\s\\n]$/;\n/**\n * This extension allows you to create code blocks.\n * @see https://tiptap.dev/api/nodes/code-block\n */\nconst CodeBlock = Node.create({\n name: 'codeBlock',\n addOptions() {\n return {\n languageClassPrefix: 'language-',\n exitOnTripleEnter: true,\n exitOnArrowDown: true,\n defaultLanguage: null,\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 const classNames = [...(((_a = element.firstElementChild) === null || _a === void 0 ? void 0 : _a.classList) || [])];\n const languages = classNames\n .filter(className => className.startsWith(languageClassPrefix))\n .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\n ? this.options.languageClassPrefix + node.attrs.language\n : null,\n },\n 0,\n ],\n ];\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 // 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\n .chain()\n .command(({ tr }) => {\n tr.delete($from.pos - 2, $from.pos);\n return true;\n })\n .exitCode()\n .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 === undefined) {\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 // don’t create a new code block within code blocks\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) : undefined;\n const language = vscodeData === null || vscodeData === void 0 ? void 0 : vscodeData.mode;\n if (!text || !language) {\n return false;\n }\n const { tr, schema } = view.state;\n // prepare a text node\n // strip carriage return chars from text pasted as code\n // see: https://github.com/ProseMirror/prosemirror-view/commit/a50a6bcceb4ce52ac8fcc6162488d8875613aacd\n const textNode = schema.text(text.replace(/\\r\\n?/g, '\\n'));\n // create a code block with the text node\n // replace selection with the code block\n tr.replaceSelectionWith(this.type.create({ language }, textNode));\n if (tr.selection.$from.parent.type !== this.type) {\n // put cursor inside the newly created code block\n tr.setSelection(TextSelection.near(tr.doc.resolve(Math.max(0, tr.selection.from - 2))));\n }\n // store meta information\n // this is useful for other plugins that depends on the paste event\n // like the paste rule plugin\n tr.setMeta('paste', true);\n view.dispatch(tr);\n return true;\n },\n },\n }),\n ];\n },\n});\n\nexport { CodeBlock, backtickInputRegex, CodeBlock as default, tildeInputRegex };\n//# sourceMappingURL=index.js.map\n","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 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 rect = { left: nodeRect.left, right: nodeRect.right, top: top - this.width / 2, bottom: top + this.width / 2 };\n }\n }\n }\n if (!rect) {\n let coords = this.editorView.coordsAtPos(this.cursorPos);\n rect = { left: coords.left - this.width / 2, right: coords.left + this.width / 2, 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 parentLeft = rect.left - parent.scrollLeft;\n parentTop = rect.top - parent.scrollTop;\n }\n this.element.style.left = (rect.left - parentLeft) + \"px\";\n this.element.style.top = (rect.top - parentTop) + \"px\";\n this.element.style.width = (rect.right - rect.left) + \"px\";\n this.element.style.height = (rect.bottom - rect.top) + \"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\" ? disableDropCursor(this.editorView, pos, event) : 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 (event.target == this.editorView.dom || !this.editorView.dom.contains(event.relatedTarget))\n this.setCursor(null);\n }\n}\n\nexport { dropCursor };\n","import { Extension } from '@tiptap/core';\nimport { dropCursor } from '@tiptap/pm/dropcursor';\n\n/**\n * This extension allows you to add a drop cursor to your editor.\n * A drop cursor is a line that appears when you drag and drop content\n * inbetween nodes.\n * @see https://tiptap.dev/api/extensions/dropcursor\n */\nconst Dropcursor = Extension.create({\n name: 'dropCursor',\n addOptions() {\n return {\n color: 'currentColor',\n width: 1,\n class: undefined,\n };\n },\n addProseMirrorPlugins() {\n return [\n dropCursor(this.options),\n ];\n },\n});\n\nexport { Dropcursor, Dropcursor as default };\n//# sourceMappingURL=index.js.map\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","import { Extension, callOrReturn, getExtensionField } from '@tiptap/core';\nimport { gapCursor } from '@tiptap/pm/gapcursor';\n\n/**\n * This extension allows you to add a gap cursor to your editor.\n * A gap cursor is a cursor that appears when you click on a place\n * where no content is present, for example inbetween nodes.\n * @see https://tiptap.dev/api/extensions/gapcursor\n */\nconst Gapcursor = Extension.create({\n name: 'gapCursor',\n addProseMirrorPlugins() {\n return [\n gapCursor(),\n ];\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 !== void 0 ? _a : null,\n };\n },\n});\n\nexport { Gapcursor, Gapcursor as default };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes } from '@tiptap/core';\n\n/**\n * This extension allows you to insert hard breaks.\n * @see https://www.tiptap.dev/api/nodes/hard-break\n */\nconst HardBreak = Node.create({\n name: 'hardBreak',\n addOptions() {\n return {\n keepMarks: true,\n HTMLAttributes: {},\n };\n },\n inline: true,\n group: 'inline',\n selectable: false,\n parseHTML() {\n return [\n { tag: 'br' },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['br', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)];\n },\n renderText() {\n return '\\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\n || (selection.$to.parentOffset && selection.$from.marks());\n return chain()\n .insertContent({ type: this.name })\n .command(({ tr, dispatch }) => {\n if (dispatch && marks && keepMarks) {\n const filteredMarks = marks\n .filter(mark => splittableMarks.includes(mark.type.name));\n tr.ensureMarks(filteredMarks);\n }\n return true;\n })\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\nexport { HardBreak, HardBreak as default };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes, textblockTypeInputRule } from '@tiptap/core';\n\n/**\n * This extension allows you to create headings.\n * @see https://www.tiptap.dev/api/nodes/heading\n */\nconst 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\n .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\n ? node.attrs.level\n : this.options.levels[0];\n return [`h${level}`, mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\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((items, level) => ({\n ...items,\n ...{\n [`Mod-Alt-${level}`]: () => this.editor.commands.toggleHeading({ level }),\n },\n }), {});\n },\n addInputRules() {\n return this.options.levels.map(level => {\n return textblockTypeInputRule({\n find: new RegExp(`^(#{1,${level}})\\\\s$`),\n type: this.type,\n getAttributes: {\n level,\n },\n });\n });\n },\n});\n\nexport { Heading, Heading as default };\n//# sourceMappingURL=index.js.map\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)\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\nexport { closeHistory, history, redo, redoDepth, redoNoScroll, undo, undoDepth, undoNoScroll };\n","import { Extension } from '@tiptap/core';\nimport { undo, redo, history } from '@tiptap/pm/history';\n\n/**\n * This extension allows you to undo and redo recent changes.\n * @see https://www.tiptap.dev/api/extensions/history\n *\n * **Important**: If the `@tiptap/extension-collaboration` package is used, make sure to remove\n * the `history` extension, as it is not compatible with the `collaboration` extension.\n *\n * `@tiptap/extension-collaboration` uses its own history implementation.\n */\nconst History = Extension.create({\n name: 'history',\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 [\n history(this.options),\n ];\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-я': () => this.editor.commands.undo(),\n 'Shift-Mod-я': () => this.editor.commands.redo(),\n };\n },\n});\n\nexport { History, History as default };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes, isNodeSelection, nodeInputRule } from '@tiptap/core';\nimport { TextSelection, NodeSelection } from '@tiptap/pm/state';\n\n/**\n * This extension allows you to insert horizontal rules.\n * @see https://www.tiptap.dev/api/nodes/horizontal-rule\n */\nconst HorizontalRule = Node.create({\n name: 'horizontalRule',\n addOptions() {\n return {\n HTMLAttributes: {},\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 addCommands() {\n return {\n setHorizontalRule: () => ({ chain, state }) => {\n const { selection } = state;\n const { $from: $originFrom, $to: $originTo } = selection;\n const currentChain = chain();\n if ($originFrom.parentOffset === 0) {\n currentChain.insertContentAt({\n from: Math.max($originFrom.pos - 1, 0),\n to: $originTo.pos,\n }, {\n type: this.name,\n });\n }\n else if (isNodeSelection(selection)) {\n currentChain.insertContentAt($originTo.pos, {\n type: this.name,\n });\n }\n else {\n currentChain.insertContent({ type: this.name });\n }\n return (currentChain\n // set cursor after horizontal rule\n .command(({ tr, dispatch }) => {\n var _a;\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 }\n else if ($to.nodeAfter.isBlock) {\n tr.setSelection(NodeSelection.create(tr.doc, $to.pos));\n }\n else {\n tr.setSelection(TextSelection.create(tr.doc, $to.pos));\n }\n }\n else {\n // add node after horizontal rule if it’s the end of the document\n const node = (_a = $to.parent.type.contentMatch.defaultType) === null || _a === void 0 ? void 0 : _a.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 })\n .run());\n },\n };\n },\n addInputRules() {\n return [\n nodeInputRule({\n find: /^(?:---|—-|___\\s|\\*\\*\\*\\s)$/,\n type: this.type,\n }),\n ];\n },\n});\n\nexport { HorizontalRule, HorizontalRule as default };\n//# sourceMappingURL=index.js.map\n","import { Mark, mergeAttributes, markInputRule, markPasteRule } from '@tiptap/core';\n\n/**\n * Matches an italic to a *italic* on input.\n */\nconst starInputRegex = /(?:^|\\s)(\\*(?!\\s+\\*)((?:[^*]+))\\*(?!\\s+\\*))$/;\n/**\n * Matches an italic to a *italic* on paste.\n */\nconst starPasteRegex = /(?:^|\\s)(\\*(?!\\s+\\*)((?:[^*]+))\\*(?!\\s+\\*))/g;\n/**\n * Matches an italic to a _italic_ on input.\n */\nconst underscoreInputRegex = /(?:^|\\s)(_(?!\\s+_)((?:[^_]+))_(?!\\s+_))$/;\n/**\n * Matches an italic to a _italic_ on paste.\n */\nconst underscorePasteRegex = /(?:^|\\s)(_(?!\\s+_)((?:[^_]+))_(?!\\s+_))/g;\n/**\n * This extension allows you to create italic text.\n * @see https://www.tiptap.dev/api/marks/italic\n */\nconst 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=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 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\nexport { Italic, Italic as default, starInputRegex, starPasteRegex, underscoreInputRegex, underscorePasteRegex };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes, Mark, getMarkAttributes, wrappingInputRule } from '@tiptap/core';\n\n/**\n * This extension allows you to create list items.\n * @see https://www.tiptap.dev/api/nodes/list-item\n */\nconst ListItem = Node.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', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\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/**\n * This extension allows you to create text styles. It is required by default\n * for the `textColor` and `backgroundColor` extensions.\n * @see https://www.tiptap.dev/api/marks/text-style\n */\nconst TextStyle = Mark.create({\n name: 'textStyle',\n priority: 101,\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n parseHTML() {\n return [\n {\n tag: 'span',\n getAttrs: element => {\n const hasStyles = element.hasAttribute('style');\n if (!hasStyles) {\n return false;\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 removeEmptyTextStyle: () => ({ state, commands }) => {\n const attributes = getMarkAttributes(state, this.type);\n const hasStyles = Object.entries(attributes).some(([, value]) => !!value);\n if (hasStyles) {\n return true;\n }\n return commands.unsetMark(this.name);\n },\n };\n },\n});\n\n/**\n * Matches an ordered list to a 1. on input (or any number followed by a dot).\n */\nconst inputRegex = /^(\\d+)\\.\\s$/;\n/**\n * This extension allows you to create ordered lists.\n * This requires the ListItem extension\n * @see https://www.tiptap.dev/api/nodes/ordered-list\n * @see https://www.tiptap.dev/api/nodes/list-item\n */\nconst OrderedList = Node.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')\n ? parseInt(element.getAttribute('start') || '', 10)\n : 1;\n },\n },\n type: {\n default: undefined,\n parseHTML: element => element.getAttribute('type'),\n },\n };\n },\n parseHTML() {\n return [\n {\n tag: 'ol',\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n const { start, ...attributesWithoutStart } = HTMLAttributes;\n return start === 1\n ? ['ol', mergeAttributes(this.options.HTMLAttributes, attributesWithoutStart), 0]\n : ['ol', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\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(ListItem.name, this.editor.getAttributes(TextStyle.name)).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 addInputRules() {\n let inputRule = wrappingInputRule({\n find: inputRegex,\n type: this.type,\n getAttributes: match => ({ start: +match[1] }),\n joinPredicate: (match, node) => node.childCount + node.attrs.start === +match[1],\n });\n if (this.options.keepMarks || this.options.keepAttributes) {\n inputRule = wrappingInputRule({\n find: inputRegex,\n type: this.type,\n keepMarks: this.options.keepMarks,\n keepAttributes: this.options.keepAttributes,\n getAttributes: match => ({ start: +match[1], ...this.editor.getAttributes(TextStyle.name) }),\n joinPredicate: (match, node) => node.childCount + node.attrs.start === +match[1],\n editor: this.editor,\n });\n }\n return [\n inputRule,\n ];\n },\n});\n\nexport { OrderedList, OrderedList as default, inputRegex };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes } from '@tiptap/core';\n\n/**\n * This extension allows you to create paragraphs.\n * @see https://www.tiptap.dev/api/nodes/paragraph\n */\nconst Paragraph = Node.create({\n name: 'paragraph',\n priority: 1000,\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n group: 'block',\n content: 'inline*',\n parseHTML() {\n return [\n { tag: 'p' },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return ['p', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\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\nexport { Paragraph, Paragraph as default };\n//# sourceMappingURL=index.js.map\n","import { Mark, mergeAttributes, markInputRule, markPasteRule } from '@tiptap/core';\n\n/**\n * Matches a strike to a ~~strike~~ on input.\n */\nconst inputRegex = /(?:^|\\s)(~~(?!\\s+~~)((?:[^~]+))~~(?!\\s+~~))$/;\n/**\n * Matches a strike to a ~~strike~~ on paste.\n */\nconst pasteRegex = /(?:^|\\s)(~~(?!\\s+~~)((?:[^~]+))~~(?!\\s+~~))/g;\n/**\n * This extension allows you to create strike text.\n * @see https://www.tiptap.dev/api/marks/strike\n */\nconst 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 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\nexport { Strike, Strike as default, inputRegex, pasteRegex };\n//# sourceMappingURL=index.js.map\n","import { Node } from '@tiptap/core';\n\n/**\n * This extension allows you to create text nodes.\n * @see https://www.tiptap.dev/api/nodes/text\n */\nconst Text = Node.create({\n name: 'text',\n group: 'inline',\n});\n\nexport { Text, Text as default };\n//# sourceMappingURL=index.js.map\n","import { Extension } from '@tiptap/core';\nimport { Blockquote } from '@tiptap/extension-blockquote';\nimport { Bold } from '@tiptap/extension-bold';\nimport { BulletList } from '@tiptap/extension-bullet-list';\nimport { Code } from '@tiptap/extension-code';\nimport { CodeBlock } from '@tiptap/extension-code-block';\nimport { Document } from '@tiptap/extension-document';\nimport { Dropcursor } from '@tiptap/extension-dropcursor';\nimport { Gapcursor } from '@tiptap/extension-gapcursor';\nimport { HardBreak } from '@tiptap/extension-hard-break';\nimport { Heading } from '@tiptap/extension-heading';\nimport { History } from '@tiptap/extension-history';\nimport { HorizontalRule } from '@tiptap/extension-horizontal-rule';\nimport { Italic } from '@tiptap/extension-italic';\nimport { ListItem } from '@tiptap/extension-list-item';\nimport { OrderedList } from '@tiptap/extension-ordered-list';\nimport { Paragraph } from '@tiptap/extension-paragraph';\nimport { Strike } from '@tiptap/extension-strike';\nimport { Text } from '@tiptap/extension-text';\n\n/**\n * The starter kit is a collection of essential editor extensions.\n *\n * It’s a good starting point for building your own editor.\n */\nconst StarterKit = Extension.create({\n name: 'starterKit',\n addExtensions() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;\n const extensions = [];\n if (this.options.bold !== false) {\n extensions.push(Bold.configure((_a = this.options) === null || _a === void 0 ? void 0 : _a.bold));\n }\n if (this.options.blockquote !== false) {\n extensions.push(Blockquote.configure((_b = this.options) === null || _b === void 0 ? void 0 : _b.blockquote));\n }\n if (this.options.bulletList !== false) {\n extensions.push(BulletList.configure((_c = this.options) === null || _c === void 0 ? void 0 : _c.bulletList));\n }\n if (this.options.code !== false) {\n extensions.push(Code.configure((_d = this.options) === null || _d === void 0 ? void 0 : _d.code));\n }\n if (this.options.codeBlock !== false) {\n extensions.push(CodeBlock.configure((_e = this.options) === null || _e === void 0 ? void 0 : _e.codeBlock));\n }\n if (this.options.document !== false) {\n extensions.push(Document.configure((_f = this.options) === null || _f === void 0 ? void 0 : _f.document));\n }\n if (this.options.dropcursor !== false) {\n extensions.push(Dropcursor.configure((_g = this.options) === null || _g === void 0 ? void 0 : _g.dropcursor));\n }\n if (this.options.gapcursor !== false) {\n extensions.push(Gapcursor.configure((_h = this.options) === null || _h === void 0 ? void 0 : _h.gapcursor));\n }\n if (this.options.hardBreak !== false) {\n extensions.push(HardBreak.configure((_j = this.options) === null || _j === void 0 ? void 0 : _j.hardBreak));\n }\n if (this.options.heading !== false) {\n extensions.push(Heading.configure((_k = this.options) === null || _k === void 0 ? void 0 : _k.heading));\n }\n if (this.options.history !== false) {\n extensions.push(History.configure((_l = this.options) === null || _l === void 0 ? void 0 : _l.history));\n }\n if (this.options.horizontalRule !== false) {\n extensions.push(HorizontalRule.configure((_m = this.options) === null || _m === void 0 ? void 0 : _m.horizontalRule));\n }\n if (this.options.italic !== false) {\n extensions.push(Italic.configure((_o = this.options) === null || _o === void 0 ? void 0 : _o.italic));\n }\n if (this.options.listItem !== false) {\n extensions.push(ListItem.configure((_p = this.options) === null || _p === void 0 ? void 0 : _p.listItem));\n }\n if (this.options.orderedList !== false) {\n extensions.push(OrderedList.configure((_q = this.options) === null || _q === void 0 ? void 0 : _q.orderedList));\n }\n if (this.options.paragraph !== false) {\n extensions.push(Paragraph.configure((_r = this.options) === null || _r === void 0 ? void 0 : _r.paragraph));\n }\n if (this.options.strike !== false) {\n extensions.push(Strike.configure((_s = this.options) === null || _s === void 0 ? void 0 : _s.strike));\n }\n if (this.options.text !== false) {\n extensions.push(Text.configure((_t = this.options) === null || _t === void 0 ? void 0 : _t.text));\n }\n return extensions;\n },\n});\n\nexport { StarterKit, StarterKit as default };\n//# sourceMappingURL=index.js.map\n","import { Extension } from \"@tiptap/core\";\nimport \"@tiptap/extension-text-style\";\n\nexport default Extension.create({\n name: \"HighlightInternal\",\n\n addOptions() {\n return { 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 element.style.backgroundColor.replace(/['\"]+/g, \"\"),\n renderHTML: attributes => {\n if (!attributes.backgroundColor) {\n return {};\n }\n\n return {\n style: `background-color: ${attributes.backgroundColor}`,\n };\n },\n },\n },\n },\n ];\n },\n\n addCommands() {\n return {\n setHighlightInternal:\n color =>\n ({ chain }) =>\n chain().setMark(\"textStyle\", { backgroundColor: color }).run(),\n unsetHighlightInternal:\n () =>\n ({ chain }) =>\n chain().setMark(\"textStyle\", { backgroundColor: null }).run(),\n };\n },\n});\n","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 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 } from \"@tiptap/core\";\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 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 } 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/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/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 const listItemPos = findListItemPos(name, editor.state);\n if (!listItemPos) {\n return false;\n }\n const $prev = editor.state.doc.resolve(listItemPos.$pos.pos - 2);\n const prevNode = $prev.node(listItemPos.depth);\n const previousListItemHasSubList = listItemHasSubList(name, editor.state, prevNode);\n if (hasListItemBefore(name, editor.state) && !previousListItemHasSubList) {\n return editor.commands.joinItemBackward();\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/list-keymap.ts\nvar ListKeymap = Extension.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 Extension2 } from \"@tiptap/core\";\n\n// src/ordered-list/ordered-list.ts\nimport { mergeAttributes as mergeAttributes3, Node as Node3, wrappingInputRule as wrappingInputRule2 } from \"@tiptap/core\";\nvar ListItemName2 = \"listItem\";\nvar TextStyleName2 = \"textStyle\";\nvar orderedListInputRegex = /^(\\d+)\\.\\s$/;\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) => element.getAttribute(\"type\")\n }\n };\n },\n parseHTML() {\n return [\n {\n tag: \"ol\"\n }\n ];\n },\n renderHTML({ HTMLAttributes }) {\n const { start, ...attributesWithoutStart } = HTMLAttributes;\n return start === 1 ? [\"ol\", mergeAttributes3(this.options.HTMLAttributes, attributesWithoutStart), 0] : [\"ol\", mergeAttributes3(this.options.HTMLAttributes, HTMLAttributes), 0];\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 addInputRules() {\n let inputRule = wrappingInputRule2({\n find: orderedListInputRegex,\n type: this.type,\n getAttributes: (match) => ({ start: +match[1] }),\n joinPredicate: (match, node) => node.childCount + node.attrs.start === +match[1]\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: (match, node) => node.childCount + node.attrs.start === +match[1],\n editor: this.editor\n });\n }\n return [inputRule];\n }\n});\n\n// src/task-item/task-item.ts\nimport { mergeAttributes as mergeAttributes4, Node as Node4, wrappingInputRule as wrappingInputRule3 } 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 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 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 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 } 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 [\"ul\", mergeAttributes5(this.options.HTMLAttributes, HTMLAttributes, { \"data-type\": this.name }), 0];\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 = Extension2.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 OrderedList,\n TaskItem,\n TaskList,\n bulletListInputRegex,\n inputRegex,\n listHelpers_exports as listHelpers,\n orderedListInputRegex\n};\n//# sourceMappingURL=index.js.map","import { BulletList } from \"@tiptap/extension-list\";\n\nexport default BulletList.configure({\n HTMLAttributes: { class: \"bulletList\" },\n itemTypeName: \"listItem\",\n});\n","import { NodeViewContent, NodeViewWrapper } from \"@tiptap/react\";\nimport { findBy } from \"neetocist\";\nimport { Megaphone } from \"neetoicons/misc\";\n\nimport { CALLOUT_TYPES } from \"components/Editor/Menu/Fixed/components/CalloutDropdown/constants\";\n\nconst CalloutComponent = ({ node }) => {\n const { type } = node.attrs;\n const Icon = findBy({ type }, CALLOUT_TYPES)?.icon || Megaphone;\n\n return (\n <NodeViewWrapper\n className={`neeto-editor__callout neeto-editor__callout--${type} group`}\n data-emoji={type}\n >\n <div className=\"callout-container\">\n <span className=\"callout-emoji\">\n <Icon />\n </span>\n <NodeViewContent\n className=\"callout-content\"\n data-testid=\"callout-content\"\n />\n </div>\n </NodeViewWrapper>\n );\n};\n\nexport default CalloutComponent;\n","import { Node, mergeAttributes } from \"@tiptap/core\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport { findBy } from \"neetocist\";\nimport { Megaphone } from \"neetoicons/misc\";\nimport ReactDOM from \"react-dom/server\";\n\nimport { CALLOUT_TYPES } from \"components/Editor/Menu/Fixed/components/CalloutDropdown/constants\";\n\nimport CalloutComponent from \"./CalloutComponent\";\n\nexport default Node.create({\n name: \"callout\",\n\n inline: false,\n\n group: \"block\",\n\n content: \"block+\",\n\n defining: true,\n\n draggable: true,\n\n addAttributes() {\n return {\n type: {\n default: \"default\",\n parseHTML: element => element.getAttribute(\"data-type\") || \"default\",\n renderHTML: attributes => ({ \"data-type\": attributes.type }),\n },\n };\n },\n\n parseHTML() {\n return [{ tag: \"div[data-emoji]\", contentElement: \".callout-content\" }];\n },\n\n renderHTML({ HTMLAttributes, node }) {\n const { type } = node.attrs;\n const Icon = findBy({ type }, CALLOUT_TYPES)?.icon || Megaphone;\n // eslint-disable-next-line react/jsx-filename-extension\n const svgString = ReactDOM.renderToStaticMarkup(<Icon />);\n\n const svgContainer = document.createElement(\"div\");\n svgContainer.innerHTML = svgString;\n const svgNode = svgContainer.firstChild;\n\n return [\n \"div\",\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, {\n class: `neeto-editor__callout neeto-editor__callout--${type}`,\n \"data-emoji\": type,\n }),\n [\n \"div\",\n { class: \"callout-container\" },\n [\"span\", { class: \"callout-emoji\" }, svgNode],\n [\"div\", { class: \"callout-content\" }, 0],\n ],\n ];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(CalloutComponent);\n },\n\n addCommands() {\n return {\n setCallout:\n (attributes = {}) =>\n ({ chain }) => {\n const { type = \"default\" } = attributes;\n\n return chain()\n .toggleWrap(this.name, { type })\n .command(({ tr, state, dispatch }) => {\n const { selection } = state;\n const { $from } = selection;\n\n const calloutNode = $from.node($from.depth - 1);\n\n if (calloutNode?.type.name === \"callout\") {\n const pos = $from.after($from.depth - 1);\n const nextNode = state.doc.nodeAt(pos);\n\n if (!nextNode || nextNode.type.name !== \"paragraph\") {\n tr.insert(pos, state.schema.nodes.paragraph.create());\n }\n }\n\n if (dispatch) {\n dispatch(tr);\n }\n\n return true;\n })\n .focus()\n .run();\n },\n };\n },\n\n addKeyboardShortcuts() {\n return {\n Backspace: () => {\n const { state, commands } = this.editor;\n const { $from, empty } = state.selection;\n\n if (!empty) return false;\n\n if ($from.parentOffset === 0) {\n const currentNode = $from.parent;\n\n if (currentNode.content.size === 0) {\n return commands.lift(this.name);\n }\n\n const calloutNode = $from.node($from.depth - 1);\n if (calloutNode?.type.name === \"callout\") {\n return commands.lift(this.name);\n }\n }\n\n return false;\n },\n ArrowDown: () => {\n const { state, commands } = this.editor;\n const { $from, empty } = state.selection;\n\n if (!empty) return false;\n\n const currentNode = $from.parent;\n const calloutNode = $from.node($from.depth - 1);\n\n if (calloutNode?.type.name === \"callout\") {\n const isAtEnd = $from.parentOffset === currentNode.content.size;\n\n const calloutContent = calloutNode.content;\n const currentNodeIndex = $from.index($from.depth - 1);\n const isLastNode = currentNodeIndex === calloutContent.childCount - 1;\n\n if (isAtEnd && isLastNode) {\n const pos = $from.after($from.depth - 1);\n\n if (pos < state.doc.content.size) {\n const nextNode = state.doc.nodeAt(pos);\n if (nextNode) {\n const endPos = pos + nextNode.nodeSize - 1;\n\n return commands.setTextSelection(endPos);\n }\n\n return commands.setTextSelection(pos);\n }\n\n return (\n commands.insertContentAt(pos, { type: \"paragraph\" }) &&\n commands.setTextSelection(pos + 1)\n );\n }\n }\n\n return false;\n },\n };\n },\n});\n","import CodeBlock from '@tiptap/extension-code-block';\nimport { findChildren } from '@tiptap/core';\nimport { Plugin, PluginKey } from '@tiptap/pm/state';\nimport { Decoration, DecorationSet } from '@tiptap/pm/view';\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\n/* eslint-disable no-multi-assign */\n\nfunction deepFreeze(obj) {\n if (obj instanceof Map) {\n obj.clear =\n obj.delete =\n obj.set =\n function () {\n throw new Error('map is read-only');\n };\n } else if (obj instanceof Set) {\n obj.add =\n obj.clear =\n obj.delete =\n function () {\n throw new Error('set is read-only');\n };\n }\n\n // Freeze self\n Object.freeze(obj);\n\n Object.getOwnPropertyNames(obj).forEach((name) => {\n const prop = obj[name];\n const type = typeof prop;\n\n // Freeze prop if it is an object or function and also not already frozen\n if ((type === 'object' || type === 'function') && !Object.isFrozen(prop)) {\n deepFreeze(prop);\n }\n });\n\n return obj;\n}\n\n/** @typedef {import('highlight.js').CallbackResponse} CallbackResponse */\n/** @typedef {import('highlight.js').CompiledMode} CompiledMode */\n/** @implements CallbackResponse */\n\nclass Response {\n /**\n * @param {CompiledMode} mode\n */\n constructor(mode) {\n // eslint-disable-next-line no-undefined\n if (mode.data === undefined) mode.data = {};\n\n this.data = mode.data;\n this.isMatchIgnored = false;\n }\n\n ignoreMatch() {\n this.isMatchIgnored = true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction escapeHTML(value) {\n return value\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#x27;');\n}\n\n/**\n * performs a shallow merge of multiple objects into one\n *\n * @template T\n * @param {T} original\n * @param {Record<string,any>[]} objects\n * @returns {T} a single new object\n */\nfunction inherit$1(original, ...objects) {\n /** @type Record<string,any> */\n const result = Object.create(null);\n\n for (const key in original) {\n result[key] = original[key];\n }\n objects.forEach(function(obj) {\n for (const key in obj) {\n result[key] = obj[key];\n }\n });\n return /** @type {T} */ (result);\n}\n\n/**\n * @typedef {object} Renderer\n * @property {(text: string) => void} addText\n * @property {(node: Node) => void} openNode\n * @property {(node: Node) => void} closeNode\n * @property {() => string} value\n */\n\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean}} Node */\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\n/** */\n\nconst SPAN_CLOSE = '</span>';\n\n/**\n * Determines if a node needs to be wrapped in <span>\n *\n * @param {Node} node */\nconst emitsWrappingTags = (node) => {\n // rarely we can have a sublanguage where language is undefined\n // TODO: track down why\n return !!node.scope;\n};\n\n/**\n *\n * @param {string} name\n * @param {{prefix:string}} options\n */\nconst scopeToCSSClass = (name, { prefix }) => {\n // sub-language\n if (name.startsWith(\"language:\")) {\n return name.replace(\"language:\", \"language-\");\n }\n // tiered scope: comment.line\n if (name.includes(\".\")) {\n const pieces = name.split(\".\");\n return [\n `${prefix}${pieces.shift()}`,\n ...(pieces.map((x, i) => `${x}${\"_\".repeat(i + 1)}`))\n ].join(\" \");\n }\n // simple scope\n return `${prefix}${name}`;\n};\n\n/** @type {Renderer} */\nclass HTMLRenderer {\n /**\n * Creates a new HTMLRenderer\n *\n * @param {Tree} parseTree - the parse tree (must support `walk` API)\n * @param {{classPrefix: string}} options\n */\n constructor(parseTree, options) {\n this.buffer = \"\";\n this.classPrefix = options.classPrefix;\n parseTree.walk(this);\n }\n\n /**\n * Adds texts to the output stream\n *\n * @param {string} text */\n addText(text) {\n this.buffer += escapeHTML(text);\n }\n\n /**\n * Adds a node open to the output stream (if needed)\n *\n * @param {Node} node */\n openNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n const className = scopeToCSSClass(node.scope,\n { prefix: this.classPrefix });\n this.span(className);\n }\n\n /**\n * Adds a node close to the output stream (if needed)\n *\n * @param {Node} node */\n closeNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n this.buffer += SPAN_CLOSE;\n }\n\n /**\n * returns the accumulated buffer\n */\n value() {\n return this.buffer;\n }\n\n // helpers\n\n /**\n * Builds a span element\n *\n * @param {string} className */\n span(className) {\n this.buffer += `<span class=\"${className}\">`;\n }\n}\n\n/** @typedef {{scope?: string, language?: string, children: Node[]} | string} Node */\n/** @typedef {{scope?: string, language?: string, children: Node[]} } DataNode */\n/** @typedef {import('highlight.js').Emitter} Emitter */\n/** */\n\n/** @returns {DataNode} */\nconst newNode = (opts = {}) => {\n /** @type DataNode */\n const result = { children: [] };\n Object.assign(result, opts);\n return result;\n};\n\nclass TokenTree {\n constructor() {\n /** @type DataNode */\n this.rootNode = newNode();\n this.stack = [this.rootNode];\n }\n\n get top() {\n return this.stack[this.stack.length - 1];\n }\n\n get root() { return this.rootNode; }\n\n /** @param {Node} node */\n add(node) {\n this.top.children.push(node);\n }\n\n /** @param {string} scope */\n openNode(scope) {\n /** @type Node */\n const node = newNode({ scope });\n this.add(node);\n this.stack.push(node);\n }\n\n closeNode() {\n if (this.stack.length > 1) {\n return this.stack.pop();\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n }\n\n closeAllNodes() {\n while (this.closeNode());\n }\n\n toJSON() {\n return JSON.stringify(this.rootNode, null, 4);\n }\n\n /**\n * @typedef { import(\"./html_renderer\").Renderer } Renderer\n * @param {Renderer} builder\n */\n walk(builder) {\n // this does not\n return this.constructor._walk(builder, this.rootNode);\n // this works\n // return TokenTree._walk(builder, this.rootNode);\n }\n\n /**\n * @param {Renderer} builder\n * @param {Node} node\n */\n static _walk(builder, node) {\n if (typeof node === \"string\") {\n builder.addText(node);\n } else if (node.children) {\n builder.openNode(node);\n node.children.forEach((child) => this._walk(builder, child));\n builder.closeNode(node);\n }\n return builder;\n }\n\n /**\n * @param {Node} node\n */\n static _collapse(node) {\n if (typeof node === \"string\") return;\n if (!node.children) return;\n\n if (node.children.every(el => typeof el === \"string\")) {\n // node.text = node.children.join(\"\");\n // delete node.children;\n node.children = [node.children.join(\"\")];\n } else {\n node.children.forEach((child) => {\n TokenTree._collapse(child);\n });\n }\n }\n}\n\n/**\n Currently this is all private API, but this is the minimal API necessary\n that an Emitter must implement to fully support the parser.\n\n Minimal interface:\n\n - addText(text)\n - __addSublanguage(emitter, subLanguageName)\n - startScope(scope)\n - endScope()\n - finalize()\n - toHTML()\n\n*/\n\n/**\n * @implements {Emitter}\n */\nclass TokenTreeEmitter extends TokenTree {\n /**\n * @param {*} options\n */\n constructor(options) {\n super();\n this.options = options;\n }\n\n /**\n * @param {string} text\n */\n addText(text) {\n if (text === \"\") { return; }\n\n this.add(text);\n }\n\n /** @param {string} scope */\n startScope(scope) {\n this.openNode(scope);\n }\n\n endScope() {\n this.closeNode();\n }\n\n /**\n * @param {Emitter & {root: DataNode}} emitter\n * @param {string} name\n */\n __addSublanguage(emitter, name) {\n /** @type DataNode */\n const node = emitter.root;\n if (name) node.scope = `language:${name}`;\n\n this.add(node);\n }\n\n toHTML() {\n const renderer = new HTMLRenderer(this, this.options);\n return renderer.value();\n }\n\n finalize() {\n this.closeAllNodes();\n return true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction anyNumberOfTimes(re) {\n return concat('(?:', re, ')*');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction optional(re) {\n return concat('(?:', re, ')?');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * @param { Array<string | RegExp | Object> } args\n * @returns {object}\n */\nfunction stripOptionsFromArgs(args) {\n const opts = args[args.length - 1];\n\n if (typeof opts === 'object' && opts.constructor === Object) {\n args.splice(args.length - 1, 1);\n return opts;\n } else {\n return {};\n }\n}\n\n/** @typedef { {capture?: boolean} } RegexEitherOptions */\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */\nfunction either(...args) {\n /** @type { object & {capture?: boolean} } */\n const opts = stripOptionsFromArgs(args);\n const joined = '('\n + (opts.capture ? \"\" : \"?:\")\n + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/**\n * @param {RegExp | string} re\n * @returns {number}\n */\nfunction countMatchGroups(re) {\n return (new RegExp(re.toString() + '|')).exec('').length - 1;\n}\n\n/**\n * Does lexeme start with a regular expression match at the beginning\n * @param {RegExp} re\n * @param {string} lexeme\n */\nfunction startsWith(re, lexeme) {\n const match = re && re.exec(lexeme);\n return match && match.index === 0;\n}\n\n// BACKREF_RE matches an open parenthesis or backreference. To avoid\n// an incorrect parse, it additionally matches the following:\n// - [...] elements, where the meaning of parentheses and escapes change\n// - other escape sequences, so we do not misparse escape sequences as\n// interesting elements\n// - non-matching or lookahead parentheses, which do not capture. These\n// follow the '(' with a '?'.\nconst BACKREF_RE = /\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;\n\n// **INTERNAL** Not intended for outside usage\n// join logically computes regexps.join(separator), but fixes the\n// backreferences so they continue to match.\n// it also places each individual regular expression into it's own\n// match group, keeping track of the sequencing of those match groups\n// is currently an exercise for the caller. :-)\n/**\n * @param {(string | RegExp)[]} regexps\n * @param {{joinWith: string}} opts\n * @returns {string}\n */\nfunction _rewriteBackreferences(regexps, { joinWith }) {\n let numCaptures = 0;\n\n return regexps.map((regex) => {\n numCaptures += 1;\n const offset = numCaptures;\n let re = source(regex);\n let out = '';\n\n while (re.length > 0) {\n const match = BACKREF_RE.exec(re);\n if (!match) {\n out += re;\n break;\n }\n out += re.substring(0, match.index);\n re = re.substring(match.index + match[0].length);\n if (match[0][0] === '\\\\' && match[1]) {\n // Adjust the backreference.\n out += '\\\\' + String(Number(match[1]) + offset);\n } else {\n out += match[0];\n if (match[0] === '(') {\n numCaptures++;\n }\n }\n }\n return out;\n }).map(re => `(${re})`).join(joinWith);\n}\n\n/** @typedef {import('highlight.js').Mode} Mode */\n/** @typedef {import('highlight.js').ModeCallback} ModeCallback */\n\n// Common regexps\nconst MATCH_NOTHING_RE = /\\b\\B/;\nconst IDENT_RE = '[a-zA-Z]\\\\w*';\nconst UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\nconst NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\nconst C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\nconst BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\nconst RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n/**\n* @param { Partial<Mode> & {binary?: string | RegExp} } opts\n*/\nconst SHEBANG = (opts = {}) => {\n const beginShebang = /^#![ ]*\\//;\n if (opts.binary) {\n opts.begin = concat(\n beginShebang,\n /.*\\b/,\n opts.binary,\n /\\b.*/);\n }\n return inherit$1({\n scope: 'meta',\n begin: beginShebang,\n end: /$/,\n relevance: 0,\n /** @type {ModeCallback} */\n \"on:begin\": (m, resp) => {\n if (m.index !== 0) resp.ignoreMatch();\n }\n }, opts);\n};\n\n// Common modes\nconst BACKSLASH_ESCAPE = {\n begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n};\nconst APOS_STRING_MODE = {\n scope: 'string',\n begin: '\\'',\n end: '\\'',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst QUOTE_STRING_MODE = {\n scope: 'string',\n begin: '\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst PHRASAL_WORDS_MODE = {\n begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n};\n/**\n * Creates a comment mode\n *\n * @param {string | RegExp} begin\n * @param {string | RegExp} end\n * @param {Mode | {}} [modeOptions]\n * @returns {Partial<Mode>}\n */\nconst COMMENT = function(begin, end, modeOptions = {}) {\n const mode = inherit$1(\n {\n scope: 'comment',\n begin,\n end,\n contains: []\n },\n modeOptions\n );\n mode.contains.push({\n scope: 'doctag',\n // hack to avoid the space from being included. the space is necessary to\n // match here to prevent the plain text rule below from gobbling up doctags\n begin: '[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',\n end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,\n excludeBegin: true,\n relevance: 0\n });\n const ENGLISH_WORD = either(\n // list of common 1 and 2 letter words in English\n \"I\",\n \"a\",\n \"is\",\n \"so\",\n \"us\",\n \"to\",\n \"at\",\n \"if\",\n \"in\",\n \"it\",\n \"on\",\n // note: this is not an exhaustive list of contractions, just popular ones\n /[A-Za-z]+['](d|ve|re|ll|t|s|n)/, // contractions - can't we'd they're let's, etc\n /[A-Za-z]+[-][a-z]+/, // `no-way`, etc.\n /[A-Za-z][a-z]{2,}/ // allow capitalized words at beginning of sentences\n );\n // looking like plain text, more likely to be a comment\n mode.contains.push(\n {\n // TODO: how to include \", (, ) without breaking grammars that use these for\n // comment delimiters?\n // begin: /[ ]+([()\"]?([A-Za-z'-]{3,}|is|a|I|so|us|[tT][oO]|at|if|in|it|on)[.]?[()\":]?([.][ ]|[ ]|\\))){3}/\n // ---\n\n // this tries to find sequences of 3 english words in a row (without any\n // \"programming\" type syntax) this gives us a strong signal that we've\n // TRULY found a comment - vs perhaps scanning with the wrong language.\n // It's possible to find something that LOOKS like the start of the\n // comment - but then if there is no readable text - good chance it is a\n // false match and not a comment.\n //\n // for a visual example please see:\n // https://github.com/highlightjs/highlight.js/issues/2827\n\n begin: concat(\n /[ ]+/, // necessary to prevent us gobbling up doctags like /* @author Bob Mcgill */\n '(',\n ENGLISH_WORD,\n /[.]?[:]?([.][ ]|[ ])/,\n '){3}') // look for 3 words in a row\n }\n );\n return mode;\n};\nconst C_LINE_COMMENT_MODE = COMMENT('//', '$');\nconst C_BLOCK_COMMENT_MODE = COMMENT('/\\\\*', '\\\\*/');\nconst HASH_COMMENT_MODE = COMMENT('#', '$');\nconst NUMBER_MODE = {\n scope: 'number',\n begin: NUMBER_RE,\n relevance: 0\n};\nconst C_NUMBER_MODE = {\n scope: 'number',\n begin: C_NUMBER_RE,\n relevance: 0\n};\nconst BINARY_NUMBER_MODE = {\n scope: 'number',\n begin: BINARY_NUMBER_RE,\n relevance: 0\n};\nconst REGEXP_MODE = {\n scope: \"regexp\",\n begin: /\\/(?=[^/\\n]*\\/)/,\n end: /\\/[gimuy]*/,\n contains: [\n BACKSLASH_ESCAPE,\n {\n begin: /\\[/,\n end: /\\]/,\n relevance: 0,\n contains: [BACKSLASH_ESCAPE]\n }\n ]\n};\nconst TITLE_MODE = {\n scope: 'title',\n begin: IDENT_RE,\n relevance: 0\n};\nconst UNDERSCORE_TITLE_MODE = {\n scope: 'title',\n begin: UNDERSCORE_IDENT_RE,\n relevance: 0\n};\nconst METHOD_GUARD = {\n // excludes method names from keyword processing\n begin: '\\\\.\\\\s*' + UNDERSCORE_IDENT_RE,\n relevance: 0\n};\n\n/**\n * Adds end same as begin mechanics to a mode\n *\n * Your mode must include at least a single () match group as that first match\n * group is what is used for comparison\n * @param {Partial<Mode>} mode\n */\nconst END_SAME_AS_BEGIN = function(mode) {\n return Object.assign(mode,\n {\n /** @type {ModeCallback} */\n 'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; },\n /** @type {ModeCallback} */\n 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); }\n });\n};\n\nvar MODES = /*#__PURE__*/Object.freeze({\n __proto__: null,\n APOS_STRING_MODE: APOS_STRING_MODE,\n BACKSLASH_ESCAPE: BACKSLASH_ESCAPE,\n BINARY_NUMBER_MODE: BINARY_NUMBER_MODE,\n BINARY_NUMBER_RE: BINARY_NUMBER_RE,\n COMMENT: COMMENT,\n C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE,\n C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE,\n C_NUMBER_MODE: C_NUMBER_MODE,\n C_NUMBER_RE: C_NUMBER_RE,\n END_SAME_AS_BEGIN: END_SAME_AS_BEGIN,\n HASH_COMMENT_MODE: HASH_COMMENT_MODE,\n IDENT_RE: IDENT_RE,\n MATCH_NOTHING_RE: MATCH_NOTHING_RE,\n METHOD_GUARD: METHOD_GUARD,\n NUMBER_MODE: NUMBER_MODE,\n NUMBER_RE: NUMBER_RE,\n PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE,\n QUOTE_STRING_MODE: QUOTE_STRING_MODE,\n REGEXP_MODE: REGEXP_MODE,\n RE_STARTERS_RE: RE_STARTERS_RE,\n SHEBANG: SHEBANG,\n TITLE_MODE: TITLE_MODE,\n UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE,\n UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE\n});\n\n/**\n@typedef {import('highlight.js').CallbackResponse} CallbackResponse\n@typedef {import('highlight.js').CompilerExt} CompilerExt\n*/\n\n// Grammar extensions / plugins\n// See: https://github.com/highlightjs/highlight.js/issues/2833\n\n// Grammar extensions allow \"syntactic sugar\" to be added to the grammar modes\n// without requiring any underlying changes to the compiler internals.\n\n// `compileMatch` being the perfect small example of now allowing a grammar\n// author to write `match` when they desire to match a single expression rather\n// than being forced to use `begin`. The extension then just moves `match` into\n// `begin` when it runs. Ie, no features have been added, but we've just made\n// the experience of writing (and reading grammars) a little bit nicer.\n\n// ------\n\n// TODO: We need negative look-behind support to do this properly\n/**\n * Skip a match if it has a preceding dot\n *\n * This is used for `beginKeywords` to prevent matching expressions such as\n * `bob.keyword.do()`. The mode compiler automatically wires this up as a\n * special _internal_ 'on:begin' callback for modes with `beginKeywords`\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\nfunction skipIfHasPrecedingDot(match, response) {\n const before = match.input[match.index - 1];\n if (before === \".\") {\n response.ignoreMatch();\n }\n}\n\n/**\n *\n * @type {CompilerExt}\n */\nfunction scopeClassName(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.className !== undefined) {\n mode.scope = mode.className;\n delete mode.className;\n }\n}\n\n/**\n * `beginKeywords` syntactic sugar\n * @type {CompilerExt}\n */\nfunction beginKeywords(mode, parent) {\n if (!parent) return;\n if (!mode.beginKeywords) return;\n\n // for languages with keywords that include non-word characters checking for\n // a word boundary is not sufficient, so instead we check for a word boundary\n // or whitespace - this does no harm in any case since our keyword engine\n // doesn't allow spaces in keywords anyways and we still check for the boundary\n // first\n mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\\\.)(?=\\\\b|\\\\s)';\n mode.__beforeBegin = skipIfHasPrecedingDot;\n mode.keywords = mode.keywords || mode.beginKeywords;\n delete mode.beginKeywords;\n\n // prevents double relevance, the keywords themselves provide\n // relevance, the mode doesn't need to double it\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 0;\n}\n\n/**\n * Allow `illegal` to contain an array of illegal values\n * @type {CompilerExt}\n */\nfunction compileIllegal(mode, _parent) {\n if (!Array.isArray(mode.illegal)) return;\n\n mode.illegal = either(...mode.illegal);\n}\n\n/**\n * `match` to match a single expression for readability\n * @type {CompilerExt}\n */\nfunction compileMatch(mode, _parent) {\n if (!mode.match) return;\n if (mode.begin || mode.end) throw new Error(\"begin & end are not supported with match\");\n\n mode.begin = mode.match;\n delete mode.match;\n}\n\n/**\n * provides the default 1 relevance to all modes\n * @type {CompilerExt}\n */\nfunction compileRelevance(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 1;\n}\n\n// allow beforeMatch to act as a \"qualifier\" for the match\n// the full match begin must be [beforeMatch][begin]\nconst beforeMatchExt = (mode, parent) => {\n if (!mode.beforeMatch) return;\n // starts conflicts with endsParent which we need to make sure the child\n // rule is not matched multiple times\n if (mode.starts) throw new Error(\"beforeMatch cannot be used with starts\");\n\n const originalMode = Object.assign({}, mode);\n Object.keys(mode).forEach((key) => { delete mode[key]; });\n\n mode.keywords = originalMode.keywords;\n mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin));\n mode.starts = {\n relevance: 0,\n contains: [\n Object.assign(originalMode, { endsParent: true })\n ]\n };\n mode.relevance = 0;\n\n delete originalMode.beforeMatch;\n};\n\n// keywords that should have no default relevance value\nconst COMMON_KEYWORDS = [\n 'of',\n 'and',\n 'for',\n 'in',\n 'not',\n 'or',\n 'if',\n 'then',\n 'parent', // common variable name\n 'list', // common variable name\n 'value' // common variable name\n];\n\nconst DEFAULT_KEYWORD_SCOPE = \"keyword\";\n\n/**\n * Given raw keywords from a language definition, compile them.\n *\n * @param {string | Record<string,string|string[]> | Array<string>} rawKeywords\n * @param {boolean} caseInsensitive\n */\nfunction compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAULT_KEYWORD_SCOPE) {\n /** @type {import(\"highlight.js/private\").KeywordDict} */\n const compiledKeywords = Object.create(null);\n\n // input can be a string of keywords, an array of keywords, or a object with\n // named keys representing scopeName (which can then point to a string or array)\n if (typeof rawKeywords === 'string') {\n compileList(scopeName, rawKeywords.split(\" \"));\n } else if (Array.isArray(rawKeywords)) {\n compileList(scopeName, rawKeywords);\n } else {\n Object.keys(rawKeywords).forEach(function(scopeName) {\n // collapse all our objects back into the parent object\n Object.assign(\n compiledKeywords,\n compileKeywords(rawKeywords[scopeName], caseInsensitive, scopeName)\n );\n });\n }\n return compiledKeywords;\n\n // ---\n\n /**\n * Compiles an individual list of keywords\n *\n * Ex: \"for if when while|5\"\n *\n * @param {string} scopeName\n * @param {Array<string>} keywordList\n */\n function compileList(scopeName, keywordList) {\n if (caseInsensitive) {\n keywordList = keywordList.map(x => x.toLowerCase());\n }\n keywordList.forEach(function(keyword) {\n const pair = keyword.split('|');\n compiledKeywords[pair[0]] = [scopeName, scoreForKeyword(pair[0], pair[1])];\n });\n }\n}\n\n/**\n * Returns the proper score for a given keyword\n *\n * Also takes into account comment keywords, which will be scored 0 UNLESS\n * another score has been manually assigned.\n * @param {string} keyword\n * @param {string} [providedScore]\n */\nfunction scoreForKeyword(keyword, providedScore) {\n // manual scores always win over common keywords\n // so you can force a score of 1 if you really insist\n if (providedScore) {\n return Number(providedScore);\n }\n\n return commonKeyword(keyword) ? 0 : 1;\n}\n\n/**\n * Determines if a given keyword is common or not\n *\n * @param {string} keyword */\nfunction commonKeyword(keyword) {\n return COMMON_KEYWORDS.includes(keyword.toLowerCase());\n}\n\n/*\n\nFor the reasoning behind this please see:\nhttps://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419\n\n*/\n\n/**\n * @type {Record<string, boolean>}\n */\nconst seenDeprecations = {};\n\n/**\n * @param {string} message\n */\nconst error = (message) => {\n console.error(message);\n};\n\n/**\n * @param {string} message\n * @param {any} args\n */\nconst warn = (message, ...args) => {\n console.log(`WARN: ${message}`, ...args);\n};\n\n/**\n * @param {string} version\n * @param {string} message\n */\nconst deprecated = (version, message) => {\n if (seenDeprecations[`${version}/${message}`]) return;\n\n console.log(`Deprecated as of ${version}. ${message}`);\n seenDeprecations[`${version}/${message}`] = true;\n};\n\n/* eslint-disable no-throw-literal */\n\n/**\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n*/\n\nconst MultiClassError = new Error();\n\n/**\n * Renumbers labeled scope names to account for additional inner match\n * groups that otherwise would break everything.\n *\n * Lets say we 3 match scopes:\n *\n * { 1 => ..., 2 => ..., 3 => ... }\n *\n * So what we need is a clean match like this:\n *\n * (a)(b)(c) => [ \"a\", \"b\", \"c\" ]\n *\n * But this falls apart with inner match groups:\n *\n * (a)(((b)))(c) => [\"a\", \"b\", \"b\", \"b\", \"c\" ]\n *\n * Our scopes are now \"out of alignment\" and we're repeating `b` 3 times.\n * What needs to happen is the numbers are remapped:\n *\n * { 1 => ..., 2 => ..., 5 => ... }\n *\n * We also need to know that the ONLY groups that should be output\n * are 1, 2, and 5. This function handles this behavior.\n *\n * @param {CompiledMode} mode\n * @param {Array<RegExp | string>} regexes\n * @param {{key: \"beginScope\"|\"endScope\"}} opts\n */\nfunction remapScopeNames(mode, regexes, { key }) {\n let offset = 0;\n const scopeNames = mode[key];\n /** @type Record<number,boolean> */\n const emit = {};\n /** @type Record<number,string> */\n const positions = {};\n\n for (let i = 1; i <= regexes.length; i++) {\n positions[i + offset] = scopeNames[i];\n emit[i + offset] = true;\n offset += countMatchGroups(regexes[i - 1]);\n }\n // we use _emit to keep track of which match groups are \"top-level\" to avoid double\n // output from inside match groups\n mode[key] = positions;\n mode[key]._emit = emit;\n mode[key]._multi = true;\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction beginMultiClass(mode) {\n if (!Array.isArray(mode.begin)) return;\n\n if (mode.skip || mode.excludeBegin || mode.returnBegin) {\n error(\"skip, excludeBegin, returnBegin not compatible with beginScope: {}\");\n throw MultiClassError;\n }\n\n if (typeof mode.beginScope !== \"object\" || mode.beginScope === null) {\n error(\"beginScope must be object\");\n throw MultiClassError;\n }\n\n remapScopeNames(mode, mode.begin, { key: \"beginScope\" });\n mode.begin = _rewriteBackreferences(mode.begin, { joinWith: \"\" });\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction endMultiClass(mode) {\n if (!Array.isArray(mode.end)) return;\n\n if (mode.skip || mode.excludeEnd || mode.returnEnd) {\n error(\"skip, excludeEnd, returnEnd not compatible with endScope: {}\");\n throw MultiClassError;\n }\n\n if (typeof mode.endScope !== \"object\" || mode.endScope === null) {\n error(\"endScope must be object\");\n throw MultiClassError;\n }\n\n remapScopeNames(mode, mode.end, { key: \"endScope\" });\n mode.end = _rewriteBackreferences(mode.end, { joinWith: \"\" });\n}\n\n/**\n * this exists only to allow `scope: {}` to be used beside `match:`\n * Otherwise `beginScope` would necessary and that would look weird\n\n {\n match: [ /def/, /\\w+/ ]\n scope: { 1: \"keyword\" , 2: \"title\" }\n }\n\n * @param {CompiledMode} mode\n */\nfunction scopeSugar(mode) {\n if (mode.scope && typeof mode.scope === \"object\" && mode.scope !== null) {\n mode.beginScope = mode.scope;\n delete mode.scope;\n }\n}\n\n/**\n * @param {CompiledMode} mode\n */\nfunction MultiClass(mode) {\n scopeSugar(mode);\n\n if (typeof mode.beginScope === \"string\") {\n mode.beginScope = { _wrap: mode.beginScope };\n }\n if (typeof mode.endScope === \"string\") {\n mode.endScope = { _wrap: mode.endScope };\n }\n\n beginMultiClass(mode);\n endMultiClass(mode);\n}\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').CompiledLanguage} CompiledLanguage\n*/\n\n// compilation\n\n/**\n * Compiles a language definition result\n *\n * Given the raw result of a language definition (Language), compiles this so\n * that it is ready for highlighting code.\n * @param {Language} language\n * @returns {CompiledLanguage}\n */\nfunction compileLanguage(language) {\n /**\n * Builds a regex with the case sensitivity of the current language\n *\n * @param {RegExp | string} value\n * @param {boolean} [global]\n */\n function langRe(value, global) {\n return new RegExp(\n source(value),\n 'm'\n + (language.case_insensitive ? 'i' : '')\n + (language.unicodeRegex ? 'u' : '')\n + (global ? 'g' : '')\n );\n }\n\n /**\n Stores multiple regular expressions and allows you to quickly search for\n them all in a string simultaneously - returning the first match. It does\n this by creating a huge (a|b|c) regex - each individual item wrapped with ()\n and joined by `|` - using match groups to track position. When a match is\n found checking which position in the array has content allows us to figure\n out which of the original regexes / match groups triggered the match.\n\n The match object itself (the result of `Regex.exec`) is returned but also\n enhanced by merging in any meta-data that was registered with the regex.\n This is how we keep track of which mode matched, and what type of rule\n (`illegal`, `begin`, end, etc).\n */\n class MultiRegex {\n constructor() {\n this.matchIndexes = {};\n // @ts-ignore\n this.regexes = [];\n this.matchAt = 1;\n this.position = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n opts.position = this.position++;\n // @ts-ignore\n this.matchIndexes[this.matchAt] = opts;\n this.regexes.push([opts, re]);\n this.matchAt += countMatchGroups(re) + 1;\n }\n\n compile() {\n if (this.regexes.length === 0) {\n // avoids the need to check length every time exec is called\n // @ts-ignore\n this.exec = () => null;\n }\n const terminators = this.regexes.map(el => el[1]);\n this.matcherRe = langRe(_rewriteBackreferences(terminators, { joinWith: '|' }), true);\n this.lastIndex = 0;\n }\n\n /** @param {string} s */\n exec(s) {\n this.matcherRe.lastIndex = this.lastIndex;\n const match = this.matcherRe.exec(s);\n if (!match) { return null; }\n\n // eslint-disable-next-line no-undefined\n const i = match.findIndex((el, i) => i > 0 && el !== undefined);\n // @ts-ignore\n const matchData = this.matchIndexes[i];\n // trim off any earlier non-relevant match groups (ie, the other regex\n // match groups that make up the multi-matcher)\n match.splice(0, i);\n\n return Object.assign(match, matchData);\n }\n }\n\n /*\n Created to solve the key deficiently with MultiRegex - there is no way to\n test for multiple matches at a single location. Why would we need to do\n that? In the future a more dynamic engine will allow certain matches to be\n ignored. An example: if we matched say the 3rd regex in a large group but\n decided to ignore it - we'd need to started testing again at the 4th\n regex... but MultiRegex itself gives us no real way to do that.\n\n So what this class creates MultiRegexs on the fly for whatever search\n position they are needed.\n\n NOTE: These additional MultiRegex objects are created dynamically. For most\n grammars most of the time we will never actually need anything more than the\n first MultiRegex - so this shouldn't have too much overhead.\n\n Say this is our search group, and we match regex3, but wish to ignore it.\n\n regex1 | regex2 | regex3 | regex4 | regex5 ' ie, startAt = 0\n\n What we need is a new MultiRegex that only includes the remaining\n possibilities:\n\n regex4 | regex5 ' ie, startAt = 3\n\n This class wraps all that complexity up in a simple API... `startAt` decides\n where in the array of expressions to start doing the matching. It\n auto-increments, so if a match is found at position 2, then startAt will be\n set to 3. If the end is reached startAt will return to 0.\n\n MOST of the time the parser will be setting startAt manually to 0.\n */\n class ResumableMultiRegex {\n constructor() {\n // @ts-ignore\n this.rules = [];\n // @ts-ignore\n this.multiRegexes = [];\n this.count = 0;\n\n this.lastIndex = 0;\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n getMatcher(index) {\n if (this.multiRegexes[index]) return this.multiRegexes[index];\n\n const matcher = new MultiRegex();\n this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts));\n matcher.compile();\n this.multiRegexes[index] = matcher;\n return matcher;\n }\n\n resumingScanAtSamePosition() {\n return this.regexIndex !== 0;\n }\n\n considerAll() {\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n this.rules.push([re, opts]);\n if (opts.type === \"begin\") this.count++;\n }\n\n /** @param {string} s */\n exec(s) {\n const m = this.getMatcher(this.regexIndex);\n m.lastIndex = this.lastIndex;\n let result = m.exec(s);\n\n // The following is because we have no easy way to say \"resume scanning at the\n // existing position but also skip the current rule ONLY\". What happens is\n // all prior rules are also skipped which can result in matching the wrong\n // thing. Example of matching \"booger\":\n\n // our matcher is [string, \"booger\", number]\n //\n // ....booger....\n\n // if \"booger\" is ignored then we'd really need a regex to scan from the\n // SAME position for only: [string, number] but ignoring \"booger\" (if it\n // was the first match), a simple resume would scan ahead who knows how\n // far looking only for \"number\", ignoring potential string matches (or\n // future \"booger\" matches that might be valid.)\n\n // So what we do: We execute two matchers, one resuming at the same\n // position, but the second full matcher starting at the position after:\n\n // /--- resume first regex match here (for [number])\n // |/---- full match here for [string, \"booger\", number]\n // vv\n // ....booger....\n\n // Which ever results in a match first is then used. So this 3-4 step\n // process essentially allows us to say \"match at this position, excluding\n // a prior rule that was ignored\".\n //\n // 1. Match \"booger\" first, ignore. Also proves that [string] does non match.\n // 2. Resume matching for [number]\n // 3. Match at index + 1 for [string, \"booger\", number]\n // 4. If #2 and #3 result in matches, which came first?\n if (this.resumingScanAtSamePosition()) {\n if (result && result.index === this.lastIndex) ; else { // use the second matcher result\n const m2 = this.getMatcher(0);\n m2.lastIndex = this.lastIndex + 1;\n result = m2.exec(s);\n }\n }\n\n if (result) {\n this.regexIndex += result.position + 1;\n if (this.regexIndex === this.count) {\n // wrap-around to considering all matches again\n this.considerAll();\n }\n }\n\n return result;\n }\n }\n\n /**\n * Given a mode, builds a huge ResumableMultiRegex that can be used to walk\n * the content and find matches.\n *\n * @param {CompiledMode} mode\n * @returns {ResumableMultiRegex}\n */\n function buildModeRegex(mode) {\n const mm = new ResumableMultiRegex();\n\n mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: \"begin\" }));\n\n if (mode.terminatorEnd) {\n mm.addRule(mode.terminatorEnd, { type: \"end\" });\n }\n if (mode.illegal) {\n mm.addRule(mode.illegal, { type: \"illegal\" });\n }\n\n return mm;\n }\n\n /** skip vs abort vs ignore\n *\n * @skip - The mode is still entered and exited normally (and contains rules apply),\n * but all content is held and added to the parent buffer rather than being\n * output when the mode ends. Mostly used with `sublanguage` to build up\n * a single large buffer than can be parsed by sublanguage.\n *\n * - The mode begin ands ends normally.\n * - Content matched is added to the parent mode buffer.\n * - The parser cursor is moved forward normally.\n *\n * @abort - A hack placeholder until we have ignore. Aborts the mode (as if it\n * never matched) but DOES NOT continue to match subsequent `contains`\n * modes. Abort is bad/suboptimal because it can result in modes\n * farther down not getting applied because an earlier rule eats the\n * content but then aborts.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is added to the mode buffer.\n * - The parser cursor is moved forward accordingly.\n *\n * @ignore - Ignores the mode (as if it never matched) and continues to match any\n * subsequent `contains` modes. Ignore isn't technically possible with\n * the current parser implementation.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is ignored.\n * - The parser cursor is not moved forward.\n */\n\n /**\n * Compiles an individual mode\n *\n * This can raise an error if the mode contains certain detectable known logic\n * issues.\n * @param {Mode} mode\n * @param {CompiledMode | null} [parent]\n * @returns {CompiledMode | never}\n */\n function compileMode(mode, parent) {\n const cmode = /** @type CompiledMode */ (mode);\n if (mode.isCompiled) return cmode;\n\n [\n scopeClassName,\n // do this early so compiler extensions generally don't have to worry about\n // the distinction between match/begin\n compileMatch,\n MultiClass,\n beforeMatchExt\n ].forEach(ext => ext(mode, parent));\n\n language.compilerExtensions.forEach(ext => ext(mode, parent));\n\n // __beforeBegin is considered private API, internal use only\n mode.__beforeBegin = null;\n\n [\n beginKeywords,\n // do this later so compiler extensions that come earlier have access to the\n // raw array if they wanted to perhaps manipulate it, etc.\n compileIllegal,\n // default to 1 relevance if not specified\n compileRelevance\n ].forEach(ext => ext(mode, parent));\n\n mode.isCompiled = true;\n\n let keywordPattern = null;\n if (typeof mode.keywords === \"object\" && mode.keywords.$pattern) {\n // we need a copy because keywords might be compiled multiple times\n // so we can't go deleting $pattern from the original on the first\n // pass\n mode.keywords = Object.assign({}, mode.keywords);\n keywordPattern = mode.keywords.$pattern;\n delete mode.keywords.$pattern;\n }\n keywordPattern = keywordPattern || /\\w+/;\n\n if (mode.keywords) {\n mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);\n }\n\n cmode.keywordPatternRe = langRe(keywordPattern, true);\n\n if (parent) {\n if (!mode.begin) mode.begin = /\\B|\\b/;\n cmode.beginRe = langRe(cmode.begin);\n if (!mode.end && !mode.endsWithParent) mode.end = /\\B|\\b/;\n if (mode.end) cmode.endRe = langRe(cmode.end);\n cmode.terminatorEnd = source(cmode.end) || '';\n if (mode.endsWithParent && parent.terminatorEnd) {\n cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd;\n }\n }\n if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ (mode.illegal));\n if (!mode.contains) mode.contains = [];\n\n mode.contains = [].concat(...mode.contains.map(function(c) {\n return expandOrCloneMode(c === 'self' ? mode : c);\n }));\n mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); });\n\n if (mode.starts) {\n compileMode(mode.starts, parent);\n }\n\n cmode.matcher = buildModeRegex(cmode);\n return cmode;\n }\n\n if (!language.compilerExtensions) language.compilerExtensions = [];\n\n // self is not valid at the top-level\n if (language.contains && language.contains.includes('self')) {\n throw new Error(\"ERR: contains `self` is not supported at the top-level of a language. See documentation.\");\n }\n\n // we need a null object, which inherit will guarantee\n language.classNameAliases = inherit$1(language.classNameAliases || {});\n\n return compileMode(/** @type Mode */ (language));\n}\n\n/**\n * Determines if a mode has a dependency on it's parent or not\n *\n * If a mode does have a parent dependency then often we need to clone it if\n * it's used in multiple places so that each copy points to the correct parent,\n * where-as modes without a parent can often safely be re-used at the bottom of\n * a mode chain.\n *\n * @param {Mode | null} mode\n * @returns {boolean} - is there a dependency on the parent?\n * */\nfunction dependencyOnParent(mode) {\n if (!mode) return false;\n\n return mode.endsWithParent || dependencyOnParent(mode.starts);\n}\n\n/**\n * Expands a mode or clones it if necessary\n *\n * This is necessary for modes with parental dependenceis (see notes on\n * `dependencyOnParent`) and for nodes that have `variants` - which must then be\n * exploded into their own individual modes at compile time.\n *\n * @param {Mode} mode\n * @returns {Mode | Mode[]}\n * */\nfunction expandOrCloneMode(mode) {\n if (mode.variants && !mode.cachedVariants) {\n mode.cachedVariants = mode.variants.map(function(variant) {\n return inherit$1(mode, { variants: null }, variant);\n });\n }\n\n // EXPAND\n // if we have variants then essentially \"replace\" the mode with the variants\n // this happens in compileMode, where this function is called from\n if (mode.cachedVariants) {\n return mode.cachedVariants;\n }\n\n // CLONE\n // if we have dependencies on parents then we need a unique\n // instance of ourselves, so we can be reused with many\n // different parents without issue\n if (dependencyOnParent(mode)) {\n return inherit$1(mode, { starts: mode.starts ? inherit$1(mode.starts) : null });\n }\n\n if (Object.isFrozen(mode)) {\n return inherit$1(mode);\n }\n\n // no special dependency issues, just return ourselves\n return mode;\n}\n\nvar version = \"11.10.0\";\n\nclass HTMLInjectionError extends Error {\n constructor(reason, html) {\n super(reason);\n this.name = \"HTMLInjectionError\";\n this.html = html;\n }\n}\n\n/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n\n\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').CompiledScope} CompiledScope\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSApi} HLJSApi\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').PluginEvent} PluginEvent\n@typedef {import('highlight.js').HLJSOptions} HLJSOptions\n@typedef {import('highlight.js').LanguageFn} LanguageFn\n@typedef {import('highlight.js').HighlightedHTMLElement} HighlightedHTMLElement\n@typedef {import('highlight.js').BeforeHighlightContext} BeforeHighlightContext\n@typedef {import('highlight.js/private').MatchType} MatchType\n@typedef {import('highlight.js/private').KeywordData} KeywordData\n@typedef {import('highlight.js/private').EnhancedMatch} EnhancedMatch\n@typedef {import('highlight.js/private').AnnotatedError} AnnotatedError\n@typedef {import('highlight.js').AutoHighlightResult} AutoHighlightResult\n@typedef {import('highlight.js').HighlightOptions} HighlightOptions\n@typedef {import('highlight.js').HighlightResult} HighlightResult\n*/\n\n\nconst escape = escapeHTML;\nconst inherit = inherit$1;\nconst NO_MATCH = Symbol(\"nomatch\");\nconst MAX_KEYWORD_HITS = 7;\n\n/**\n * @param {any} hljs - object that is extended (legacy)\n * @returns {HLJSApi}\n */\nconst HLJS = function(hljs) {\n // Global internal variables used within the highlight.js library.\n /** @type {Record<string, Language>} */\n const languages = Object.create(null);\n /** @type {Record<string, string>} */\n const aliases = Object.create(null);\n /** @type {HLJSPlugin[]} */\n const plugins = [];\n\n // safe/production mode - swallows more errors, tries to keep running\n // even if a single syntax or parse hits a fatal error\n let SAFE_MODE = true;\n const LANGUAGE_NOT_FOUND = \"Could not find the language '{}', did you forget to load/include a language module?\";\n /** @type {Language} */\n const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] };\n\n // Global options used when within external APIs. This is modified when\n // calling the `hljs.configure` function.\n /** @type HLJSOptions */\n let options = {\n ignoreUnescapedHTML: false,\n throwUnescapedHTML: false,\n noHighlightRe: /^(no-?highlight)$/i,\n languageDetectRe: /\\blang(?:uage)?-([\\w-]+)\\b/i,\n classPrefix: 'hljs-',\n cssSelector: 'pre code',\n languages: null,\n // beta configuration options, subject to change, welcome to discuss\n // https://github.com/highlightjs/highlight.js/issues/1086\n __emitter: TokenTreeEmitter\n };\n\n /* Utility functions */\n\n /**\n * Tests a language name to see if highlighting should be skipped\n * @param {string} languageName\n */\n function shouldNotHighlight(languageName) {\n return options.noHighlightRe.test(languageName);\n }\n\n /**\n * @param {HighlightedHTMLElement} block - the HTML element to determine language for\n */\n function blockLanguage(block) {\n let classes = block.className + ' ';\n\n classes += block.parentNode ? block.parentNode.className : '';\n\n // language-* takes precedence over non-prefixed class names.\n const match = options.languageDetectRe.exec(classes);\n if (match) {\n const language = getLanguage(match[1]);\n if (!language) {\n warn(LANGUAGE_NOT_FOUND.replace(\"{}\", match[1]));\n warn(\"Falling back to no-highlight mode for this block.\", block);\n }\n return language ? match[1] : 'no-highlight';\n }\n\n return classes\n .split(/\\s+/)\n .find((_class) => shouldNotHighlight(_class) || getLanguage(_class));\n }\n\n /**\n * Core highlighting function.\n *\n * OLD API\n * highlight(lang, code, ignoreIllegals, continuation)\n *\n * NEW API\n * highlight(code, {lang, ignoreIllegals})\n *\n * @param {string} codeOrLanguageName - the language to use for highlighting\n * @param {string | HighlightOptions} optionsOrCode - the code to highlight\n * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n *\n * @returns {HighlightResult} Result - an object that represents the result\n * @property {string} language - the language name\n * @property {number} relevance - the relevance score\n * @property {string} value - the highlighted HTML code\n * @property {string} code - the original raw code\n * @property {CompiledMode} top - top of the current mode stack\n * @property {boolean} illegal - indicates whether any illegal matches were found\n */\n function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) {\n let code = \"\";\n let languageName = \"\";\n if (typeof optionsOrCode === \"object\") {\n code = codeOrLanguageName;\n ignoreIllegals = optionsOrCode.ignoreIllegals;\n languageName = optionsOrCode.language;\n } else {\n // old API\n deprecated(\"10.7.0\", \"highlight(lang, code, ...args) has been deprecated.\");\n deprecated(\"10.7.0\", \"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\");\n languageName = codeOrLanguageName;\n code = optionsOrCode;\n }\n\n // https://github.com/highlightjs/highlight.js/issues/3149\n // eslint-disable-next-line no-undefined\n if (ignoreIllegals === undefined) { ignoreIllegals = true; }\n\n /** @type {BeforeHighlightContext} */\n const context = {\n code,\n language: languageName\n };\n // the plugin can change the desired language or the code to be highlighted\n // just be changing the object it was passed\n fire(\"before:highlight\", context);\n\n // a before plugin can usurp the result completely by providing it's own\n // in which case we don't even need to call highlight\n const result = context.result\n ? context.result\n : _highlight(context.language, context.code, ignoreIllegals);\n\n result.code = context.code;\n // the plugin can change anything in result to suite it\n fire(\"after:highlight\", result);\n\n return result;\n }\n\n /**\n * private highlight that's used internally and does not fire callbacks\n *\n * @param {string} languageName - the language to use for highlighting\n * @param {string} codeToHighlight - the code to highlight\n * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n * @param {CompiledMode?} [continuation] - current continuation mode, if any\n * @returns {HighlightResult} - result of the highlight operation\n */\n function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {\n const keywordHits = Object.create(null);\n\n /**\n * Return keyword data if a match is a keyword\n * @param {CompiledMode} mode - current mode\n * @param {string} matchText - the textual match\n * @returns {KeywordData | false}\n */\n function keywordData(mode, matchText) {\n return mode.keywords[matchText];\n }\n\n function processKeywords() {\n if (!top.keywords) {\n emitter.addText(modeBuffer);\n return;\n }\n\n let lastIndex = 0;\n top.keywordPatternRe.lastIndex = 0;\n let match = top.keywordPatternRe.exec(modeBuffer);\n let buf = \"\";\n\n while (match) {\n buf += modeBuffer.substring(lastIndex, match.index);\n const word = language.case_insensitive ? match[0].toLowerCase() : match[0];\n const data = keywordData(top, word);\n if (data) {\n const [kind, keywordRelevance] = data;\n emitter.addText(buf);\n buf = \"\";\n\n keywordHits[word] = (keywordHits[word] || 0) + 1;\n if (keywordHits[word] <= MAX_KEYWORD_HITS) relevance += keywordRelevance;\n if (kind.startsWith(\"_\")) {\n // _ implied for relevance only, do not highlight\n // by applying a class name\n buf += match[0];\n } else {\n const cssClass = language.classNameAliases[kind] || kind;\n emitKeyword(match[0], cssClass);\n }\n } else {\n buf += match[0];\n }\n lastIndex = top.keywordPatternRe.lastIndex;\n match = top.keywordPatternRe.exec(modeBuffer);\n }\n buf += modeBuffer.substring(lastIndex);\n emitter.addText(buf);\n }\n\n function processSubLanguage() {\n if (modeBuffer === \"\") return;\n /** @type HighlightResult */\n let result = null;\n\n if (typeof top.subLanguage === 'string') {\n if (!languages[top.subLanguage]) {\n emitter.addText(modeBuffer);\n return;\n }\n result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);\n continuations[top.subLanguage] = /** @type {CompiledMode} */ (result._top);\n } else {\n result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);\n }\n\n // Counting embedded language score towards the host language may be disabled\n // with zeroing the containing mode relevance. Use case in point is Markdown that\n // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n // score.\n if (top.relevance > 0) {\n relevance += result.relevance;\n }\n emitter.__addSublanguage(result._emitter, result.language);\n }\n\n function processBuffer() {\n if (top.subLanguage != null) {\n processSubLanguage();\n } else {\n processKeywords();\n }\n modeBuffer = '';\n }\n\n /**\n * @param {string} text\n * @param {string} scope\n */\n function emitKeyword(keyword, scope) {\n if (keyword === \"\") return;\n\n emitter.startScope(scope);\n emitter.addText(keyword);\n emitter.endScope();\n }\n\n /**\n * @param {CompiledScope} scope\n * @param {RegExpMatchArray} match\n */\n function emitMultiClass(scope, match) {\n let i = 1;\n const max = match.length - 1;\n while (i <= max) {\n if (!scope._emit[i]) { i++; continue; }\n const klass = language.classNameAliases[scope[i]] || scope[i];\n const text = match[i];\n if (klass) {\n emitKeyword(text, klass);\n } else {\n modeBuffer = text;\n processKeywords();\n modeBuffer = \"\";\n }\n i++;\n }\n }\n\n /**\n * @param {CompiledMode} mode - new mode to start\n * @param {RegExpMatchArray} match\n */\n function startNewMode(mode, match) {\n if (mode.scope && typeof mode.scope === \"string\") {\n emitter.openNode(language.classNameAliases[mode.scope] || mode.scope);\n }\n if (mode.beginScope) {\n // beginScope just wraps the begin match itself in a scope\n if (mode.beginScope._wrap) {\n emitKeyword(modeBuffer, language.classNameAliases[mode.beginScope._wrap] || mode.beginScope._wrap);\n modeBuffer = \"\";\n } else if (mode.beginScope._multi) {\n // at this point modeBuffer should just be the match\n emitMultiClass(mode.beginScope, match);\n modeBuffer = \"\";\n }\n }\n\n top = Object.create(mode, { parent: { value: top } });\n return top;\n }\n\n /**\n * @param {CompiledMode } mode - the mode to potentially end\n * @param {RegExpMatchArray} match - the latest match\n * @param {string} matchPlusRemainder - match plus remainder of content\n * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode\n */\n function endOfMode(mode, match, matchPlusRemainder) {\n let matched = startsWith(mode.endRe, matchPlusRemainder);\n\n if (matched) {\n if (mode[\"on:end\"]) {\n const resp = new Response(mode);\n mode[\"on:end\"](match, resp);\n if (resp.isMatchIgnored) matched = false;\n }\n\n if (matched) {\n while (mode.endsParent && mode.parent) {\n mode = mode.parent;\n }\n return mode;\n }\n }\n // even if on:end fires an `ignore` it's still possible\n // that we might trigger the end node because of a parent mode\n if (mode.endsWithParent) {\n return endOfMode(mode.parent, match, matchPlusRemainder);\n }\n }\n\n /**\n * Handle matching but then ignoring a sequence of text\n *\n * @param {string} lexeme - string containing full match text\n */\n function doIgnore(lexeme) {\n if (top.matcher.regexIndex === 0) {\n // no more regexes to potentially match here, so we move the cursor forward one\n // space\n modeBuffer += lexeme[0];\n return 1;\n } else {\n // no need to move the cursor, we still have additional regexes to try and\n // match at this very spot\n resumeScanAtSamePosition = true;\n return 0;\n }\n }\n\n /**\n * Handle the start of a new potential mode match\n *\n * @param {EnhancedMatch} match - the current match\n * @returns {number} how far to advance the parse cursor\n */\n function doBeginMatch(match) {\n const lexeme = match[0];\n const newMode = match.rule;\n\n const resp = new Response(newMode);\n // first internal before callbacks, then the public ones\n const beforeCallbacks = [newMode.__beforeBegin, newMode[\"on:begin\"]];\n for (const cb of beforeCallbacks) {\n if (!cb) continue;\n cb(match, resp);\n if (resp.isMatchIgnored) return doIgnore(lexeme);\n }\n\n if (newMode.skip) {\n modeBuffer += lexeme;\n } else {\n if (newMode.excludeBegin) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (!newMode.returnBegin && !newMode.excludeBegin) {\n modeBuffer = lexeme;\n }\n }\n startNewMode(newMode, match);\n return newMode.returnBegin ? 0 : lexeme.length;\n }\n\n /**\n * Handle the potential end of mode\n *\n * @param {RegExpMatchArray} match - the current match\n */\n function doEndMatch(match) {\n const lexeme = match[0];\n const matchPlusRemainder = codeToHighlight.substring(match.index);\n\n const endMode = endOfMode(top, match, matchPlusRemainder);\n if (!endMode) { return NO_MATCH; }\n\n const origin = top;\n if (top.endScope && top.endScope._wrap) {\n processBuffer();\n emitKeyword(lexeme, top.endScope._wrap);\n } else if (top.endScope && top.endScope._multi) {\n processBuffer();\n emitMultiClass(top.endScope, match);\n } else if (origin.skip) {\n modeBuffer += lexeme;\n } else {\n if (!(origin.returnEnd || origin.excludeEnd)) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (origin.excludeEnd) {\n modeBuffer = lexeme;\n }\n }\n do {\n if (top.scope) {\n emitter.closeNode();\n }\n if (!top.skip && !top.subLanguage) {\n relevance += top.relevance;\n }\n top = top.parent;\n } while (top !== endMode.parent);\n if (endMode.starts) {\n startNewMode(endMode.starts, match);\n }\n return origin.returnEnd ? 0 : lexeme.length;\n }\n\n function processContinuations() {\n const list = [];\n for (let current = top; current !== language; current = current.parent) {\n if (current.scope) {\n list.unshift(current.scope);\n }\n }\n list.forEach(item => emitter.openNode(item));\n }\n\n /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */\n let lastMatch = {};\n\n /**\n * Process an individual match\n *\n * @param {string} textBeforeMatch - text preceding the match (since the last match)\n * @param {EnhancedMatch} [match] - the match itself\n */\n function processLexeme(textBeforeMatch, match) {\n const lexeme = match && match[0];\n\n // add non-matched text to the current mode buffer\n modeBuffer += textBeforeMatch;\n\n if (lexeme == null) {\n processBuffer();\n return 0;\n }\n\n // we've found a 0 width match and we're stuck, so we need to advance\n // this happens when we have badly behaved rules that have optional matchers to the degree that\n // sometimes they can end up matching nothing at all\n // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n if (lastMatch.type === \"begin\" && match.type === \"end\" && lastMatch.index === match.index && lexeme === \"\") {\n // spit the \"skipped\" character that our regex choked on back into the output sequence\n modeBuffer += codeToHighlight.slice(match.index, match.index + 1);\n if (!SAFE_MODE) {\n /** @type {AnnotatedError} */\n const err = new Error(`0 width match regex (${languageName})`);\n err.languageName = languageName;\n err.badRule = lastMatch.rule;\n throw err;\n }\n return 1;\n }\n lastMatch = match;\n\n if (match.type === \"begin\") {\n return doBeginMatch(match);\n } else if (match.type === \"illegal\" && !ignoreIllegals) {\n // illegal match, we do not continue processing\n /** @type {AnnotatedError} */\n const err = new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.scope || '<unnamed>') + '\"');\n err.mode = top;\n throw err;\n } else if (match.type === \"end\") {\n const processed = doEndMatch(match);\n if (processed !== NO_MATCH) {\n return processed;\n }\n }\n\n // edge case for when illegal matches $ (end of line) which is technically\n // a 0 width match but not a begin/end match so it's not caught by the\n // first handler (when ignoreIllegals is true)\n if (match.type === \"illegal\" && lexeme === \"\") {\n // advance so we aren't stuck in an infinite loop\n return 1;\n }\n\n // infinite loops are BAD, this is a last ditch catch all. if we have a\n // decent number of iterations yet our index (cursor position in our\n // parsing) still 3x behind our index then something is very wrong\n // so we bail\n if (iterations > 100000 && iterations > match.index * 3) {\n const err = new Error('potential infinite loop, way more iterations than matches');\n throw err;\n }\n\n /*\n Why might be find ourselves here? An potential end match that was\n triggered but could not be completed. IE, `doEndMatch` returned NO_MATCH.\n (this could be because a callback requests the match be ignored, etc)\n\n This causes no real harm other than stopping a few times too many.\n */\n\n modeBuffer += lexeme;\n return lexeme.length;\n }\n\n const language = getLanguage(languageName);\n if (!language) {\n error(LANGUAGE_NOT_FOUND.replace(\"{}\", languageName));\n throw new Error('Unknown language: \"' + languageName + '\"');\n }\n\n const md = compileLanguage(language);\n let result = '';\n /** @type {CompiledMode} */\n let top = continuation || md;\n /** @type Record<string,CompiledMode> */\n const continuations = {}; // keep continuations for sub-languages\n const emitter = new options.__emitter(options);\n processContinuations();\n let modeBuffer = '';\n let relevance = 0;\n let index = 0;\n let iterations = 0;\n let resumeScanAtSamePosition = false;\n\n try {\n if (!language.__emitTokens) {\n top.matcher.considerAll();\n\n for (;;) {\n iterations++;\n if (resumeScanAtSamePosition) {\n // only regexes not matched previously will now be\n // considered for a potential match\n resumeScanAtSamePosition = false;\n } else {\n top.matcher.considerAll();\n }\n top.matcher.lastIndex = index;\n\n const match = top.matcher.exec(codeToHighlight);\n // console.log(\"match\", match[0], match.rule && match.rule.begin)\n\n if (!match) break;\n\n const beforeMatch = codeToHighlight.substring(index, match.index);\n const processedCount = processLexeme(beforeMatch, match);\n index = match.index + processedCount;\n }\n processLexeme(codeToHighlight.substring(index));\n } else {\n language.__emitTokens(codeToHighlight, emitter);\n }\n\n emitter.finalize();\n result = emitter.toHTML();\n\n return {\n language: languageName,\n value: result,\n relevance,\n illegal: false,\n _emitter: emitter,\n _top: top\n };\n } catch (err) {\n if (err.message && err.message.includes('Illegal')) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: true,\n relevance: 0,\n _illegalBy: {\n message: err.message,\n index,\n context: codeToHighlight.slice(index - 100, index + 100),\n mode: err.mode,\n resultSoFar: result\n },\n _emitter: emitter\n };\n } else if (SAFE_MODE) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: false,\n relevance: 0,\n errorRaised: err,\n _emitter: emitter,\n _top: top\n };\n } else {\n throw err;\n }\n }\n }\n\n /**\n * returns a valid highlight result, without actually doing any actual work,\n * auto highlight starts with this and it's possible for small snippets that\n * auto-detection may not find a better match\n * @param {string} code\n * @returns {HighlightResult}\n */\n function justTextHighlightResult(code) {\n const result = {\n value: escape(code),\n illegal: false,\n relevance: 0,\n _top: PLAINTEXT_LANGUAGE,\n _emitter: new options.__emitter(options)\n };\n result._emitter.addText(code);\n return result;\n }\n\n /**\n Highlighting with language detection. Accepts a string with the code to\n highlight. Returns an object with the following properties:\n\n - language (detected language)\n - relevance (int)\n - value (an HTML string with highlighting markup)\n - secondBest (object with the same structure for second-best heuristically\n detected language, may be absent)\n\n @param {string} code\n @param {Array<string>} [languageSubset]\n @returns {AutoHighlightResult}\n */\n function highlightAuto(code, languageSubset) {\n languageSubset = languageSubset || options.languages || Object.keys(languages);\n const plaintext = justTextHighlightResult(code);\n\n const results = languageSubset.filter(getLanguage).filter(autoDetection).map(name =>\n _highlight(name, code, false)\n );\n results.unshift(plaintext); // plaintext is always an option\n\n const sorted = results.sort((a, b) => {\n // sort base on relevance\n if (a.relevance !== b.relevance) return b.relevance - a.relevance;\n\n // always award the tie to the base language\n // ie if C++ and Arduino are tied, it's more likely to be C++\n if (a.language && b.language) {\n if (getLanguage(a.language).supersetOf === b.language) {\n return 1;\n } else if (getLanguage(b.language).supersetOf === a.language) {\n return -1;\n }\n }\n\n // otherwise say they are equal, which has the effect of sorting on\n // relevance while preserving the original ordering - which is how ties\n // have historically been settled, ie the language that comes first always\n // wins in the case of a tie\n return 0;\n });\n\n const [best, secondBest] = sorted;\n\n /** @type {AutoHighlightResult} */\n const result = best;\n result.secondBest = secondBest;\n\n return result;\n }\n\n /**\n * Builds new class name for block given the language name\n *\n * @param {HTMLElement} element\n * @param {string} [currentLang]\n * @param {string} [resultLang]\n */\n function updateClassName(element, currentLang, resultLang) {\n const language = (currentLang && aliases[currentLang]) || resultLang;\n\n element.classList.add(\"hljs\");\n element.classList.add(`language-${language}`);\n }\n\n /**\n * Applies highlighting to a DOM node containing code.\n *\n * @param {HighlightedHTMLElement} element - the HTML element to highlight\n */\n function highlightElement(element) {\n /** @type HTMLElement */\n let node = null;\n const language = blockLanguage(element);\n\n if (shouldNotHighlight(language)) return;\n\n fire(\"before:highlightElement\",\n { el: element, language });\n\n if (element.dataset.highlighted) {\n console.log(\"Element previously highlighted. To highlight again, first unset `dataset.highlighted`.\", element);\n return;\n }\n\n // we should be all text, no child nodes (unescaped HTML) - this is possibly\n // an HTML injection attack - it's likely too late if this is already in\n // production (the code has likely already done its damage by the time\n // we're seeing it)... but we yell loudly about this so that hopefully it's\n // more likely to be caught in development before making it to production\n if (element.children.length > 0) {\n if (!options.ignoreUnescapedHTML) {\n console.warn(\"One of your code blocks includes unescaped HTML. This is a potentially serious security risk.\");\n console.warn(\"https://github.com/highlightjs/highlight.js/wiki/security\");\n console.warn(\"The element with unescaped HTML:\");\n console.warn(element);\n }\n if (options.throwUnescapedHTML) {\n const err = new HTMLInjectionError(\n \"One of your code blocks includes unescaped HTML.\",\n element.innerHTML\n );\n throw err;\n }\n }\n\n node = element;\n const text = node.textContent;\n const result = language ? highlight(text, { language, ignoreIllegals: true }) : highlightAuto(text);\n\n element.innerHTML = result.value;\n element.dataset.highlighted = \"yes\";\n updateClassName(element, language, result.language);\n element.result = {\n language: result.language,\n // TODO: remove with version 11.0\n re: result.relevance,\n relevance: result.relevance\n };\n if (result.secondBest) {\n element.secondBest = {\n language: result.secondBest.language,\n relevance: result.secondBest.relevance\n };\n }\n\n fire(\"after:highlightElement\", { el: element, result, text });\n }\n\n /**\n * Updates highlight.js global options with the passed options\n *\n * @param {Partial<HLJSOptions>} userOptions\n */\n function configure(userOptions) {\n options = inherit(options, userOptions);\n }\n\n // TODO: remove v12, deprecated\n const initHighlighting = () => {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlighting() deprecated. Use highlightAll() now.\");\n };\n\n // TODO: remove v12, deprecated\n function initHighlightingOnLoad() {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlightingOnLoad() deprecated. Use highlightAll() now.\");\n }\n\n let wantsHighlight = false;\n\n /**\n * auto-highlights all pre>code elements on the page\n */\n function highlightAll() {\n // if we are called too early in the loading process\n if (document.readyState === \"loading\") {\n wantsHighlight = true;\n return;\n }\n\n const blocks = document.querySelectorAll(options.cssSelector);\n blocks.forEach(highlightElement);\n }\n\n function boot() {\n // if a highlight was requested before DOM was loaded, do now\n if (wantsHighlight) highlightAll();\n }\n\n // make sure we are in the browser environment\n if (typeof window !== 'undefined' && window.addEventListener) {\n window.addEventListener('DOMContentLoaded', boot, false);\n }\n\n /**\n * Register a language grammar module\n *\n * @param {string} languageName\n * @param {LanguageFn} languageDefinition\n */\n function registerLanguage(languageName, languageDefinition) {\n let lang = null;\n try {\n lang = languageDefinition(hljs);\n } catch (error$1) {\n error(\"Language definition for '{}' could not be registered.\".replace(\"{}\", languageName));\n // hard or soft error\n if (!SAFE_MODE) { throw error$1; } else { error(error$1); }\n // languages that have serious errors are replaced with essentially a\n // \"plaintext\" stand-in so that the code blocks will still get normal\n // css classes applied to them - and one bad language won't break the\n // entire highlighter\n lang = PLAINTEXT_LANGUAGE;\n }\n // give it a temporary name if it doesn't have one in the meta-data\n if (!lang.name) lang.name = languageName;\n languages[languageName] = lang;\n lang.rawDefinition = languageDefinition.bind(null, hljs);\n\n if (lang.aliases) {\n registerAliases(lang.aliases, { languageName });\n }\n }\n\n /**\n * Remove a language grammar module\n *\n * @param {string} languageName\n */\n function unregisterLanguage(languageName) {\n delete languages[languageName];\n for (const alias of Object.keys(aliases)) {\n if (aliases[alias] === languageName) {\n delete aliases[alias];\n }\n }\n }\n\n /**\n * @returns {string[]} List of language internal names\n */\n function listLanguages() {\n return Object.keys(languages);\n }\n\n /**\n * @param {string} name - name of the language to retrieve\n * @returns {Language | undefined}\n */\n function getLanguage(name) {\n name = (name || '').toLowerCase();\n return languages[name] || languages[aliases[name]];\n }\n\n /**\n *\n * @param {string|string[]} aliasList - single alias or list of aliases\n * @param {{languageName: string}} opts\n */\n function registerAliases(aliasList, { languageName }) {\n if (typeof aliasList === 'string') {\n aliasList = [aliasList];\n }\n aliasList.forEach(alias => { aliases[alias.toLowerCase()] = languageName; });\n }\n\n /**\n * Determines if a given language has auto-detection enabled\n * @param {string} name - name of the language\n */\n function autoDetection(name) {\n const lang = getLanguage(name);\n return lang && !lang.disableAutodetect;\n }\n\n /**\n * Upgrades the old highlightBlock plugins to the new\n * highlightElement API\n * @param {HLJSPlugin} plugin\n */\n function upgradePluginAPI(plugin) {\n // TODO: remove with v12\n if (plugin[\"before:highlightBlock\"] && !plugin[\"before:highlightElement\"]) {\n plugin[\"before:highlightElement\"] = (data) => {\n plugin[\"before:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n if (plugin[\"after:highlightBlock\"] && !plugin[\"after:highlightElement\"]) {\n plugin[\"after:highlightElement\"] = (data) => {\n plugin[\"after:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function addPlugin(plugin) {\n upgradePluginAPI(plugin);\n plugins.push(plugin);\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function removePlugin(plugin) {\n const index = plugins.indexOf(plugin);\n if (index !== -1) {\n plugins.splice(index, 1);\n }\n }\n\n /**\n *\n * @param {PluginEvent} event\n * @param {any} args\n */\n function fire(event, args) {\n const cb = event;\n plugins.forEach(function(plugin) {\n if (plugin[cb]) {\n plugin[cb](args);\n }\n });\n }\n\n /**\n * DEPRECATED\n * @param {HighlightedHTMLElement} el\n */\n function deprecateHighlightBlock(el) {\n deprecated(\"10.7.0\", \"highlightBlock will be removed entirely in v12.0\");\n deprecated(\"10.7.0\", \"Please use highlightElement now.\");\n\n return highlightElement(el);\n }\n\n /* Interface definition */\n Object.assign(hljs, {\n highlight,\n highlightAuto,\n highlightAll,\n highlightElement,\n // TODO: Remove with v12 API\n highlightBlock: deprecateHighlightBlock,\n configure,\n initHighlighting,\n initHighlightingOnLoad,\n registerLanguage,\n unregisterLanguage,\n listLanguages,\n getLanguage,\n registerAliases,\n autoDetection,\n inherit,\n addPlugin,\n removePlugin\n });\n\n hljs.debugMode = function() { SAFE_MODE = false; };\n hljs.safeMode = function() { SAFE_MODE = true; };\n hljs.versionString = version;\n\n hljs.regex = {\n concat: concat,\n lookahead: lookahead,\n either: either,\n optional: optional,\n anyNumberOfTimes: anyNumberOfTimes\n };\n\n for (const key in MODES) {\n // @ts-ignore\n if (typeof MODES[key] === \"object\") {\n // @ts-ignore\n deepFreeze(MODES[key]);\n }\n }\n\n // merge all the modes/regexes into our main object\n Object.assign(hljs, MODES);\n\n return hljs;\n};\n\n// Other names for the variable may break build script\nconst highlight = HLJS({});\n\n// returns a new instance of the highlighter to be used for extensions\n// check https://github.com/wooorm/lowlight/issues/47\nhighlight.newInstance = () => HLJS({});\n\nvar core = highlight;\nhighlight.HighlightJS = highlight;\nhighlight.default = highlight;\n\nvar HighlightJS = /*@__PURE__*/getDefaultExportFromCjs(core);\n\nfunction parseNodes(nodes, className = []) {\n return nodes\n .map(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 .flat();\n}\nfunction getHighlightNodes(result) {\n // `.value` for lowlight v1, `.children` for lowlight v2\n return result.value || result.children || [];\n}\nfunction registered(aliasOrLanguage) {\n return Boolean(HighlightJS.getLanguage(aliasOrLanguage));\n}\nfunction getDecorations({ doc, name, lowlight, defaultLanguage, }) {\n const decorations = [];\n findChildren(doc, node => node.type.name === name).forEach(block => {\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))\n ? getHighlightNodes(lowlight.highlight(language, block.node.textContent))\n : 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({ name, lowlight, defaultLanguage, }) {\n if (!['highlight', 'highlightAuto', 'listLanguages'].every(api => isFunction(lowlight[api]))) {\n throw Error('You should provide an instance of lowlight to use the code-block-lowlight extension');\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\n // Apply decorations if:\n // selection includes named node,\n && ([oldNodeName, newNodeName].includes(name)\n // OR transaction adds/removes named node,\n || newNodes.length !== oldNodes.length\n // 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 // @ts-ignore\n return (\n // @ts-ignore\n step.from !== undefined\n // @ts-ignore\n && step.to !== undefined\n && oldNodes.some(node => {\n // @ts-ignore\n return (\n // @ts-ignore\n node.pos >= step.from\n // @ts-ignore\n && node.pos + node.node.nodeSize <= step.to);\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/**\n * This extension allows you to highlight code blocks with lowlight.\n * @see https://tiptap.dev/api/nodes/code-block-lowlight\n */\nconst CodeBlockLowlight = CodeBlock.extend({\n addOptions() {\n var _a;\n return {\n ...(_a = this.parent) === null || _a === void 0 ? void 0 : _a.call(this),\n lowlight: {},\n };\n },\n addProseMirrorPlugins() {\n var _a;\n return [\n ...((_a = this.parent) === null || _a === void 0 ? 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\nexport { CodeBlockLowlight, CodeBlockLowlight as default };\n//# sourceMappingURL=index.js.map\n","import { t } from \"i18next\";\nimport { lowlight } from \"lowlight\";\n\nexport const SORTED_LANGUAGE_LIST = [\n ...lowlight.listLanguages(),\n \"html\",\n].sort();\n\nexport const LINE_NUMBER_OPTIONS = [\n { label: t(\"neetoEditor.codeblock.showLineNumbers\"), value: \"true\" },\n { label: t(\"neetoEditor.codeblock.hideLineNumbers\"), value: \"false\" },\n];\n","/* eslint-disable @bigbinary/neeto/file-name-and-export-name-standards */\nimport { Plugin, PluginKey } from \"prosemirror-state\";\nimport { Decoration, DecorationSet } from \"prosemirror-view\";\n\nconst codeBlockHighlightKey = new PluginKey(\"codeBlockHighlight\");\n\nfunction createLineDecoration(from, lineNumber) {\n return Decoration.widget(from, view => {\n const line = document.createElement(\"div\");\n line.className = \"highlighted-line\";\n line.setAttribute(\"data-line-number\", lineNumber.toString());\n\n // Set the height of the highlight to match the line height\n const lineElement = view.domAtPos(from).node;\n if (lineElement instanceof Element) {\n const lineHeight = window.getComputedStyle(lineElement).lineHeight;\n line.style.height = lineHeight;\n }\n\n return line;\n });\n}\n\nfunction getLineRanges(node, pos) {\n const lines = node.textContent.split(\"\\n\");\n let currentPos = pos + 1; // +1 to skip the opening tag of the code block\n\n return lines.map((line, index) => {\n const from = currentPos;\n const to = from + line.length; // +1 for newline, except last line\n currentPos = to + (index < lines.length - 1 ? 1 : 0);\n\n return { from, to, lineNumber: index + 1 };\n });\n}\n\nconst codeBlockHighlightPlugin = new Plugin({\n key: codeBlockHighlightKey,\n state: {\n init() {\n return DecorationSet.empty;\n },\n apply(tr, set) {\n set = set.map(tr.mapping, tr.doc);\n\n if (tr.getMeta(codeBlockHighlightKey)) {\n const decorations = [];\n tr.doc.descendants((node, pos) => {\n if (node.type.name !== \"codeBlock\") return;\n\n const highlightedLines = node.attrs.highlightedLines || [];\n const lineRanges = getLineRanges(node, pos);\n\n lineRanges.forEach(({ from, lineNumber }) => {\n if (highlightedLines.includes(lineNumber)) {\n decorations.push(createLineDecoration(from, lineNumber));\n }\n });\n });\n\n return DecorationSet.create(tr.doc, decorations);\n }\n\n return set;\n },\n },\n props: {\n decorations(state) {\n return this.getState(state);\n },\n },\n});\n\nexport { codeBlockHighlightPlugin, codeBlockHighlightKey };\n","import React, { useRef, useState, useCallback, useEffect } from \"react\";\n\nimport { NodeViewWrapper, NodeViewContent } from \"@tiptap/react\";\nimport { Down, Highlight } from \"neetoicons\";\nimport CopyToClipboardButton from \"neetomolecules/CopyToClipboardButton\";\nimport { Dropdown, Input, Button } from \"neetoui\";\nimport { difference, intersection, union } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { LINE_NUMBER_OPTIONS, SORTED_LANGUAGE_LIST } from \"./constants\";\nimport { codeBlockHighlightKey } from \"./plugins\";\n\nconst { Menu, MenuItem } = Dropdown;\n\nconst CodeBlockComponent = ({ node, editor, updateAttributes }) => {\n const [keyword, setKeyword] = useState(\"\");\n const [showHighlightButton, setShowHighlightButton] = useState(false);\n const [showLineNumbers, setShowLineNumbers] = useState(\n node.attrs.linenumbers\n );\n const ref = useRef();\n\n const { t } = useTranslation();\n\n const filteredAndSortedLanguageList = SORTED_LANGUAGE_LIST.filter(language =>\n language.includes(keyword)\n );\n\n const handleLanguageSelect = language => {\n updateAttributes({ language });\n setKeyword(\"\");\n editor?.commands?.focus();\n };\n\n const handleContentMount = node => {\n if (ref.current && node?.offsetHeight) {\n ref.current.style.minHeight = `${node.offsetHeight}px`;\n }\n };\n\n const handleSelectionChange = useCallback(() => {\n const { from, to } = editor.state.selection;\n const isCodeBlockSelected = editor.isActive(\"codeBlock\");\n setShowHighlightButton(isCodeBlockSelected && from !== to);\n }, [editor]);\n\n useEffect(() => {\n editor.on(\"selectionUpdate\", handleSelectionChange);\n\n return () => {\n editor.off(\"selectionUpdate\", handleSelectionChange);\n };\n }, [editor, handleSelectionChange]);\n\n useEffect(() => {\n editor.view.dispatch(editor.state.tr.setMeta(codeBlockHighlightKey, true));\n }, []);\n\n const handleHighlight = () => {\n const { from, to } = editor.state.selection;\n const $from = editor.state.doc.resolve(from);\n\n const codeBlock = $from.node($from.depth);\n const codeBlockStart = $from.start($from.depth);\n\n const textBeforeSelection = codeBlock.textBetween(0, from - codeBlockStart);\n const startLine = textBeforeSelection.split(\"\\n\").length;\n const selectedText = codeBlock.textBetween(\n from - codeBlockStart,\n to - codeBlockStart\n );\n const selectedLines = selectedText.split(\"\\n\");\n\n const newSelectedLines = selectedLines.map((_, index) => startLine + index);\n const currentHighlightedLines = codeBlock.attrs.highlightedLines || [];\n\n // Check the overlap between new selection and current highlights\n const overlapLines = intersection(\n currentHighlightedLines,\n newSelectedLines\n );\n\n let highlightedLines;\n\n if (overlapLines.length === newSelectedLines.length) {\n // If the new selection is entirely within currently highlighted lines,\n // remove the highlight from the selected lines\n highlightedLines = difference(currentHighlightedLines, newSelectedLines);\n } else {\n // Add unhighlighted lines in the new selection to the highlight list\n highlightedLines = union(currentHighlightedLines, newSelectedLines);\n }\n\n editor.commands.updateAttributes(codeBlock.type, { highlightedLines });\n // Trigger the plugin to update decorations\n editor.view.dispatch(editor.state.tr.setMeta(codeBlockHighlightKey, true));\n };\n\n return (\n <NodeViewWrapper\n className=\"ne-codeblock-nodeview-wrapper\"\n data-testid=\"neeto-editor-code-block\"\n >\n <div {...{ ref }}>\n <pre ref={handleContentMount}>\n <div\n className=\"neeto-editor-codeblock-options\"\n contentEditable={false}\n >\n <Dropdown\n appendTo={() => document.body}\n buttonSize=\"small\"\n buttonStyle=\"tertiary\"\n icon={Down}\n strategy=\"fixed\"\n zIndex={99999}\n label={\n showLineNumbers === \"true\"\n ? LINE_NUMBER_OPTIONS[0].label\n : LINE_NUMBER_OPTIONS[1].label\n }\n >\n <Menu className=\"neeto-editor-codeblock-options__menu\">\n {LINE_NUMBER_OPTIONS.map(({ label, value }) => (\n <MenuItem.Button\n key={label}\n onClick={() => {\n setShowLineNumbers(value);\n updateAttributes({ linenumbers: value });\n }}\n >\n {label}\n </MenuItem.Button>\n ))}\n </Menu>\n </Dropdown>\n <Dropdown\n appendTo={() => document.body}\n buttonSize=\"small\"\n buttonStyle=\"tertiary\"\n icon={Down}\n label={node.attrs?.language || t(\"neetoEditor.common.auto\")}\n strategy=\"fixed\"\n zIndex={99999}\n >\n <Input\n autoFocus\n className=\"neeto-editor-codeblock-options__input\"\n placeholder={t(\"neetoEditor.placeholders.searchLanguages\")}\n size=\"small\"\n value={keyword}\n onChange={e => setKeyword(e.target.value)}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n }}\n />\n <Menu className=\"neeto-editor-codeblock-options__menu\">\n {filteredAndSortedLanguageList.map(language => (\n <MenuItem.Button\n key={language}\n onClick={() => handleLanguageSelect(language)}\n >\n {language || t(\"neetoEditor.common.auto\")}\n </MenuItem.Button>\n ))}\n </Menu>\n </Dropdown>\n <CopyToClipboardButton\n size=\"small\"\n style=\"tertiary\"\n value={node?.content?.content[0]?.text}\n />\n {showHighlightButton && (\n <Button\n icon={Highlight}\n size=\"small\"\n style=\"tertiary\"\n tooltipProps={{ content: t(\"neetoEditor.menu.highlight\") }}\n onClick={handleHighlight}\n />\n )}\n </div>\n <NodeViewContent as=\"code\" />\n </pre>\n </div>\n </NodeViewWrapper>\n );\n};\n\nexport default CodeBlockComponent;\n","import CodeBlockLowlight from \"@tiptap/extension-code-block-lowlight\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport { lowlight } from \"lowlight\";\n\nimport CodeBlockComponent from \"./CodeBlockComponent\";\nimport { codeBlockHighlightPlugin } from \"./plugins\";\n\nexport default CodeBlockLowlight.extend({\n addAttributes() {\n return {\n ...this.parent?.(),\n highlightedLines: {\n default: [],\n parseHTML: element =>\n element.dataset.highlightedLines\n ?.split(\",\")\n .map(Number)\n .filter(Boolean) || [],\n renderHTML: attributes => ({\n \"data-highlighted-lines\":\n attributes.highlightedLines?.join(\",\") ?? \"\",\n }),\n },\n linenumbers: {\n default: \"false\",\n parseHTML: element => element.dataset.linenumbers || \"false\",\n renderHTML: attributes =>\n attributes.linenumbers === \"true\"\n ? { \"data-linenumbers\": \"true\" }\n : {},\n },\n };\n },\n addProseMirrorPlugins() {\n return [...(this.parent?.() || []), codeBlockHighlightPlugin];\n },\n addNodeView() {\n return ReactNodeViewRenderer(CodeBlockComponent);\n },\n}).configure({ lowlight, defaultLanguage: \"plaintext\" });\n","import { Extension } from \"@tiptap/core\";\n\nexport default Extension.create({\n name: \"paste-unformatted\",\n\n addCommands() {\n return {\n pasteUnformatted:\n () =>\n async ({ editor }) => {\n const text = await navigator.clipboard.readText();\n editor.commands.insertContent(text);\n },\n };\n },\n});\n","import { Extension } from \"@tiptap/core\";\nimport { Plugin, PluginKey } from \"@tiptap/pm/state\";\nimport { Decoration, DecorationSet } from \"@tiptap/pm/view\";\n\nconst DeletedArticleDecoration = Extension.create({\n name: \"deletedArticleDecoration\",\n\n addOptions() {\n return { deletedArticleIds: new Set() };\n },\n\n addProseMirrorPlugins() {\n return [\n new Plugin({\n key: new PluginKey(\"deletedArticleDecoration\"),\n props: {\n decorations: ({ doc }) => {\n const decorations = [];\n\n doc.descendants((node, pos) => {\n if (!node.marks) return;\n\n node.marks.forEach(mark => {\n if (\n !(\n mark.type.name === \"link\" &&\n mark.attrs[\"data-neeto-kb-article\"] === \"true\" &&\n mark.attrs[\"data-article-id\"]\n )\n ) {\n return;\n }\n\n const articleId = mark.attrs[\"data-article-id\"];\n if (!this.options.deletedArticleIds.has(articleId)) return;\n\n const decoration = Decoration.inline(pos, pos + node.nodeSize, {\n \"data-article-deleted\": \"true\",\n class: \"neeto-kb-article-deleted\",\n });\n decorations.push(decoration);\n });\n });\n\n return DecorationSet.create(doc, decorations);\n },\n },\n }),\n ];\n },\n\n addCommands() {\n return {\n updateDeletedArticles: deletedArticleIds => () => {\n this.options.deletedArticleIds = deletedArticleIds;\n this.editor.view.updateState(this.editor.state);\n\n return true;\n },\n };\n },\n});\n\nexport default DeletedArticleDecoration;\n","import { PluginKey, Plugin } from '@tiptap/pm/state';\nimport { DecorationSet, Decoration } from '@tiptap/pm/view';\nimport { escapeForRegEx } from '@tiptap/core';\n\nfunction findSuggestionMatch(config) {\n var _a;\n const { char, allowSpaces, allowedPrefixes, startOfLine, $position, } = config;\n const escapedChar = escapeForRegEx(char);\n const suffix = new RegExp(`\\\\s${escapedChar}$`);\n const prefix = startOfLine ? '^' : '';\n const regexp = allowSpaces\n ? new RegExp(`${prefix}${escapedChar}.*?(?=\\\\s${escapedChar}|$)`, 'gm')\n : new RegExp(`${prefix}(?:^)?${escapedChar}[^\\\\s${escapedChar}]*`, 'gm');\n const text = ((_a = $position.nodeBefore) === null || _a === void 0 ? 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 === undefined || match.index === undefined) {\n return null;\n }\n // JavaScript doesn't have lookbehinds. This hacks a check that first character\n // is a space or the start of the line\n const matchPrefix = match.input.slice(Math.max(0, match.index - 1), match.index);\n const matchPrefixIsAllowed = new RegExp(`^[${allowedPrefixes === null || allowedPrefixes === void 0 ? void 0 : allowedPrefixes.join('')}\\0]?$`).test(matchPrefix);\n if (allowedPrefixes !== null && !matchPrefixIsAllowed) {\n return null;\n }\n // The absolute position of the match in the document\n const from = textFrom + match.index;\n let to = from + match[0].length;\n // Edge case handling; if spaces are allowed and we're directly in between\n // two triggers\n if (allowSpaces && suffix.test(text.slice(to - 1, to + 1))) {\n match[0] += ' ';\n to += 1;\n }\n // If the $position is located within the matched substring, return that range\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\nconst SuggestionPluginKey = new PluginKey('suggestion');\n/**\n * This utility allows you to create suggestions.\n * @see https://tiptap.dev/api/utilities/suggestion\n */\nfunction Suggestion({ pluginKey = SuggestionPluginKey, editor, char = '@', allowSpaces = false, allowedPrefixes = [' '], startOfLine = false, decorationTag = 'span', decorationClass = 'suggestion', command = () => null, items = () => [], render = () => ({}), allow = () => true, findSuggestionMatch: findSuggestionMatch$1 = findSuggestionMatch, }) {\n let props;\n const renderer = render === null || render === void 0 ? void 0 : render();\n const plugin = new Plugin({\n key: pluginKey,\n view() {\n return {\n update: async (view, prevState) => {\n var _a, _b, _c, _d, _e, _f, _g;\n const prev = (_a = this.key) === null || _a === void 0 ? void 0 : _a.getState(prevState);\n const next = (_b = this.key) === null || _b === void 0 ? void 0 : _b.getState(view.state);\n // See how the state changed\n const moved = prev.active && next.active && prev.range.from !== next.range.from;\n const started = !prev.active && next.active;\n const stopped = prev.active && !next.active;\n const changed = !started && !stopped && prev.query !== next.query;\n const handleStart = started || (moved && changed);\n const handleChange = changed || moved;\n const handleExit = stopped || (moved && changed);\n // Cancel when suggestion isn't active\n if (!handleStart && !handleChange && !handleExit) {\n return;\n }\n const state = handleExit && !handleStart ? prev : next;\n const decorationNode = view.dom.querySelector(`[data-decoration-id=\"${state.decorationId}\"]`);\n props = {\n editor,\n range: state.range,\n query: state.query,\n text: state.text,\n items: [],\n command: commandProps => {\n return command({\n editor,\n range: state.range,\n props: commandProps,\n });\n },\n decorationNode,\n // virtual node for popper.js or tippy.js\n // this can be used for building popups without a DOM node\n clientRect: decorationNode\n ? () => {\n var _a;\n // because of `items` can be asynchrounous we’ll search for the current decoration node\n const { decorationId } = (_a = this.key) === null || _a === void 0 ? void 0 : _a.getState(editor.state); // eslint-disable-line\n const currentDecorationNode = view.dom.querySelector(`[data-decoration-id=\"${decorationId}\"]`);\n return (currentDecorationNode === null || currentDecorationNode === void 0 ? void 0 : currentDecorationNode.getBoundingClientRect()) || null;\n }\n : null,\n };\n if (handleStart) {\n (_c = renderer === null || renderer === void 0 ? void 0 : renderer.onBeforeStart) === null || _c === void 0 ? void 0 : _c.call(renderer, props);\n }\n if (handleChange) {\n (_d = renderer === null || renderer === void 0 ? void 0 : renderer.onBeforeUpdate) === null || _d === void 0 ? void 0 : _d.call(renderer, props);\n }\n if (handleChange || handleStart) {\n props.items = await items({\n editor,\n query: state.query,\n });\n }\n if (handleExit) {\n (_e = renderer === null || renderer === void 0 ? void 0 : renderer.onExit) === null || _e === void 0 ? void 0 : _e.call(renderer, props);\n }\n if (handleChange) {\n (_f = renderer === null || renderer === void 0 ? void 0 : renderer.onUpdate) === null || _f === void 0 ? void 0 : _f.call(renderer, props);\n }\n if (handleStart) {\n (_g = renderer === null || renderer === void 0 ? void 0 : renderer.onStart) === null || _g === void 0 ? void 0 : _g.call(renderer, props);\n }\n },\n destroy: () => {\n var _a;\n if (!props) {\n return;\n }\n (_a = renderer === null || renderer === void 0 ? void 0 : renderer.onExit) === null || _a === void 0 ? void 0 : _a.call(renderer, props);\n },\n };\n },\n state: {\n // Initialize the plugin's internal state.\n init() {\n const state = {\n active: false,\n range: {\n from: 0,\n to: 0,\n },\n query: null,\n text: null,\n composing: false,\n };\n return state;\n },\n // Apply changes to the plugin state from a view transaction.\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 next.composing = composing;\n // We can only be suggesting if the view is editable, and:\n // * there is no selection, or\n // * a composition is active (see: https://github.com/ueberdosis/tiptap/issues/1449)\n if (isEditable && (empty || editor.view.composing)) {\n // Reset active state if we just left the previous suggestion range\n if ((from < prev.range.from || from > prev.range.to) && !composing && !prev.composing) {\n next.active = false;\n }\n // Try to match against where our cursor currently is\n const match = findSuggestionMatch$1({\n char,\n allowSpaces,\n allowedPrefixes,\n startOfLine,\n $position: selection.$from,\n });\n const decorationId = `id_${Math.floor(Math.random() * 0xffffffff)}`;\n // If we found a match, update the current state to show it\n if (match && allow({\n editor, state, range: match.range, isActive: prev.active,\n })) {\n next.active = true;\n next.decorationId = prev.decorationId ? prev.decorationId : decorationId;\n next.range = match.range;\n next.query = match.query;\n next.text = match.text;\n }\n else {\n next.active = false;\n }\n }\n else {\n next.active = false;\n }\n // Make sure to empty the range if suggestion is inactive\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 props: {\n // Call the keydown hook if suggestion is active.\n handleKeyDown(view, event) {\n var _a;\n const { active, range } = plugin.getState(view.state);\n if (!active) {\n return false;\n }\n return ((_a = renderer === null || renderer === void 0 ? void 0 : renderer.onKeyDown) === null || _a === void 0 ? void 0 : _a.call(renderer, { view, event, range })) || false;\n },\n // Setup decorator on the currently active suggestion.\n decorations(state) {\n const { active, range, decorationId } = plugin.getState(state);\n if (!active) {\n return null;\n }\n return DecorationSet.create(state.doc, [\n Decoration.inline(range.from, range.to, {\n nodeName: decorationTag,\n class: decorationClass,\n 'data-decoration-id': decorationId,\n }),\n ]);\n },\n },\n });\n return plugin;\n}\n\nexport { Suggestion, SuggestionPluginKey, Suggestion as default, findSuggestionMatch };\n//# sourceMappingURL=index.js.map\n","import { Node } from \"@tiptap/core\";\nimport { PluginKey } from \"@tiptap/pm/state\";\nimport { ReactRenderer } from \"@tiptap/react\";\nimport Suggestion from \"@tiptap/suggestion\";\nimport tippy from \"tippy.js\";\n\nimport EmojiPickerMenu from \"./EmojiPickerMenu\";\n\nconst EmojiPickerPluginKey = new PluginKey(\"emoji-picker\");\n\nconst EmojiPicker = Node.create({\n name: \"emojiPicker\",\n\n group: \"inline\",\n\n inline: true,\n\n selectable: false,\n\n atom: true,\n\n addOptions() {\n return {\n suggestion: {\n char: \"::\",\n startOfLine: false,\n pluginKey: EmojiPickerPluginKey,\n items: () => [],\n\n render: () => {\n let reactRenderer;\n let popup;\n\n return {\n onStart(props) {\n reactRenderer = new ReactRenderer(EmojiPickerMenu, {\n props,\n editor: props.editor,\n });\n\n popup = tippy(\"body\", {\n theme: \"light\",\n getReferenceClientRect: props.clientRect,\n appendTo: () => document.body,\n content: reactRenderer.element,\n showOnCreate: true,\n interactive: true,\n trigger: \"manual\",\n placement: \"bottom-start\",\n zIndex: 99999,\n });\n },\n\n onKeyDown(props) {\n return reactRenderer.ref?.onKeyDown(props);\n },\n\n onExit() {\n popup[0].destroy();\n reactRenderer.destroy();\n },\n };\n },\n },\n };\n },\n\n addProseMirrorPlugins() {\n return [Suggestion({ editor: this.editor, ...this.options.suggestion })];\n },\n});\n\nexport default EmojiPicker;\n","export const DEFAULT_EMOJI_PRIORITIES_LIST = [\n \"+1\",\n \"-1\",\n \"heart\",\n \"heart_eyes\",\n \"tada\",\n \"partying_face\",\n \"joy\",\n \"sob\",\n \"white_frowning_face\",\n \"rocket\",\n \"eyes\",\n \"raised_hands\",\n \"open_mouth\",\n];\n\nexport const EMOJI_QUERY_REGEX = /^[a-z0-9_+-]+$/i;\n","import { DEFAULT_EMOJI_PRIORITIES_LIST } from \"./constants\";\n\nexport const filterEmojiSuggestions = (suggestions, frequentlyUsedEmojis) => {\n const mergedEmojiList = DEFAULT_EMOJI_PRIORITIES_LIST.concat(\n frequentlyUsedEmojis.filter(\n emoji => !DEFAULT_EMOJI_PRIORITIES_LIST.includes(emoji)\n )\n );\n\n return suggestions\n .sort((a, b) => {\n const aIndex = mergedEmojiList.indexOf(a.id);\n const bIndex = mergedEmojiList.indexOf(b.id);\n if (aIndex === -1 && bIndex === -1) {\n return 0;\n } else if (aIndex === -1) {\n return 1;\n } else if (bIndex === -1) {\n return -1;\n }\n\n return aIndex - bIndex;\n })\n .slice(0, 5);\n};\n","import React from \"react\";\n\nimport classnames from \"classnames\";\nimport { init, SearchIndex } from \"emoji-mart\";\nimport { isNotEmpty } from \"neetocist\";\nimport { Spinner } from \"neetoui\";\nimport { isEmpty } from \"ramda\";\n\nimport emojiPickerApi from \"apis/emoji_picker\";\n\nimport { filterEmojiSuggestions } from \"./utils\";\n\nclass EmojiSuggestionMenu extends React.Component {\n state = {\n isLoading: false,\n selectedIndex: 0,\n emojiSuggestions: [],\n frequentlyUsedEmojis: {},\n };\n\n componentDidMount() {\n this.setState({\n frequentlyUsedEmojis: Object.keys(\n JSON.parse(localStorage.getItem(\"emoji-mart.frequently\") || \"{}\")\n ),\n });\n\n init({\n data: this.fetchEmojiData,\n theme: \"light\",\n previewPosition: \"none\",\n });\n this.searchEmojiAndSetState();\n }\n\n componentDidUpdate(oldProps) {\n if (this.props.query !== oldProps.query) {\n this.searchEmojiAndSetState();\n }\n }\n\n fetchEmojiData = async () => {\n this.setState({ isLoading: true });\n try {\n const { data } = await emojiPickerApi.fetch();\n this.setState({ isLoading: false });\n\n return data;\n } catch {\n this.setState({ isLoading: false });\n\n return {};\n }\n };\n\n searchEmoji = async () =>\n this.props.query ? SearchIndex.search(this.props.query) : [];\n\n searchEmojiAndSetState = async () => {\n try {\n const suggestions = await this.searchEmoji();\n const frequentlyUsedEmojis = this.state.frequentlyUsedEmojis;\n this.setState({\n emojiSuggestions: filterEmojiSuggestions(\n suggestions,\n frequentlyUsedEmojis\n ),\n });\n } catch {\n this.setState({ emojiSuggestions: [] });\n }\n };\n\n setEditorState = async () => {\n const suggestions = await this.searchEmoji();\n this.props.editor\n .chain()\n .focus()\n .deleteRange(this.props.range)\n .setEmoji(suggestions[0])\n .run();\n };\n\n onKeyDown = ({ event }) => {\n if (isEmpty(this.state.emojiSuggestions)) {\n return false;\n }\n\n if (event.key === \"ArrowLeft\" || event.key === \"ArrowDown\") {\n this.setState(({ selectedIndex, emojiSuggestions }) => ({\n selectedIndex:\n (selectedIndex + emojiSuggestions.length - 1) %\n emojiSuggestions.length,\n }));\n\n return true;\n }\n\n if (event.key === \"ArrowRight\" || event.key === \"ArrowUp\") {\n this.setState(({ selectedIndex, emojiSuggestions }) => ({\n selectedIndex: (selectedIndex + 1) % emojiSuggestions.length,\n }));\n\n return true;\n }\n\n if (event.key === \"Enter\") {\n this.selectItem(this.state.selectedIndex);\n\n return true;\n }\n\n if (event.key === \"Escape\") {\n this.props.editor.chain().focus().insertContent(\" \").run();\n\n return true;\n }\n\n return false;\n };\n\n selectItem = index => {\n this.props.editor\n .chain()\n .focus()\n .deleteRange(this.props.range)\n .setEmoji(this.state.emojiSuggestions[index])\n .run();\n };\n\n render() {\n if (isEmpty(this.state.emojiSuggestions)) {\n return null;\n }\n\n return (\n <div className=\"neeto-editor-emoji-suggestion\">\n {this.state.isLoading && <Spinner />}\n {!this.state.isLoading &&\n (isNotEmpty(this.state.emojiSuggestions) ? (\n this.state.emojiSuggestions.map((emoji, index) => (\n <div\n data-testid={`neeto-editor-emoji-suggestion-${emoji.id}`}\n key={emoji.id}\n className={classnames(\"neeto-editor-emoji-suggestion__item\", {\n \"neeto-editor-emoji-suggestion__item--selected\":\n index === this.state.selectedIndex,\n })}\n onClick={() => this.selectItem(index)}\n >\n {emoji.skins[0].native}\n </div>\n ))\n ) : (\n <p>No results</p>\n ))}\n </div>\n );\n }\n}\n\nexport default EmojiSuggestionMenu;\n","import { Node, mergeAttributes } from \"@tiptap/core\";\nimport { PluginKey } from \"@tiptap/pm/state\";\nimport { ReactRenderer } from \"@tiptap/react\";\nimport Suggestion from \"@tiptap/suggestion\";\nimport { isNil } from \"ramda\";\nimport tippy from \"tippy.js\";\n\nimport { EMOJI_QUERY_REGEX } from \"./constants\";\nimport EmojiSuggestionMenu from \"./EmojiSuggestionMenu\";\n\nconst EmojiSuggestionPluginKey = new PluginKey(\"emoji-suggestion\");\nconst EmojiSuggestion = Node.create({\n name: \"emojiSuggestion\",\n\n group: \"inline\",\n\n inline: true,\n\n selectable: false,\n\n atom: true,\n\n addOptions() {\n return {\n HTMLAttributes: { class: \"neeto-editor-emoji\" },\n renderEmoji({ node }) {\n return node.attrs.label;\n },\n suggestion: {},\n };\n },\n\n addAttributes() {\n return {\n label: {\n default: null,\n parseHTML: element => element.getAttribute(\"data-label\"),\n renderHTML: attributes => {\n if (!attributes.label) {\n return {};\n }\n\n return { \"data-label\": attributes.label };\n },\n },\n };\n },\n\n parseHTML() {\n return [{ tag: \"span[data-emoji]\" }];\n },\n\n renderHTML({ node, HTMLAttributes }) {\n return [\n \"span\",\n mergeAttributes(\n { \"data-emoji\": \"\" },\n this.options.HTMLAttributes,\n HTMLAttributes\n ),\n this.options.renderEmoji({ node }),\n ];\n },\n\n renderText({ node }) {\n return this.options.renderEmoji({ node });\n },\n\n addCommands() {\n return {\n setEmoji:\n emoji =>\n ({ chain }) =>\n chain()\n .focus()\n .insertContent([\n {\n type: this.name,\n attrs: {\n label: emoji?.native || emoji?.skins[0]?.native || \"\",\n },\n },\n { type: \"text\", text: \" \" },\n ])\n .run(),\n };\n },\n\n addProseMirrorPlugins() {\n return [Suggestion({ editor: this.editor, ...this.options.suggestion })];\n },\n});\n\nconst suggestionConfig = {\n char: \":\",\n startOfLine: false,\n pluginKey: EmojiSuggestionPluginKey,\n command: ({ editor, range, props }) => {\n editor.chain().focus().deleteRange(range).setEmoji(props).run();\n },\n\n items: () => [],\n\n render: () => {\n let reactRenderer;\n let popup;\n\n return {\n onStart(props) {\n if (props.editor.view.input.lastKeyCode === 37) {\n reactRenderer = null;\n popup = null;\n }\n },\n\n onUpdate(props) {\n const isArrowNavigation =\n props.editor.view.input.lastKeyCode === 39 ||\n props.editor.view.input.lastKeyCode === 37;\n\n if (\n !isArrowNavigation &&\n props.query.length === 1 &&\n EMOJI_QUERY_REGEX.test(props.query)\n ) {\n reactRenderer = new ReactRenderer(EmojiSuggestionMenu, {\n props,\n editor: props.editor,\n });\n\n popup = tippy(\"body\", {\n theme: \"light\",\n getReferenceClientRect: props.clientRect,\n appendTo: () => document.body,\n content: reactRenderer.element,\n showOnCreate: true,\n interactive: true,\n trigger: \"manual\",\n placement: \"top-start\",\n zIndex: 99999,\n });\n }\n reactRenderer && reactRenderer.updateProps(props);\n\n !isNil(popup) &&\n popup[0]?.setProps({\n getReferenceClientRect: props.clientRect,\n });\n },\n\n onKeyDown(props) {\n return reactRenderer?.ref?.onKeyDown(props);\n },\n\n onExit() {\n !isNil(popup) && popup[0]?.destroy();\n reactRenderer?.destroy();\n reactRenderer = null;\n },\n };\n },\n};\n\nexport default EmojiSuggestion.configure({ suggestion: suggestionConfig });\n","import \"src/styles/editor/_image-skeleton.scss\";\n\nconst imageSkeletonContainer = document.createElement(\"div\");\nimageSkeletonContainer.classList.add(\"neeto-editor-image__skeleton\");\n\nconst imageSkeleton = document.createElement(\"div\");\nimageSkeleton.classList.add(\"skeleton\");\n\nimageSkeletonContainer.appendChild(imageSkeleton);\n\nexport const IMAGE_PLACEHOLDER = imageSkeletonContainer;\n\nexport const LARGE_IMAGE_ERROR = \"IMAGE_SIZE_LARGER\";\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';\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","import { useState } from \"react\";\n\nimport classNames from \"classnames\";\nimport { isPresent } from \"neetocist\";\nimport { Close } from \"neetoicons\";\nimport { Button, Modal, Spinner } from \"neetoui\";\nimport { isNil } from \"ramda\";\n\nconst ImagePreviewModal = ({ previewUrl, setPreviewUrl }) => {\n const [isLoading, setIsLoading] = useState(true);\n\n const handleImageLoad = () => setIsLoading(false);\n\n const handleClose = () => {\n setIsLoading(true);\n setPreviewUrl(null);\n };\n\n return (\n <Modal\n className=\"image-preview-neeto-ui-modal\"\n closeButton={false}\n isOpen={isPresent(previewUrl)}\n size=\"fullScreen\"\n onClose={handleClose}\n >\n <>\n {isLoading || isNil(previewUrl) ? (\n <div className=\"spinner-wrapper\">\n <Spinner className=\"spinner\" theme=\"light\" />\n </div>\n ) : (\n <Button\n className=\"image-preview-neeto-ui-modal__close-btn\"\n icon={Close}\n style=\"secondary\"\n onClick={handleClose}\n onKeyDown={e => e.key === \"Escape\" && handleClose}\n />\n )}\n <img\n alt=\"Preview\"\n src={previewUrl}\n className={classNames({\n \"display-none\": isLoading || isNil(previewUrl),\n })}\n onLoad={handleImageLoad}\n />\n </>\n </Modal>\n );\n};\n\nexport default ImagePreviewModal;\n","import { MenuHorizontal, AspectRatio, Down } from \"neetoicons\";\nimport { Button, Dropdown, Tooltip } from \"neetoui\";\n\nimport { buildImageOptions } from \"../../MediaUploader/utils\";\n\nconst { Menu: DropdownMenu, MenuItem } = Dropdown;\n\nconst Menu = ({\n align,\n border,\n editor,\n updateAttributes,\n deleteNode,\n showAspectRatio,\n}) => {\n const menuOptions = buildImageOptions(border, showAspectRatio);\n\n const handleClick = (alignPos, borderToggle) => {\n if (borderToggle) {\n updateAttributes({ border: !border });\n } else if (alignPos) {\n updateAttributes({ align: alignPos });\n } else {\n deleteNode();\n }\n editor.commands.focus();\n };\n\n return (\n <Dropdown\n buttonProps={{ className: \"neeto-editor__image-menu-btn\" }}\n buttonSize=\"large\"\n buttonStyle=\"tertiary\"\n className=\"neeto-editor__image-menu neeto-editor-bubble-menu\"\n icon={MenuHorizontal}\n position=\"top\"\n strategy=\"fixed\"\n theme=\"light neeto-editor-common-submenu-tippy-box\"\n >\n {menuOptions.map(\n ({ Icon, optionName, alignPos, type, items, border, borderToggle }) =>\n type === \"button\" ? (\n <Button\n className=\"neeto-editor-bubble-menu__item\"\n data-testid={`neeto-editor-image-menu-${optionName}`}\n icon={Icon}\n key={optionName}\n tooltipProps={{ content: optionName, position: \"top\" }}\n style={\n alignPos === align || (borderToggle && border)\n ? \"secondary\"\n : \"text\"\n }\n onClick={() => handleClick(alignPos, borderToggle)}\n />\n ) : (\n <Dropdown\n key={optionName}\n position=\"bottom-start\"\n strategy=\"fixed\"\n buttonProps={{\n tooltipProps: {\n content: optionName,\n position: \"top\",\n delay: [500],\n },\n }}\n customTarget={\n <MenuItem.Button className=\"neeto-editor-bubble-menu__item !relative\">\n <Tooltip content={optionName} position=\"top\">\n <div className=\"neeto-ui-flex neeto-ui-items-center neeto-ui-justify-center gap-x-1\">\n <AspectRatio size={18} />\n <Down size={14} />\n </div>\n </Tooltip>\n </MenuItem.Button>\n }\n onClick={event => event.stopPropagation()}\n >\n <DropdownMenu className=\"mb-0\">\n {items?.map(({ ratio, icon: Icon }) => (\n <MenuItem.Button\n key={ratio}\n onClick={() => updateAttributes({ aspectRatio: ratio })}\n >\n {Icon && <Icon size={18} />}\n {ratio}\n </MenuItem.Button>\n ))}\n </DropdownMenu>\n </Dropdown>\n )\n )}\n </Dropdown>\n );\n};\n\nexport default Menu;\n","import { useRef, useState } from \"react\";\n\nimport { NodeViewContent, NodeViewWrapper } from \"@tiptap/react\";\nimport classNames from \"classnames\";\nimport { isNotPresent } from \"neetocist\";\nimport { Spinner } from \"neetoui\";\nimport { isEmpty, mergeRight } from \"ramda\";\nimport { Resizable } from \"re-resizable\";\n\nimport ImagePreviewModal from \"./ImagePreviewModal\";\nimport Menu from \"./Menu\";\n\nconst ImageComponent = ({\n node,\n editor,\n getPos,\n updateAttributes,\n deleteNode,\n}) => {\n const { src, figheight, figwidth, align, alt, border } = node.attrs;\n\n const [captionWidth, setCaptionWidth] = useState(figwidth || 0);\n const [previewUrl, setPreviewUrl] = useState(null);\n const figureRef = useRef(null);\n\n const { view } = editor;\n let height = figheight;\n let width = figwidth;\n const caption = node?.content?.content?.[0]?.text || \"\";\n\n const editorElement = figureRef.current?.closest(\".neeto-editor\");\n const maxImageWidth = editorElement?.offsetWidth - 50;\n\n const handleResizeStop = (_event, _direction, ref) => {\n height = ref.offsetHeight;\n width = ref.offsetWidth;\n\n if (width > maxImageWidth) {\n width = maxImageWidth;\n const aspectRatio = ref.offsetHeight / ref.offsetWidth;\n height = width * aspectRatio;\n }\n setCaptionWidth(width);\n view.dispatch(\n view.state.tr.setNodeMarkup(\n getPos(),\n undefined,\n mergeRight(node.attrs, {\n figheight: height,\n figwidth: width,\n height,\n width,\n })\n )\n );\n editor.commands.focus();\n };\n\n if (isNotPresent(src) && isNotPresent(alt)) return null;\n\n return (\n <NodeViewWrapper\n data-testid=\"neeto-editor-image-wrapper\"\n className={classNames(\n \"neeto-editor__image-wrapper\",\n `neeto-editor__image--${align}`,\n { \"neeto-editor__image--bordered\": border }\n )}\n >\n <figure ref={figureRef}>\n <Menu {...{ align, border, deleteNode, editor, updateAttributes }} />\n {src ? (\n <Resizable\n lockAspectRatio\n className=\"neeto-editor__image\"\n minWidth=\"50px\"\n size={{ height, width }}\n onResizeStop={handleResizeStop}\n onResize={(_event, _direction, ref) =>\n setCaptionWidth(ref.offsetWidth)\n }\n >\n <img\n {...{ ...node.attrs, src }}\n alt={caption}\n data-border={border}\n onClick={e => {\n e.stopPropagation();\n setPreviewUrl(src);\n }}\n />\n </Resizable>\n ) : (\n <div className=\"neeto-editor__image-placeholder\">\n <Spinner />\n </div>\n )}\n <NodeViewContent\n as=\"figcaption\"\n className={classNames({ \"is-empty\": isEmpty(caption) })}\n style={{ width: `${captionWidth}px` }}\n />\n </figure>\n <ImagePreviewModal {...{ previewUrl, setPreviewUrl }} />\n </NodeViewWrapper>\n );\n};\n\nexport default ImageComponent;\n","import { mergeAttributes, Node } from \"@tiptap/core\";\nimport { Plugin } from \"@tiptap/pm/state\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport classnames from \"classnames\";\nimport { t } from \"i18next\";\nimport { globalProps } from \"neetocommons/initializers\";\nimport { Toastr } from \"neetoui\";\nimport { isEmpty } from \"ramda\";\n\nimport { DIRECT_UPLOAD_ENDPOINT } from \"src/common/constants\";\nimport DirectUpload from \"utils/DirectUpload\";\n\nimport { LARGE_IMAGE_ERROR } from \"./constants\";\nimport ImageComponent from \"./ImageComponent\";\n\nconst upload = async (file, url) => {\n if (file.size <= globalProps.endUserUploadedFileSizeLimitInMb * 1024 * 1024) {\n const uploader = new DirectUpload({ file, url });\n const response = await uploader.create();\n\n return response.data?.blob_url || response.blob_url;\n }\n\n throw new Error(LARGE_IMAGE_ERROR);\n};\n\nconst findNextTextPos = (editor, pos) => {\n const doc = editor.state.doc;\n let foundPos = -1;\n\n doc.nodesBetween(pos, doc.content.size, (node, nodePos) => {\n if (foundPos >= pos) return false;\n else if (!node.type.isTextblock) return true;\n foundPos = nodePos;\n\n return false;\n });\n\n return foundPos;\n};\n\nexport default Node.create({\n name: \"image\",\n\n addOptions() {\n return { HTMLAttributes: {}, openImageInNewTab: true };\n },\n\n group: \"block\",\n\n content: \"inline*\",\n\n draggable: false,\n\n isolating: true,\n\n addAttributes() {\n return {\n id: {\n default: null,\n parseHTML: element => element.getAttribute(\"id\"),\n },\n\n src: {\n default: null,\n parseHTML: element => element.querySelector(\"img\")?.getAttribute(\"src\"),\n },\n\n alt: {\n default: \"image\",\n parseHTML: element =>\n element.querySelector(\"img\")?.getAttribute(\"alt\") || \"image\",\n },\n\n figheight: {\n default: \"auto\",\n parseHTML: element =>\n element.querySelector(\"img\")?.getAttribute(\"figheight\"),\n },\n\n figwidth: {\n default: 500,\n parseHTML: element =>\n element.querySelector(\"img\")?.getAttribute(\"figwidth\"),\n },\n\n align: {\n default: \"left\",\n parseHTML: element =>\n element.querySelector(\"img\")?.getAttribute(\"align\"),\n },\n\n border: {\n default: true,\n parseHTML: element =>\n element.querySelector(\"img\")?.getAttribute(\"data-border\") === \"true\",\n },\n };\n },\n\n parseHTML() {\n return [{ tag: \"figure\" }];\n },\n\n renderHTML({ node, HTMLAttributes }) {\n const { align, src, figheight, figwidth, border } = node.attrs;\n\n if (!src) return [\"span\"];\n\n const openImageInNewTab = this.options.openImageInNewTab;\n\n const wrapperDivAttrs = {\n class: classnames(\n \"neeto-editor__image-wrapper\",\n `neeto-editor__image--${align}`,\n { \"neeto-editor__image--bordered\": border }\n ),\n };\n\n const wrapperLinkPointerEventsStyle = openImageInNewTab\n ? \"\"\n : \"pointer-events:none;\";\n\n const heightStyle = figheight === \"auto\" ? \"auto\" : `${figheight}px`;\n const wrapperLinkAttrs = {\n href: src,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n class: \"neeto-editor__image\",\n style: `height:${heightStyle};width:${figwidth}px;display:inline-block;${wrapperLinkPointerEventsStyle}`,\n };\n\n const captionAttrs = { style: `width:${figwidth}px;` };\n\n return [\n \"div\",\n wrapperDivAttrs,\n [\n \"figure\",\n this.options.HTMLAttributes,\n [\n \"a\",\n wrapperLinkAttrs,\n [\n \"img\",\n mergeAttributes(HTMLAttributes, {\n draggable: false,\n contenteditable: false,\n \"data-border\": border,\n }),\n ],\n ],\n [\"figcaption\", captionAttrs, 0],\n ],\n ];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(ImageComponent);\n },\n\n addCommands() {\n return {\n setFigure:\n ({ caption, ...attrs }) =>\n ({ chain }) =>\n chain()\n .insertContent({\n type: this.name,\n attrs,\n content: caption ? [{ type: \"text\", text: caption }] : [],\n })\n .run(),\n };\n },\n\n addKeyboardShortcuts() {\n return {\n Enter: () => {\n const head = this.editor.state.selection.$head;\n if (head.node().type.name !== \"image\") return false;\n\n const chain = this.editor.chain();\n const tail = head.after();\n\n let nextTextPos = findNextTextPos(this.editor, tail);\n if (nextTextPos < 0) {\n chain.insertContentAt(tail, { type: \"paragraph\", content: \"\" });\n nextTextPos = tail;\n }\n\n chain\n .setTextSelection(nextTextPos + 1) // Node boundary + 1\n .focus()\n .run();\n\n return true;\n },\n };\n },\n\n addProseMirrorPlugins() {\n return [\n new Plugin({\n props: {\n handleDOMEvents: {\n paste(view, event) {\n const {\n schema,\n selection: {\n $anchor: { pos },\n },\n } = view.state;\n\n // Microsoft Excel and a few other products might copy content as\n // both `text/plain` and `text/html`. If `text/plain` exists,\n // an early return will ensure that it fallbacks to tiptap's\n // default paste behavior.\n const text = event?.clipboardData?.getData(\"text/plain\");\n const hasFiles = event.clipboardData?.files?.length;\n\n if (!hasFiles) return;\n\n if (hasFiles && text) {\n event.preventDefault();\n const plainText =\n new DOMParser().parseFromString(text, \"text/html\").body\n .textContent ?? \"\";\n view.pasteText(plainText);\n\n return;\n }\n\n const images = Array.from(event.clipboardData.files).filter(\n file => /image/i.test(file.type)\n );\n\n if (isEmpty(images)) return;\n\n event.preventDefault();\n\n const currentPos = pos;\n\n images.forEach(async image => {\n let emptyImageNode;\n const id = Math.random().toString(36).substring(7);\n try {\n emptyImageNode = schema.nodes.image.create({\n id,\n src: \"\",\n alt: t(\"neetoEditor.attachments.uploading\"),\n });\n\n const tr = view.state.tr\n .insert(currentPos, emptyImageNode)\n .setMeta(\"addToHistory\", false);\n view.dispatch(tr);\n\n const url = await upload(image, DIRECT_UPLOAD_ENDPOINT);\n if (url) {\n const imageNode = schema.nodes.image.create({\n id,\n src: url,\n alt: \"image\",\n });\n\n const { tr, doc } = view.state;\n let nodePos = -1;\n doc.descendants((node, pos) => {\n if (node.type.name === \"image\" && node.attrs.id === id) {\n nodePos = pos;\n\n return false;\n }\n\n return true;\n });\n\n if (nodePos !== -1) {\n tr.replaceWith(\n nodePos,\n nodePos + emptyImageNode.nodeSize,\n imageNode\n ).setMeta(\"addToHistory\", false);\n view.dispatch(tr);\n }\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to insert the image\", error);\n\n const doc = view.state.doc;\n const tr = view.state.tr;\n doc.descendants((node, pos) => {\n if (node.type.name === \"image\" && node.attrs.id === id) {\n tr.delete(pos, pos + emptyImageNode.nodeSize).setMeta(\n \"addToHistory\",\n false\n );\n\n return false;\n }\n\n return true;\n });\n view.dispatch(tr);\n\n if (error.message === LARGE_IMAGE_ERROR) {\n Toastr.error(\n t(\"neetoEditor.error.imageSizeIsShouldBeLess\", {\n limit: globalProps.endUserUploadedFileSizeLimitInMb,\n })\n );\n } else {\n Toastr.error(t(\"neetoEditor.error.imageUploadFailed\"));\n }\n }\n });\n },\n },\n },\n }),\n ];\n },\n});\n","import { mergeAttributes, Node } from \"@tiptap/core\";\n\nexport default Node.create({\n name: \"figcaption\",\n\n content: \"text*\",\n\n selectable: false,\n\n draggable: false,\n\n parseHTML() {\n return [{ tag: \"figcaption\" }];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\"figcaption\", mergeAttributes(HTMLAttributes), 0];\n },\n});\n","import Italic from \"@tiptap/extension-italic\";\n\nexport default Italic.extend({\n addInputRules() {\n return [];\n },\n addPasteRules() {\n return [];\n },\n});\n","import { Extension } from \"@tiptap/core\";\n\nconst KeyboardShortcuts = ({ onSubmit, shortcuts, isBlockQuoteActive }) =>\n Extension.create({\n name: \"keyboard-shortcuts\",\n\n addKeyboardShortcuts() {\n return {\n \"Mod-Enter\": () => {\n onSubmit?.(this.editor.getHTML());\n\n return true;\n },\n \"Mod-Shift-b\": () => {\n if (isBlockQuoteActive) {\n this.editor.chain().focus().toggleBlockquote().run();\n\n return true;\n }\n\n return false;\n },\n ...shortcuts,\n };\n },\n });\n\nexport default {\n configure: ({ onSubmit, shortcuts, isBlockQuoteActive }) =>\n KeyboardShortcuts({ onSubmit, shortcuts, isBlockQuoteActive }),\n};\n","// 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 = 'aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3nlop4pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2o0dyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rckmsd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0stone5umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2olterskluwer11odside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2';\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 // Final possible email states\n const EmailColon = tt(Email$1, COLON); // URL followed by colon (potential port number here)\n /*const EmailColonPort = */\n ta(EmailColon, groups.numeric, Email); // URL followed by colon and port number\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 // Closing bracket component. This character WILL be included in the URL\n tt(UrlOpen, CLOSE, Url$1);\n\n // URL that beings 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);\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","import { combineTransactionSteps, getChangedRanges, findChildrenInRange, getMarksBetween, getAttributes, Mark, mergeAttributes, markPasteRule } from '@tiptap/core';\nimport { tokenize, find, registerCustomProtocol, reset } from 'linkifyjs';\nimport { Plugin, PluginKey } from '@tiptap/pm/state';\n\n/**\n * Check if the provided tokens form a valid link structure, which can either be a single link token\n * or a link token surrounded by parentheses or square brackets.\n *\n * This ensures that only complete and valid text is hyperlinked, preventing cases where a valid\n * top-level domain (TLD) is immediately followed by an invalid character, like a number. For\n * example, with the `find` method from Linkify, entering `example.com1` would result in\n * `example.com` being linked and the trailing `1` left as plain text. By using the `tokenize`\n * method, we can perform more comprehensive validation on the input text.\n */\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}\n/**\n * This plugin allows you to automatically add links to your editor.\n * @param options The plugin options\n * @returns The plugin instance\n */\nfunction autolink(options) {\n return new Plugin({\n key: new PluginKey('autolink'),\n appendTransaction: (transactions, oldState, newState) => {\n /**\n * Does the transaction change the document?\n */\n const docChanges = transactions.some(transaction => transaction.docChanged) && !oldState.doc.eq(newState.doc);\n /**\n * Prevent autolink if the transaction is not a document change or if the transaction has the meta `preventAutolink`.\n */\n const preventAutolink = transactions.some(transaction => transaction.getMeta('preventAutolink'));\n /**\n * Prevent autolink if the transaction is not a document change\n * or if the transaction has the meta `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 // Now let’s see if we can add new links.\n const nodesInChangedRanges = findChildrenInRange(newState.doc, newRange, node => node.isTextblock);\n let textBlock;\n let textBeforeWhitespace;\n if (nodesInChangedRanges.length > 1) {\n // Grab the first node within the changed ranges (ex. the first of two paragraphs when hitting enter).\n textBlock = nodesInChangedRanges[0];\n textBeforeWhitespace = newState.doc.textBetween(textBlock.pos, textBlock.pos + textBlock.node.nodeSize, undefined, ' ');\n }\n else if (nodesInChangedRanges.length\n // We want to make sure to include the block seperator argument to treat hard breaks like spaces.\n && newState.doc.textBetween(newRange.from, newRange.to, ' ', ' ').endsWith(' ')) {\n textBlock = nodesInChangedRanges[0];\n textBeforeWhitespace = newState.doc.textBetween(textBlock.pos, newRange.to, undefined, ' ');\n }\n if (textBlock && textBeforeWhitespace) {\n const wordsBeforeWhitespace = textBeforeWhitespace.split(' ').filter(s => s !== '');\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(t => t.toObject(options.defaultProtocol));\n if (!isValidLinkStructure(linksBeforeSpace)) {\n return false;\n }\n linksBeforeSpace\n .filter(link => link.isLink)\n // Calculate link position.\n .map(link => ({\n ...link,\n from: lastWordAndBlockOffset + link.start + 1,\n to: lastWordAndBlockOffset + link.end + 1,\n }))\n // ignore link inside code mark\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 })\n // validate link\n .filter(link => options.validate(link.value))\n // Add link mark.\n .forEach(link => {\n if (getMarksBetween(link.from, link.to, newState.doc).some(item => item.mark.type === options.type)) {\n return;\n }\n tr.addMark(link.from, link.to, options.type.create({\n href: link.href,\n }));\n });\n }\n });\n if (!tr.steps.length) {\n return;\n }\n return tr;\n },\n });\n}\n\nfunction clickHandler(options) {\n return new Plugin({\n key: new PluginKey('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 a = event.target;\n const els = [];\n while (a.nodeName !== 'DIV') {\n els.push(a);\n a = a.parentNode;\n }\n if (!els.find(value => value.nodeName === 'A')) {\n return false;\n }\n const attrs = getAttributes(view.state, options.type.name);\n const link = event.target;\n const href = (_a = link === null || link === void 0 ? void 0 : link.href) !== null && _a !== void 0 ? _a : attrs.href;\n const target = (_b = link === null || link === void 0 ? void 0 : link.target) !== null && _b !== void 0 ? _b : attrs.target;\n if (link && href) {\n window.open(href, target);\n return true;\n }\n return false;\n },\n },\n });\n}\n\nfunction pasteHandler(options) {\n return new Plugin({\n key: new PluginKey('handlePasteLink'),\n props: {\n handlePaste: (view, event, slice) => {\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(item => item.isLink && item.value === textContent);\n if (!textContent || !link) {\n return false;\n }\n options.editor.commands.setMark(options.type, {\n href: link.href,\n });\n return true;\n },\n },\n });\n}\n\nconst pasteRegex = /https?:\\/\\/(?:www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z]{2,}\\b(?:[-a-zA-Z0-9@:%._+~#=?!&/]*)(?:[-a-zA-Z0-9@:%._+~#=?!&/]*)/gi;\n// From DOMPurify\n// https://github.com/cure53/DOMPurify/blob/main/src/regexp.js\n// eslint-disable-next-line no-control-regex\nconst ATTR_WHITESPACE = /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g;\nfunction isAllowedUri(uri, protocols) {\n const allowedProtocols = ['http', 'https', 'ftp', 'ftps', 'mailto', 'tel', 'callto', 'sms', 'cid', 'xmpp'];\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 // eslint-disable-next-line no-useless-escape\n return !uri || uri.replace(ATTR_WHITESPACE, '').match(new RegExp(`^(?:(?:${allowedProtocols.join('|')}):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))`, 'i'));\n}\n/**\n * This extension allows you to create links.\n * @see https://www.tiptap.dev/api/marks/link\n */\nconst Link = Mark.create({\n name: 'link',\n priority: 1000,\n keepOnSplit: false,\n exitable: true,\n onCreate() {\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 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 validate: url => !!url,\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 };\n },\n parseHTML() {\n return [{\n tag: 'a[href]',\n getAttrs: dom => {\n const href = dom.getAttribute('href');\n // prevent XSS attacks\n if (!href || !isAllowedUri(href, this.options.protocols)) {\n return false;\n }\n return null;\n },\n }];\n },\n renderHTML({ HTMLAttributes }) {\n // prevent XSS attacks\n if (!isAllowedUri(HTMLAttributes.href, this.options.protocols)) {\n // strip out the href\n return ['a', mergeAttributes(this.options.HTMLAttributes, { ...HTMLAttributes, href: '' }), 0];\n }\n return ['a', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];\n },\n addCommands() {\n return {\n setLink: attributes => ({ chain }) => {\n return chain().setMark(this.name, attributes).setMeta('preventAutolink', true).run();\n },\n toggleLink: attributes => ({ chain }) => {\n return chain()\n .toggleMark(this.name, attributes, { extendEmptyMarkRange: true })\n .setMeta('preventAutolink', true)\n .run();\n },\n unsetLink: () => ({ chain }) => {\n return chain()\n .unsetMark(this.name, { extendEmptyMarkRange: true })\n .setMeta('preventAutolink', true)\n .run();\n },\n };\n },\n addPasteRules() {\n return [\n markPasteRule({\n find: text => {\n const foundLinks = [];\n if (text) {\n const { validate } = this.options;\n const links = find(text).filter(item => item.isLink && validate(item.value));\n if (links.length) {\n links.forEach(link => (foundLinks.push({\n text: link.value,\n data: {\n href: link.href,\n },\n index: link.start,\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 || _a === void 0 ? void 0 : _a.href,\n };\n },\n }),\n ];\n },\n addProseMirrorPlugins() {\n const plugins = [];\n if (this.options.autolink) {\n plugins.push(autolink({\n type: this.type,\n defaultProtocol: this.options.defaultProtocol,\n validate: this.options.validate,\n }));\n }\n if (this.options.openOnClick === true) {\n plugins.push(clickHandler({\n type: this.type,\n }));\n }\n if (this.options.linkOnPaste) {\n plugins.push(pasteHandler({\n editor: this.editor,\n defaultProtocol: this.options.defaultProtocol,\n type: this.type,\n }));\n }\n return plugins;\n },\n});\n\nexport { Link, Link as default, pasteRegex };\n//# sourceMappingURL=index.js.map\n","export const LINK_MARKDOWN_INPUT_REGEX =\n /(?:^|\\s)\\[([^\\]]*)?\\]\\((\\S+)(?: [\"“](.+)[\"”])?\\)$/i;\n","import { InputRule, markInputRule, mergeAttributes } from \"@tiptap/core\";\nimport { Link } from \"@tiptap/extension-link\";\n\nimport { LINK_MARKDOWN_INPUT_REGEX } from \"./constants\";\n\nconst linkInputRule = config => {\n const defaultMarkInputRule = markInputRule(config);\n\n return new InputRule({\n find: config.find,\n handler(props) {\n try {\n const { tr } = props.state;\n defaultMarkInputRule.handler(props);\n tr.setMeta(\"preventAutolink\", true);\n } catch (error) {\n // https://app.honeybadger.io/projects/94805/faults/108936285\n if (!(error instanceof RangeError)) throw error;\n }\n },\n });\n};\n\nexport default Link.extend({\n inclusive: false,\n addAttributes() {\n return {\n ...this.parent?.(),\n title: { default: null },\n \"data-neeto-kb-article\": {\n default: null,\n parseHTML: element => element.getAttribute(\"data-neeto-kb-article\"),\n renderHTML: attributes =>\n attributes[\"data-neeto-kb-article\"]\n ? { \"data-neeto-kb-article\": attributes[\"data-neeto-kb-article\"] }\n : {},\n },\n \"data-article-id\": {\n default: null,\n parseHTML: element => element.getAttribute(\"data-article-id\"),\n renderHTML: attributes =>\n attributes[\"data-article-id\"]\n ? { \"data-article-id\": attributes[\"data-article-id\"] }\n : {},\n },\n \"data-article-deleted\": {\n default: null,\n parseHTML: element => element.getAttribute(\"data-article-deleted\"),\n renderHTML: attributes =>\n attributes[\"data-article-deleted\"]\n ? { \"data-article-deleted\": attributes[\"data-article-deleted\"] }\n : {},\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'a[href]:not([data-type=\"button\"]):not([href *= \"javascript:\" i])',\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\n \"a\",\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, {\n class: \"link\",\n }),\n 0,\n ];\n },\n\n addInputRules() {\n return [\n linkInputRule({\n find: LINK_MARKDOWN_INPUT_REGEX,\n type: this.type,\n getAttributes(match) {\n return {\n title: match.pop()?.trim(),\n href: match.pop()?.trim(),\n };\n },\n }),\n ];\n },\n});\n","import { Node, mergeAttributes } from '@tiptap/core';\nimport { PluginKey } from '@tiptap/pm/state';\nimport Suggestion from '@tiptap/suggestion';\n\n/**\n * The plugin key for the mention plugin.\n * @default 'mention'\n */\nconst MentionPluginKey = new PluginKey('mention');\n/**\n * This extension allows you to insert mentions into the editor.\n * @see https://www.tiptap.dev/api/extensions/mention\n */\nconst Mention = Node.create({\n name: 'mention',\n addOptions() {\n return {\n HTMLAttributes: {},\n renderText({ options, node }) {\n var _a;\n return `${options.suggestion.char}${(_a = node.attrs.label) !== null && _a !== void 0 ? _a : node.attrs.id}`;\n },\n deleteTriggerWithBackspace: false,\n renderHTML({ options, node }) {\n var _a;\n return [\n 'span',\n mergeAttributes(this.HTMLAttributes, options.HTMLAttributes),\n `${options.suggestion.char}${(_a = node.attrs.label) !== null && _a !== void 0 ? _a : node.attrs.id}`,\n ];\n },\n suggestion: {\n char: '@',\n pluginKey: MentionPluginKey,\n command: ({ editor, range, props }) => {\n var _a, _b;\n // increase range.to by one when the next node is of type \"text\"\n // and starts with a space character\n const nodeAfter = editor.view.state.selection.$to.nodeAfter;\n const overrideSpace = (_a = nodeAfter === null || nodeAfter === void 0 ? void 0 : nodeAfter.text) === null || _a === void 0 ? void 0 : _a.startsWith(' ');\n if (overrideSpace) {\n range.to += 1;\n }\n editor\n .chain()\n .focus()\n .insertContentAt(range, [\n {\n type: this.name,\n attrs: props,\n },\n {\n type: 'text',\n text: ' ',\n },\n ])\n .run();\n (_b = window.getSelection()) === null || _b === void 0 ? void 0 : _b.collapseToEnd();\n },\n allow: ({ state, range }) => {\n const $from = state.doc.resolve(range.from);\n const type = state.schema.nodes[this.name];\n const allow = !!$from.parent.type.contentMatch.matchType(type);\n return allow;\n },\n },\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 };\n },\n parseHTML() {\n return [\n {\n tag: `span[data-type=\"${this.name}\"]`,\n },\n ];\n },\n renderHTML({ node, HTMLAttributes }) {\n if (this.options.renderLabel !== undefined) {\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 }),\n ];\n }\n const mergedOptions = { ...this.options };\n mergedOptions.HTMLAttributes = mergeAttributes({ 'data-type': this.name }, this.options.HTMLAttributes, HTMLAttributes);\n const html = this.options.renderHTML({\n options: mergedOptions,\n node,\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 renderText({ node }) {\n if (this.options.renderLabel !== undefined) {\n console.warn('renderLabel is deprecated use renderText and renderHTML instead');\n return this.options.renderLabel({\n options: this.options,\n node,\n });\n }\n return this.options.renderText({\n options: this.options,\n node,\n });\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 state.doc.nodesBetween(anchor - 1, anchor, (node, pos) => {\n if (node.type.name === this.name) {\n isMention = true;\n tr.insertText(this.options.deleteTriggerWithBackspace ? '' : this.options.suggestion.char || '', pos, pos + node.nodeSize);\n return false;\n }\n });\n return isMention;\n }),\n };\n },\n addProseMirrorPlugins() {\n return [\n Suggestion({\n editor: this.editor,\n ...this.options.suggestion,\n }),\n ];\n },\n});\n\nexport { Mention, MentionPluginKey, Mention as default };\n//# sourceMappingURL=index.js.map\n","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 React from \"react\";\n\nimport classNames from \"classnames\";\nimport { t } from \"i18next\";\nimport { Avatar, Dropdown, Typography } from \"neetoui\";\nimport { isEmpty } from \"ramda\";\n\nimport { scrollHandler } from \"utils/scrollhandler\";\n\nexport class MentionList extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = { selectedIndex: 0 };\n this.mentionRef = React.createRef();\n }\n\n componentDidUpdate(prevProps) {\n const { items } = this.props;\n if (items !== prevProps.items) {\n this.setState({ selectedIndex: 0 });\n }\n\n scrollHandler({\n wrapperRef: this.mentionRef,\n index: this.state.selectedIndex,\n });\n }\n\n selectItem = index => {\n const { items, command } = this.props;\n const item = items[index];\n\n if (item) {\n command({ label: item.name, id: item.key });\n }\n };\n\n upHandler = () => {\n const { items } = this.props;\n this.setState(prevState => {\n const { selectedIndex } = prevState;\n const nextSelectedIndex =\n (selectedIndex + items.length - 1) % items.length;\n\n return { selectedIndex: nextSelectedIndex };\n });\n };\n\n downHandler = () => {\n const { items } = this.props;\n this.setState(prevState => {\n const { selectedIndex } = prevState;\n const nextSelectedIndex = (selectedIndex + 1) % items.length;\n\n return { selectedIndex: nextSelectedIndex };\n });\n };\n\n enterHandler = () => {\n const { selectedIndex } = this.state;\n this.selectItem(selectedIndex);\n };\n\n tabHandler = () => {\n const { selectedIndex } = this.state;\n this.selectItem(selectedIndex);\n };\n\n onKeyDown = ({ event }) => {\n const keyDownHandlers = {\n ArrowUp: this.upHandler,\n ArrowDown: this.downHandler,\n Enter: this.enterHandler,\n Tab: this.tabHandler,\n };\n\n if (Object.prototype.hasOwnProperty.call(keyDownHandlers, event.key)) {\n keyDownHandlers[event.key]();\n\n return true;\n }\n\n return false;\n };\n\n render() {\n const { selectedIndex } = this.state;\n const { items } = this.props;\n const { Menu, MenuItem } = Dropdown;\n\n if (isEmpty(items)) {\n return (\n <div className=\"neeto-editor-mentions__wrapper\">\n <p className=\"neeto-editor-mentions__item\">\n {t(\"neetoEditor.error.noResults\")}\n </p>\n </div>\n );\n }\n\n return (\n <div className=\"neeto-ui-dropdown__popup\">\n <Menu\n className=\"neeto-editor-mentions__wrapper\"\n data-testid=\"neeto-editor-mention-list\"\n ref={this.mentionRef}\n >\n {items.map(({ key, name, imageUrl }, index) => (\n <MenuItem.Button\n data-testid={`neeto-editor-mention-list-${name}`}\n key={key}\n type=\"button\"\n className={classNames(\"neeto-editor-mentions__item\", {\n active: index === selectedIndex,\n })}\n onClick={() => this.selectItem(index)}\n >\n <Avatar size=\"small\" user={{ name, imageUrl }} />\n <Typography style=\"body2\">{name}</Typography>\n </MenuItem.Button>\n ))}\n </Menu>\n </div>\n );\n }\n}\n","export const createMentionSuggestions =\n (mentions = []) =>\n ({ query = \"\" }) => {\n if (!query) {\n return mentions.slice(0, 10);\n }\n\n return mentions\n .filter(mention =>\n mention.name\n .replace(/\\s/g, \"\")\n .toLowerCase()\n .includes(query.trim().toLowerCase())\n )\n .slice(0, 10);\n };\n","import Mention from \"@tiptap/extension-mention\";\nimport { ReactRenderer } from \"@tiptap/react\";\nimport tippy from \"tippy.js\";\n\nimport { MentionList } from \"./MentionList\";\nimport { createMentionSuggestions } from \"./utils\";\n\nconst suggestion = {\n render: () => {\n let reactRenderer;\n let popup;\n\n return {\n onStart: props => {\n reactRenderer = new ReactRenderer(MentionList, {\n props,\n editor: props.editor,\n });\n\n popup = tippy(\"body\", {\n theme: \"light neeto-editor-mentions-tooltip\",\n getReferenceClientRect: props.clientRect,\n appendTo: () => document.body,\n content: reactRenderer.element,\n showOnCreate: true,\n interactive: true,\n trigger: \"manual\",\n placement: \"bottom-start\",\n zIndex: 99999,\n arrow: false,\n });\n },\n\n onUpdate(props) {\n reactRenderer.updateProps(props);\n\n popup[0].setProps({\n getReferenceClientRect: props.clientRect,\n });\n },\n\n onKeyDown(props) {\n if (props.event.key === \"Escape\") {\n popup[0].hide();\n\n return true;\n }\n\n return reactRenderer.ref?.onKeyDown(props);\n },\n\n onExit() {\n popup?.[0]?.destroy();\n reactRenderer?.destroy();\n },\n };\n },\n};\n\nconst Mentions = Mention.extend({\n addCommands() {\n return {\n setMention:\n ({ id, label }) =>\n ({ chain }) => {\n chain()\n .focus()\n .insertContent([\n { type: this.name, attrs: { id, label } },\n { type: \"text\", text: \" \" },\n ])\n .run();\n },\n };\n },\n});\n\nexport default {\n configure: ({ suggestion: suggestionConfig = {}, ...otherConfig }) =>\n Mentions.configure({\n ...otherConfig,\n suggestion: { ...suggestion, ...suggestionConfig },\n }),\n};\n\nexport { createMentionSuggestions };\n","import { OrderedList } from \"@tiptap/extension-list\";\n\nexport default OrderedList.configure({\n HTMLAttributes: { class: \"orderedList\" },\n itemTypeName: \"listItem\",\n});\n","import { Extension } from \"@tiptap/core\";\nimport { Plugin } from \"@tiptap/pm/state\";\nimport { Decoration, DecorationSet } from \"@tiptap/pm/view\";\nimport { t } from \"i18next\";\n\nconst Placeholder = Extension.create({\n name: \"placeholder\",\n\n addOptions() {\n return {\n excludeNodeTypes: [\"variable\", \"codeBlock\"],\n emptyEditorClass: \"is-editor-empty\",\n emptyNodeClass: \"is-empty\",\n placeholder: t(\"neetoEditor.placeholders.writeSomething\"),\n slashCommandsPlaceholder: t(\n \"neetoEditor.placeholders.typeSlashForCommands\"\n ),\n showOnlyWhenEditable: true,\n showOnlyCurrent: false,\n includeChildren: false,\n };\n },\n\n addProseMirrorPlugins() {\n return [\n new Plugin({\n props: {\n decorations: ({ doc, selection }) => {\n const active =\n this.editor.isEditable || !this.options.showOnlyWhenEditable;\n const { anchor } = selection;\n const decorations = [];\n\n if (!active) {\n return null;\n }\n\n doc.descendants((node, pos) => {\n const hasAnchor = anchor >= pos && anchor <= pos + node.nodeSize;\n const isEmpty = !node.isLeaf && !node.childCount;\n\n const isExcluded = this.options.excludeNodeTypes.includes(\n node.type.name\n );\n\n if (\n (hasAnchor || !this.options.showOnlyCurrent) &&\n !isExcluded &&\n isEmpty\n ) {\n const classes = [this.options.emptyNodeClass];\n\n let placeholderText = this.options.placeholder;\n\n if (this.editor.isEmpty) {\n classes.push(this.options.emptyEditorClass);\n\n if (\n this.options.isSlashCommandsActive &&\n !this.options.placeholder\n ) {\n placeholderText = this.options.slashCommandsPlaceholder;\n }\n } else if (\n hasAnchor &&\n this.options.isSlashCommandsActive &&\n node.type.name === \"paragraph\"\n ) {\n classes.push(\"is-current-slash-placeholder\");\n placeholderText = this.options.slashCommandsPlaceholder;\n }\n\n const decoration = Decoration.node(pos, pos + node.nodeSize, {\n class: classes.join(\" \"),\n \"data-placeholder\": placeholderText,\n });\n decorations.push(decoration);\n }\n\n return this.options.includeChildren;\n });\n\n return DecorationSet.create(doc, decorations);\n },\n },\n }),\n ];\n },\n});\n\nexport default Placeholder;\n","import Document from \"@tiptap/extension-document\";\nimport { Plugin, PluginKey } from \"@tiptap/pm/state\";\nimport { Decoration, DecorationSet } from \"@tiptap/pm/view\";\n\nexport default Document.extend({\n name: \"selectionDecorator\",\n addProseMirrorPlugins() {\n return [\n new Plugin({\n key: new PluginKey(\"selectionDecorator\"),\n state: {\n init() {\n return {\n decorations: DecorationSet.empty,\n selectedTextDecoration: null,\n };\n },\n apply(tr, oldState) {\n const { doc, selection } = tr;\n let { decorations, selectedTextDecoration } = oldState;\n\n if (selectedTextDecoration) {\n decorations = decorations.remove([selectedTextDecoration]);\n }\n\n if (!selection.empty) {\n selectedTextDecoration = Decoration.inline(\n selection.from,\n selection.to,\n { class: \"selected-text\" }\n );\n decorations = decorations.add(doc, [selectedTextDecoration]);\n } else {\n selectedTextDecoration = null;\n }\n\n return { decorations, selectedTextDecoration };\n },\n },\n props: {\n decorations(state) {\n return this.getState(state).decorations;\n },\n },\n }),\n ];\n },\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","import React, { forwardRef } from \"react\";\n\nimport Tippy from \"@tippyjs/react\";\nimport classnames from \"classnames\";\nimport { isNotPresent } from \"neetocist\";\n\nimport { scrollHandler } from \"utils/scrollhandler\";\n\nclass Menu extends React.Component {\n constructor(props) {\n super(props);\n this.state = { selectedIndex: 0 };\n this.menuRef = React.createRef();\n }\n\n componentDidMount() {\n const { menuIndex, activeMenuIndex } = this.props;\n const isCurrentMenuActive = menuIndex === activeMenuIndex;\n if (isCurrentMenuActive) {\n document.addEventListener(\"keydown\", this.keydownHandler);\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener(\"keydown\", this.keydownHandler);\n }\n\n componentDidUpdate(oldProps) {\n const { items, menuIndex, activeMenuIndex } = this.props;\n const isCurrentMenuActive = menuIndex === activeMenuIndex;\n\n if (items !== oldProps.items) this.setState({ selectedIndex: 0 });\n\n scrollHandler({\n wrapperRef: this.menuRef,\n index: this.state.selectedIndex,\n });\n\n if (isCurrentMenuActive) {\n document.addEventListener(\"keydown\", this.keydownHandler);\n } else document.removeEventListener(\"keydown\", this.keydownHandler);\n }\n\n keydownHandler = event => {\n const listeners = {\n Enter: this.enterHandler,\n ArrowUp: this.upHandler,\n ArrowDown: this.downHandler,\n ArrowLeft: this.leftArrowHandler,\n ArrowRight: this.rightArrowHandler,\n };\n\n if (event.key in listeners) listeners[event.key](event);\n };\n\n selectItem = index => {\n const { items, editor, range } = this.props;\n const selectedItem = items[index];\n const hasCommand = selectedItem && selectedItem.command;\n if (hasCommand) selectedItem.command({ editor, range });\n };\n\n upHandler = () => {\n const { items } = this.props;\n const { selectedIndex } = this.state;\n this.setState({\n selectedIndex: (selectedIndex + items.length - 1) % items.length,\n });\n };\n\n downHandler = () => {\n const { items } = this.props;\n const { selectedIndex } = this.state;\n this.setState({ selectedIndex: (selectedIndex + 1) % items.length });\n };\n\n enterHandler = () => {\n const { selectedIndex } = this.state;\n this.selectItem(selectedIndex);\n };\n\n leftArrowHandler = () => {\n const { menuIndex, setActiveMenuIndex } = this.props;\n if (menuIndex > 0) setActiveMenuIndex(menuIndex - 1);\n };\n\n rightArrowHandler = () => {\n const { menuIndex, setActiveMenuIndex, items } = this.props;\n const { selectedIndex } = this.state;\n const selectedItem = items[selectedIndex];\n const hasSubItems = selectedItem && !isNotPresent(selectedItem.items);\n if (hasSubItems) setActiveMenuIndex(menuIndex + 1);\n };\n\n render() {\n const { items, menuIndex, activeMenuIndex } = this.props;\n const { selectedIndex } = this.state;\n const isCurrentMenuActive = menuIndex === activeMenuIndex;\n\n return (\n <div\n className=\"neeto-editor-slash-commands__wrapper\"\n data-testid=\"neeto-editor-slash-commands-wrapper\"\n ref={this.menuRef}\n >\n {items.map((item, index) => {\n const isLeafNode = isNotPresent(item.items);\n\n const nodeElement = (\n <MenuItem\n {...{ index, item }}\n key={item.optionName}\n selectItem={() => this.selectItem(index)}\n selectedIndex={isCurrentMenuActive ? selectedIndex : -1}\n onHover={() => this.setState({ selectedIndex: index })}\n />\n );\n\n if (isLeafNode) return nodeElement;\n\n return (\n <Tippy\n interactive\n key={item.optionName}\n placement=\"right\"\n theme=\"light neeto-editor-slash-commands-tippy\"\n visible={selectedIndex === index}\n content={\n <Menu\n {...this.props}\n items={item.items}\n menuIndex={menuIndex + 1}\n />\n }\n onCreate={({ popper }) => (popper.style.width = \"max-content\")}\n onHide={() => {\n this.isSubmenuOpened = false;\n }}\n onShow={() => {\n this.isSubmenuOpened = true;\n }}\n >\n {nodeElement}\n </Tippy>\n );\n })}\n </div>\n );\n }\n}\n\n// eslint-disable-next-line react/display-name\nconst MenuItem = forwardRef(\n ({ item, selectedIndex, index, selectItem, onHover }, ref) => {\n const { Icon } = item;\n\n return (\n <button\n {...{ ref }}\n data-testid={`neeto-editor-command-list-item-${index}`}\n className={classnames(\"neeto-editor-slash-commands__item\", {\n active: index === selectedIndex,\n })}\n onClick={selectItem}\n onMouseEnter={onHover}\n >\n {Icon && <Icon size={20} />}\n <span className=\"neeto-editor-slash-commands__item-content\">\n <span\n className=\"neeto-editor-slash-commands__item-title\"\n data-testid=\"neeto-editor-command-list-item-block-heading\"\n >\n {item.title}\n </span>\n </span>\n </button>\n );\n }\n);\n\nexport default Menu;\n","import React from \"react\";\n\nimport Menu from \"./Menu\";\n\nclass CommandsList extends React.Component {\n state = { activeMenuIndex: 0 };\n\n onKeyDown = ({ event }) =>\n [\"Enter\", \"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"].includes(\n event.key\n );\n\n setActiveMenuIndex = index => this.setState({ activeMenuIndex: index });\n\n render() {\n return (\n <Menu\n {...this.props}\n activeMenuIndex={this.state.activeMenuIndex}\n items={this.props.items}\n menuIndex={0}\n setActiveMenuIndex={this.setActiveMenuIndex}\n />\n );\n }\n}\n\nexport default CommandsList;\n","import { EDITOR_OPTIONS } from \"common/constants\";\nimport { t } from \"i18next\";\nimport { noop } from \"neetocist\";\nimport {\n TextP,\n TextH1,\n TextH2,\n TextH3,\n TextH4,\n TextH5,\n ListDot,\n ListNumber,\n Checkbox,\n Blockquote,\n ImageUpload,\n CodeBlock,\n Smiley,\n Minus,\n Video,\n Notes,\n Column,\n TextBold,\n TextItalic,\n Underline,\n Link,\n Attachment,\n MessageSquare,\n File,\n} from \"neetoicons\";\n\nexport const MENU_ITEMS = [\n {\n optionName: EDITOR_OPTIONS.PARAGRAPH,\n title: t(\"neetoEditor.menu.normalText\"),\n description: t(\"neetoEditor.menu.normalTextDescription\"),\n Icon: TextP,\n command: ({ editor, range }) => {\n editor.chain().focus().deleteRange(range).setNode(\"paragraph\").run();\n },\n },\n {\n optionName: EDITOR_OPTIONS.BOLD,\n title: t(\"neetoEditor.menu.bold\"),\n description: t(\"neetoEditor.menu.boldDescription\"),\n Icon: TextBold,\n command: ({ editor, range }) => {\n editor.chain().focus().deleteRange(range).toggleBold().run();\n },\n },\n {\n optionName: EDITOR_OPTIONS.ITALIC,\n title: t(\"neetoEditor.menu.italic\"),\n description: t(\"neetoEditor.menu.italicDescription\"),\n Icon: TextItalic,\n command: ({ editor, range }) => {\n editor.chain().focus().deleteRange(range).toggleItalic().run();\n },\n },\n {\n optionName: EDITOR_OPTIONS.UNDERLINE,\n title: t(\"neetoEditor.menu.underline\"),\n description: t(\"neetoEditor.menu.underlineDescription\"),\n Icon: Underline,\n command: ({ editor, range }) => {\n editor.chain().focus().deleteRange(range).toggleUnderline().run();\n },\n },\n {\n optionName: EDITOR_OPTIONS.H1,\n title: t(\"neetoEditor.menu.heading1\"),\n description: t(\"neetoEditor.menu.h1Description\"),\n Icon: TextH1,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setNode(\"heading\", { level: 1 })\n .run();\n },\n },\n {\n optionName: EDITOR_OPTIONS.H2,\n title: t(\"neetoEditor.menu.heading2\"),\n description: t(\"neetoEditor.menu.h2Description\"),\n Icon: TextH2,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setNode(\"heading\", { level: 2 })\n .run();\n },\n },\n {\n optionName: EDITOR_OPTIONS.H3,\n title: t(\"neetoEditor.menu.heading3\"),\n description: t(\"neetoEditor.menu.h3Description\"),\n Icon: TextH3,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setNode(\"heading\", { level: 3 })\n .run();\n },\n },\n {\n optionName: EDITOR_OPTIONS.H4,\n title: t(\"neetoEditor.menu.heading4\"),\n description: t(\"neetoEditor.menu.h4Description\"),\n Icon: TextH4,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setNode(\"heading\", { level: 4 })\n .run();\n },\n },\n {\n optionName: EDITOR_OPTIONS.H5,\n title: t(\"neetoEditor.menu.heading5\"),\n description: t(\"neetoEditor.menu.h5Description\"),\n Icon: TextH5,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setNode(\"heading\", { level: 5 })\n .run();\n },\n },\n {\n optionName: EDITOR_OPTIONS.LIST_ORDERED,\n title: t(\"neetoEditor.menu.numberedList\"),\n description: t(\"neetoEditor.menu.numberedListDescription\"),\n Icon: ListNumber,\n command: ({ editor, range }) => {\n editor.chain().focus().deleteRange(range).toggleOrderedList().run();\n },\n },\n {\n optionName: EDITOR_OPTIONS.LIST_BULLETS,\n title: t(\"neetoEditor.menu.bulletList\"),\n description: t(\"neetoEditor.menu.bulletListDescription\"),\n Icon: ListDot,\n command: ({ editor, range }) => {\n editor.chain().focus().deleteRange(range).toggleBulletList().run();\n },\n },\n {\n optionName: EDITOR_OPTIONS.LINK,\n title: t(\"neetoEditor.menu.link\"),\n description: t(\"neetoEditor.menu.linkDescription\"),\n Icon: Link,\n command: noop,\n },\n {\n optionName: EDITOR_OPTIONS.NEETO_KB_ARTICLE,\n title: t(\"neetoEditor.menu.linkToNeetoKbArticle\"),\n description: t(\"neetoEditor.menu.linkToNeetoKbArticleDescription\"),\n Icon: File,\n command: noop,\n },\n {\n optionName: EDITOR_OPTIONS.ATTACHMENTS,\n title: t(\"neetoEditor.menu.file\"),\n description: t(\"neetoEditor.menu.attachmentsDescription\"),\n Icon: Attachment,\n command: noop,\n },\n {\n optionName: EDITOR_OPTIONS.TODO_LIST,\n title: t(\"neetoEditor.menu.todoList\"),\n description: t(\"neetoEditor.menu.todoListDescription\"),\n Icon: Checkbox,\n command: ({ editor, range }) => {\n editor.chain().focus().deleteRange(range).toggleTaskList().run();\n },\n },\n {\n optionName: EDITOR_OPTIONS.IMAGE_UPLOAD,\n title: t(\"neetoEditor.menu.image\"),\n description: t(\"neetoEditor.menu.imageDescription\"),\n Icon: ImageUpload,\n command: noop,\n },\n {\n optionName: EDITOR_OPTIONS.VIDEO_UPLOAD,\n title: t(\"neetoEditor.menu.video\"),\n description: t(\"neetoEditor.menu.videoDescription\"),\n Icon: Video,\n command: noop,\n },\n {\n optionName: EDITOR_OPTIONS.BLOCKQUOTE,\n title: t(\"neetoEditor.menu.blockQuote\"),\n description: t(\"neetoEditor.menu.blockQuoteDescription\"),\n Icon: Blockquote,\n command: ({ editor, range }) => {\n editor.chain().focus().deleteRange(range).toggleBlockquote().run();\n },\n },\n {\n optionName: EDITOR_OPTIONS.CODE_BLOCK,\n title: t(\"neetoEditor.menu.codeBlock\"),\n description: t(\"neetoEditor.menu.codeDescription\"),\n Icon: CodeBlock,\n command: ({ editor, range }) => {\n editor.chain().focus().deleteRange(range).toggleCodeBlock().run();\n },\n },\n {\n optionName: EDITOR_OPTIONS.EMOJI,\n title: t(\"neetoEditor.menu.emoji\"),\n description: t(\"neetoEditor.menu.emojiDescription\"),\n Icon: Smiley,\n command: ({ editor, range }) => {\n editor.chain().focus().deleteRange(range).insertContent(\"::\").run();\n },\n },\n {\n optionName: EDITOR_OPTIONS.DIVIDER,\n title: t(\"neetoEditor.menu.divider\"),\n description: t(\"neetoEditor.menu.dividerDescription\"),\n Icon: Minus,\n command: ({ editor, range }) => {\n editor.chain().focus().deleteRange(range).setHorizontalRule().run();\n },\n },\n {\n optionName: EDITOR_OPTIONS.PASTE_UNFORMATTED,\n title: t(\"neetoEditor.menu.pasteUnformatted\"),\n description: t(\"neetoEditor.menu.pasteUnformattedDescription\"),\n Icon: Notes,\n command: ({ editor, range }) =>\n editor.chain().focus().deleteRange(range).pasteUnformatted().run(),\n },\n {\n optionName: EDITOR_OPTIONS.TABLE,\n title: t(\"neetoEditor.menu.table\"),\n description: t(\"neetoEditor.menu.tableDescription\"),\n Icon: Column,\n command: ({ editor, range }) =>\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .insertTable({ rows: 3, cols: 3, withHeaderRow: true })\n .run(),\n },\n {\n optionName: EDITOR_OPTIONS.CALLOUT,\n title: t(\"neetoEditor.menu.callout\"),\n description: t(\"neetoEditor.menu.calloutDescription\"),\n Icon: MessageSquare,\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setCallout({ type: \"default\" })\n .run();\n },\n items: [\n {\n optionName: `${EDITOR_OPTIONS.CALLOUT}_default`,\n title: t(\"neetoEditor.menu.calloutDefault\"),\n description: t(\"neetoEditor.menu.calloutDescription\"),\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setCallout({ type: \"default\" })\n .run();\n },\n },\n {\n optionName: `${EDITOR_OPTIONS.CALLOUT}_info`,\n title: t(\"neetoEditor.menu.calloutInfo\"),\n description: t(\"neetoEditor.menu.calloutDescription\"),\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setCallout({ type: \"info\" })\n .run();\n },\n },\n {\n optionName: `${EDITOR_OPTIONS.CALLOUT}_warning`,\n title: t(\"neetoEditor.menu.calloutWarning\"),\n description: t(\"neetoEditor.menu.calloutDescription\"),\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setCallout({ type: \"warning\" })\n .run();\n },\n },\n {\n optionName: `${EDITOR_OPTIONS.CALLOUT}_error`,\n title: t(\"neetoEditor.menu.calloutError\"),\n description: t(\"neetoEditor.menu.calloutDescription\"),\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setCallout({ type: \"error\" })\n .run();\n },\n },\n {\n optionName: `${EDITOR_OPTIONS.CALLOUT}_success`,\n title: t(\"neetoEditor.menu.calloutSuccess\"),\n description: t(\"neetoEditor.menu.calloutDescription\"),\n command: ({ editor, range }) => {\n editor\n .chain()\n .focus()\n .deleteRange(range)\n .setCallout({ type: \"success\" })\n .run();\n },\n },\n ],\n },\n];\n\nexport const NO_RESULT_MENU_ITEM = {\n title: t(\"neetoEditor.menu.noResults\"),\n command: ({ editor, range }) => {\n editor.chain().focus().deleteRange(range).run();\n },\n};\n","import { EDITOR_OPTIONS } from \"common/constants\";\nimport { assoc } from \"ramda\";\n\nimport { MENU_ITEMS } from \"./constants\";\n\nconst imageCommand =\n setMediaUploader =>\n ({ editor, range }) => {\n setMediaUploader(assoc(\"image\", true));\n editor.chain().focus().deleteRange(range).run();\n };\n\nconst videoCommand =\n setMediaUploader =>\n ({ editor, range }) => {\n setMediaUploader(assoc(\"video\", true));\n editor.chain().focus().deleteRange(range).run();\n };\n\nconst linkCommand =\n setIsAddLinkActive =>\n ({ editor, range }) => {\n setIsAddLinkActive(true);\n editor.chain().focus().deleteRange(range).run();\n };\n\nconst attachmentCommand =\n attachmentProps =>\n ({ editor, range }) => {\n attachmentProps?.handleUploadAttachments();\n editor.chain().focus().deleteRange(range).run();\n };\n\nconst neetoKbArticleCommand =\n setIsNeetoKbArticleActive =>\n ({ editor, range }) => {\n // Get cursor position for positioning the modal\n const cursorPos = editor.view.coordsAtPos(range.from);\n setIsNeetoKbArticleActive({\n active: true,\n editor,\n range,\n cursorPos,\n });\n editor.chain().focus().deleteRange(range).run();\n };\n\nexport const buildCommandItems = ({\n options,\n addonCommands,\n setMediaUploader,\n setIsAddLinkActive,\n attachmentProps,\n setIsNeetoKbArticleActive,\n}) => {\n const commandItems = MENU_ITEMS.map(item => {\n if (item.optionName === EDITOR_OPTIONS.IMAGE_UPLOAD) {\n return assoc(\"command\", imageCommand(setMediaUploader), item);\n } else if (item.optionName === EDITOR_OPTIONS.VIDEO_UPLOAD) {\n return assoc(\"command\", videoCommand(setMediaUploader), item);\n } else if (item.optionName === EDITOR_OPTIONS.LINK) {\n return assoc(\"command\", linkCommand(setIsAddLinkActive), item);\n } else if (item.optionName === EDITOR_OPTIONS.ATTACHMENTS) {\n return assoc(\"command\", attachmentCommand(attachmentProps), item);\n } else if (item.optionName === EDITOR_OPTIONS.NEETO_KB_ARTICLE) {\n return assoc(\n \"command\",\n neetoKbArticleCommand(setIsNeetoKbArticleActive),\n item\n );\n }\n\n return item;\n });\n\n const permittedCommandItems = commandItems.filter(({ optionName }) =>\n options.includes(optionName)\n );\n\n const adddonCommandItems = addonCommands.map(command => ({\n ...command,\n title: command.label,\n Icon: command.icon,\n }));\n\n return [...permittedCommandItems, ...adddonCommandItems];\n};\n","import { Extension } from \"@tiptap/core\";\nimport { PluginKey } from \"@tiptap/pm/state\";\nimport { ReactRenderer } from \"@tiptap/react\";\nimport Suggestion from \"@tiptap/suggestion\";\nimport { isEmpty } from \"ramda\";\nimport tippy from \"tippy.js\";\n\nimport {\n highlightFocussedNode,\n resetFocussedNode,\n} from \"utils/focusHighlighter\";\nimport { fuzzySearch } from \"utils/fuzzySearch\";\n\nimport CommandsList from \"./CommandsList\";\nimport { NO_RESULT_MENU_ITEM } from \"./constants\";\nimport { buildCommandItems } from \"./utils\";\n\nconst CommandsPluginKey = new PluginKey(\"commands\");\n\nexport default {\n configure: ({\n addonCommands,\n options,\n setMediaUploader,\n setIsAddLinkActive,\n attachmentProps,\n setIsNeetoKbArticleActive,\n }) => {\n const commandItems = buildCommandItems({\n options,\n addonCommands,\n setMediaUploader,\n setIsAddLinkActive,\n attachmentProps,\n setIsNeetoKbArticleActive,\n });\n\n return Extension.create({\n name: \"slash-commands\",\n\n addOptions() {\n return {\n HTMLAttributes: { class: \"commands\" },\n suggestion: {\n char: \"/\",\n startOfLine: false,\n pluginKey: CommandsPluginKey,\n command: ({ editor, range, props }) => {\n props.command({ editor, range });\n },\n\n items: ({ query }) => {\n if (!query) return commandItems;\n const filteredItems = fuzzySearch(commandItems, query);\n\n return isEmpty(filteredItems)\n ? [NO_RESULT_MENU_ITEM]\n : filteredItems;\n },\n\n render: () => {\n let reactRenderer;\n let popup;\n\n return {\n onStart: props => {\n if (\n props.editor.isActive(\"image\") ||\n props.editor.isActive(\"codeBlock\")\n ) {\n return;\n }\n\n reactRenderer = new ReactRenderer(CommandsList, {\n props,\n editor: props.editor,\n });\n\n popup = tippy(\"body\", {\n getReferenceClientRect: props.clientRect,\n appendTo: () => document.body,\n content: reactRenderer.element,\n showOnCreate: true,\n interactive: true,\n trigger: \"manual\",\n placement: \"bottom-start\",\n arrow: false,\n zIndex: 99999,\n role: \"dropdown\",\n theme: \"light neeto-editor-slash-commands-tippy\",\n });\n\n highlightFocussedNode();\n },\n onUpdate(props) {\n if (\n props.editor.isActive(\"image\") ||\n props.editor.isActive(\"codeBlock\")\n ) {\n return;\n }\n reactRenderer?.updateProps(props);\n\n popup[0].setProps({\n getReferenceClientRect: props.clientRect,\n });\n },\n onKeyDown(props) {\n if (props.event.key === \"Escape\") {\n popup[0].hide();\n\n return true;\n }\n\n return reactRenderer && reactRenderer?.ref?.onKeyDown(props);\n },\n onExit() {\n popup && popup[0].destroy();\n reactRenderer && reactRenderer.destroy();\n resetFocussedNode();\n },\n };\n },\n },\n };\n },\n\n addProseMirrorPlugins() {\n return [\n Suggestion({\n editor: this.editor,\n ...this.options.suggestion,\n }),\n ];\n },\n });\n },\n};\n","import { mergeAttributes } from \"@tiptap/core\";\nimport Mention from \"@tiptap/extension-mention\";\nimport { PluginKey } from \"@tiptap/pm/state\";\nimport { ReactRenderer } from \"@tiptap/react\";\nimport tippy from \"tippy.js\";\n\nimport { MentionList } from \"../Mention/MentionList\";\nimport { createMentionSuggestions } from \"../Mention/utils\";\n\nconst SpecialMentionPluginKey = new PluginKey(\"special-mention\");\n\nconst renderLabel = ({ options, node }) =>\n `${options.suggestion.char}${node.attrs.label ?? node.attrs.id}`;\n\nconst suggestion = {\n char: \"@@\",\n pluginKey: SpecialMentionPluginKey,\n\n render: () => {\n let reactRenderer;\n let popup;\n\n return {\n onStart: props => {\n reactRenderer = new ReactRenderer(MentionList, {\n props,\n editor: props.editor,\n });\n\n popup = tippy(\"body\", {\n theme: \"light neeto-editor-mentions-tooltip\",\n getReferenceClientRect: props.clientRect,\n appendTo: () => document.body,\n content: reactRenderer.element,\n showOnCreate: true,\n interactive: true,\n trigger: \"manual\",\n placement: \"bottom-start\",\n zIndex: 99999,\n arrow: false,\n });\n },\n\n onUpdate(props) {\n reactRenderer.updateProps(props);\n\n popup[0].setProps({\n getReferenceClientRect: props.clientRect,\n });\n },\n\n onKeyDown(props) {\n if (props.event.key === \"Escape\") {\n popup[0].hide();\n\n return true;\n }\n\n return reactRenderer.ref?.onKeyDown(props);\n },\n\n onExit() {\n popup[0].destroy();\n reactRenderer.destroy();\n },\n };\n },\n};\n\nconst SpecialMentions = Mention.extend({\n name: \"special-mention\",\n\n renderHTML({ node, HTMLAttributes }) {\n return [\n \"span\",\n mergeAttributes(\n { \"data-type\": this.name },\n this.options.HTMLAttributes,\n HTMLAttributes\n ),\n renderLabel({ options: this.options, node }),\n ];\n },\n});\n\nexport default {\n configure: ({ suggestion: suggestionConfig = {}, ...otherConfig }) =>\n SpecialMentions.configure({\n ...otherConfig,\n suggestion: { ...suggestion, ...suggestionConfig },\n }),\n};\n\nexport { createMentionSuggestions };\n","import { ReplaceError, Slice, Fragment, MarkType, Mark } from 'prosemirror-model';\n\n// Recovery values encode a range index and an offset. They are\n// represented as numbers, because tons of them will be created when\n// mapping, for example, a large number of decorations. The number's\n// lower 16 bits provide the index, the remaining bits the offset.\n//\n// Note: We intentionally don't use bit shift operators to en- and\n// decode these, since those clip to 32 bits, which we might in rare\n// cases want to overflow. A 64-bit float can represent 48-bit\n// integers precisely.\nconst lower16 = 0xffff;\nconst factor16 = Math.pow(2, 16);\nfunction makeRecover(index, offset) { return index + offset * factor16; }\nfunction recoverIndex(value) { return value & lower16; }\nfunction recoverOffset(value) { return (value - (value & lower16)) / factor16; }\nconst DEL_BEFORE = 1, DEL_AFTER = 2, DEL_ACROSS = 4, DEL_SIDE = 8;\n/**\nAn object representing a mapped position with extra\ninformation.\n*/\nclass MapResult {\n /**\n @internal\n */\n constructor(\n /**\n The mapped version of the position.\n */\n pos, \n /**\n @internal\n */\n delInfo, \n /**\n @internal\n */\n 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() { return (this.delInfo & DEL_SIDE) > 0; }\n /**\n Tells you whether the token before the mapped position was deleted.\n */\n get deletedBefore() { return (this.delInfo & (DEL_BEFORE | DEL_ACROSS)) > 0; }\n /**\n True when the token after the mapped position was deleted.\n */\n get deletedAfter() { return (this.delInfo & (DEL_AFTER | DEL_ACROSS)) > 0; }\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() { return (this.delInfo & DEL_ACROSS) > 0; }\n}\n/**\nA map describing the deletions and insertions made by a step, which\ncan be used to find the correspondence between positions in the\npre-step version of a document and the same position in the\npost-step version.\n*/\nclass 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(\n /**\n @internal\n */\n ranges, \n /**\n @internal\n */\n 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) { return this._map(pos, assoc, false); }\n map(pos, assoc = 1) { return this._map(pos, assoc, true); }\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}\n/**\nA StepMap that contains no changed ranges.\n*/\nStepMap.empty = new StepMap([]);\n/**\nA mapping represents a pipeline of zero or more [step\nmaps](https://prosemirror.net/docs/ref/#transform.StepMap). It has special provisions for losslessly\nhandling mapping positions through a series of steps in which some\nsteps are inverted versions of earlier steps. (This comes up when\n‘[rebasing](/docs/guide/#transform.rebasing)’ steps for\ncollaboration or history management.)\n*/\nclass Mapping {\n /**\n Create a new mapping with the given position maps.\n */\n constructor(\n /**\n The step maps in this mapping.\n */\n maps = [], \n /**\n @internal\n */\n mirror, \n /**\n The starting position in the `maps` array, used when `map` or\n `mapResult` is called.\n */\n from = 0, \n /**\n The end position in the `maps` array.\n */\n to = maps.length) {\n this.maps = maps;\n this.mirror = mirror;\n this.from = from;\n this.to = to;\n }\n /**\n Create a mapping that maps only through a part of this one.\n */\n slice(from = 0, to = this.maps.length) {\n return new Mapping(this.maps, this.mirror, from, to);\n }\n /**\n @internal\n */\n copy() {\n return new Mapping(this.maps.slice(), this.mirror && this.mirror.slice(), this.from, this.to);\n }\n /**\n Add a step map to the end of this mapping. If `mirrors` is\n given, it should be the index of the step map that is the mirror\n image of this one.\n */\n appendMap(map, mirrors) {\n this.to = this.maps.push(map);\n if (mirrors != null)\n this.setMirror(this.maps.length - 1, mirrors);\n }\n /**\n Add all the step maps in a given mapping to this one (preserving\n mirroring information).\n */\n appendMapping(mapping) {\n for (let i = 0, startSize = this.maps.length; i < mapping.maps.length; i++) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i], mirr != null && mirr < i ? startSize + mirr : undefined);\n }\n }\n /**\n Finds the offset of the step map that mirrors the map at the\n given offset, in this mapping (as per the second argument to\n `appendMap`).\n */\n getMirror(n) {\n if (this.mirror)\n for (let i = 0; i < this.mirror.length; i++)\n if (this.mirror[i] == n)\n return this.mirror[i + (i % 2 ? -1 : 1)];\n }\n /**\n @internal\n */\n setMirror(n, m) {\n if (!this.mirror)\n this.mirror = [];\n this.mirror.push(n, m);\n }\n /**\n Append the inverse of the given mapping to this one.\n */\n appendMappingInverted(mapping) {\n for (let i = mapping.maps.length - 1, totalSize = this.maps.length + mapping.maps.length; i >= 0; i--) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i].invert(), mirr != null && mirr > i ? totalSize - mirr - 1 : undefined);\n }\n }\n /**\n Create an inverted version of this mapping.\n */\n invert() {\n let inverse = new Mapping;\n inverse.appendMappingInverted(this);\n return inverse;\n }\n /**\n Map a position through this mapping.\n */\n map(pos, assoc = 1) {\n if (this.mirror)\n return this._map(pos, assoc, true);\n for (let i = this.from; i < this.to; i++)\n pos = this.maps[i].map(pos, assoc);\n return pos;\n }\n /**\n Map a position through this mapping, returning a mapping\n result.\n */\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let delInfo = 0;\n for (let i = this.from; i < this.to; i++) {\n let map = this.maps[i], result = map.mapResult(pos, assoc);\n if (result.recover != null) {\n let corr = this.getMirror(i);\n if (corr != null && corr > i && corr < this.to) {\n i = corr;\n pos = this.maps[corr].recover(result.recover);\n continue;\n }\n }\n delInfo |= result.delInfo;\n pos = result.pos;\n }\n return simple ? pos : new MapResult(pos, delInfo, null);\n }\n}\n\nconst stepsByID = Object.create(null);\n/**\nA step object represents an atomic change. It generally applies\nonly to the document it was created for, since the positions\nstored in it will only make sense for that document.\n\nNew steps are defined by creating classes that extend `Step`,\noverriding the `apply`, `invert`, `map`, `getMap` and `fromJSON`\nmethods, and registering your class with a unique\nJSON-serialization identifier using\n[`Step.jsonID`](https://prosemirror.net/docs/ref/#transform.Step^jsonID).\n*/\nclass Step {\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() { return StepMap.empty; }\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) { return null; }\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}\n/**\nThe result of [applying](https://prosemirror.net/docs/ref/#transform.Step.apply) a step. Contains either a\nnew document or a failure value.\n*/\nclass StepResult {\n /**\n @internal\n */\n constructor(\n /**\n The transformed document, if successful.\n */\n doc, \n /**\n The failure message, if unsuccessful.\n */\n failed) {\n this.doc = doc;\n this.failed = failed;\n }\n /**\n Create a successful step result.\n */\n static ok(doc) { return new StepResult(doc, null); }\n /**\n Create a failed step result.\n */\n static fail(message) { return new StepResult(null, message); }\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 }\n catch (e) {\n if (e instanceof ReplaceError)\n return StepResult.fail(e.message);\n throw e;\n }\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}\n/**\nAdd a mark to all inline content between two positions.\n*/\nclass AddMarkStep extends Step {\n /**\n Create a mark step.\n */\n constructor(\n /**\n The start of the marked range.\n */\n from, \n /**\n The end of the marked range.\n */\n to, \n /**\n The mark to add.\n */\n 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, parent) => {\n if (!node.isAtom || !parent.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 &&\n other.mark.eq(this.mark) &&\n 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 { stepType: \"addMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\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);\n/**\nRemove a mark from all inline content between two positions.\n*/\nclass RemoveMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The start of the unmarked range.\n */\n from, \n /**\n The end of the unmarked range.\n */\n to, \n /**\n The mark to remove.\n */\n 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 &&\n other.mark.eq(this.mark) &&\n 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 { stepType: \"removeMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\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);\n/**\nAdd a mark to a specific node.\n*/\nclass AddNodeMarkStep extends Step {\n /**\n Create a node mark step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to add.\n */\n 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);\n/**\nRemove a mark from a specific node.\n*/\nclass RemoveNodeMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to remove.\n */\n 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);\n\n/**\nReplace a part of the document with a slice of new content.\n*/\nclass 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(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The slice to insert.\n */\n slice, \n /**\n @internal\n */\n 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 from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deletedAcross && to.deletedAcross)\n return null;\n return new ReplaceStep(from.pos, Math.max(from.pos, to.pos), this.slice);\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\n : 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 }\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\n : 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 }\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}\nStep.jsonID(\"replace\", ReplaceStep);\n/**\nReplace a part of the document with a slice of content, but\npreserve a range of the replaced content by moving it into the\nslice.\n*/\nclass 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(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The start of preserved range.\n */\n gapFrom, \n /**\n The end of preserved range.\n */\n gapTo, \n /**\n The slice to insert.\n */\n slice, \n /**\n The position in the slice where the preserved range should be\n inserted.\n */\n insert, \n /**\n @internal\n */\n 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) ||\n 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([this.from, this.gapFrom - this.from, this.insert,\n this.gapTo, this.to - this.gapTo, this.slice.size - this.insert]);\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 = { stepType: \"replaceAround\", from: this.from, to: this.to,\n gapFrom: this.gapFrom, gapTo: this.gapTo, insert: this.insert };\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 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}\n\nfunction addMark(tr, from, to, mark) {\n let removed = [], added = [];\n let removing, adding;\n tr.doc.nodesBetween(from, to, (node, pos, parent) => {\n if (!node.isInline)\n return;\n let marks = node.marks;\n if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n let start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n let newSet = mark.addToSet(marks);\n for (let i = 0; i < marks.length; i++) {\n if (!marks[i].isInSet(newSet)) {\n if (removing && removing.to == start && removing.mark.eq(marks[i]))\n removing.to = end;\n else\n removed.push(removing = new RemoveMarkStep(start, end, marks[i]));\n }\n }\n if (adding && adding.to == start)\n adding.to = end;\n else\n added.push(adding = new AddMarkStep(start, end, mark));\n }\n });\n removed.forEach(s => tr.step(s));\n added.forEach(s => tr.step(s));\n}\nfunction removeMark(tr, from, to, mark) {\n let matched = [], step = 0;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isInline)\n return;\n step++;\n let toRemove = null;\n if (mark instanceof MarkType) {\n let set = node.marks, found;\n while (found = mark.isInSet(set)) {\n (toRemove || (toRemove = [])).push(found);\n set = found.removeFromSet(set);\n }\n }\n else if (mark) {\n if (mark.isInSet(node.marks))\n toRemove = [mark];\n }\n else {\n toRemove = node.marks;\n }\n if (toRemove && toRemove.length) {\n let end = Math.min(pos + node.nodeSize, to);\n for (let i = 0; i < toRemove.length; i++) {\n let style = toRemove[i], found;\n for (let j = 0; j < matched.length; j++) {\n let m = matched[j];\n if (m.step == step - 1 && style.eq(matched[j].style))\n found = m;\n }\n if (found) {\n found.to = end;\n found.step = step;\n }\n else {\n matched.push({ style, from: Math.max(pos, from), to: end, step });\n }\n }\n }\n });\n matched.forEach(m => tr.step(new RemoveMarkStep(m.from, m.to, m.style)));\n}\nfunction clearIncompatible(tr, pos, parentType, match = parentType.contentMatch, clearNewlines = true) {\n let node = tr.doc.nodeAt(pos);\n let replSteps = [], cur = pos + 1;\n for (let i = 0; i < node.childCount; i++) {\n let child = node.child(i), end = cur + child.nodeSize;\n let allowed = match.matchType(child.type);\n if (!allowed) {\n replSteps.push(new ReplaceStep(cur, end, Slice.empty));\n }\n else {\n match = allowed;\n for (let j = 0; j < child.marks.length; j++)\n if (!parentType.allowsMarkType(child.marks[j].type))\n tr.step(new RemoveMarkStep(cur, end, child.marks[j]));\n if (clearNewlines && child.isText && parentType.whitespace != \"pre\") {\n let m, newline = /\\r?\\n|\\r/g, slice;\n while (m = newline.exec(child.text)) {\n if (!slice)\n slice = new Slice(Fragment.from(parentType.schema.text(\" \", parentType.allowedMarks(child.marks))), 0, 0);\n replSteps.push(new ReplaceStep(cur + m.index, cur + m.index + m[0].length, slice));\n }\n }\n }\n cur = end;\n }\n if (!match.validEnd) {\n let fill = match.fillBefore(Fragment.empty, true);\n tr.replace(cur, cur, new Slice(fill, 0, 0));\n }\n for (let i = replSteps.length - 1; i >= 0; i--)\n tr.step(replSteps[i]);\n}\n\nfunction canCut(node, start, end) {\n return (start == 0 || node.canReplace(start, node.childCount)) &&\n (end == node.childCount || node.canReplace(0, end));\n}\n/**\nTry to find a target depth to which the content in the given range\ncan be lifted. Will not go across\n[isolating](https://prosemirror.net/docs/ref/#model.NodeSpec.isolating) parent nodes.\n*/\nfunction liftTarget(range) {\n let parent = range.parent;\n let content = parent.content.cutByIndex(range.startIndex, range.endIndex);\n for (let depth = range.depth;; --depth) {\n let node = range.$from.node(depth);\n let index = range.$from.index(depth), endIndex = range.$to.indexAfter(depth);\n if (depth < range.depth && node.canReplace(index, endIndex, content))\n return depth;\n if (depth == 0 || node.type.spec.isolating || !canCut(node, index, endIndex))\n break;\n }\n return null;\n}\nfunction lift(tr, range, target) {\n let { $from, $to, depth } = range;\n let gapStart = $from.before(depth + 1), gapEnd = $to.after(depth + 1);\n let start = gapStart, end = gapEnd;\n let before = Fragment.empty, openStart = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $from.index(d) > 0) {\n splitting = true;\n before = Fragment.from($from.node(d).copy(before));\n openStart++;\n }\n else {\n start--;\n }\n let after = Fragment.empty, openEnd = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $to.after(d + 1) < $to.end(d)) {\n splitting = true;\n after = Fragment.from($to.node(d).copy(after));\n openEnd++;\n }\n else {\n end++;\n }\n tr.step(new ReplaceAroundStep(start, end, gapStart, gapEnd, new Slice(before.append(after), openStart, openEnd), before.size - openStart, true));\n}\n/**\nTry to find a valid way to wrap the content in the given range in a\nnode of the given type. May introduce extra nodes around and inside\nthe wrapper node, if necessary. Returns null if no valid wrapping\ncould be found. When `innerRange` is given, that range's content is\nused as the content to fit into the wrapping, instead of the\ncontent of `range`.\n*/\nfunction findWrapping(range, nodeType, attrs = null, innerRange = range) {\n let around = findWrappingOutside(range, nodeType);\n let inner = around && findWrappingInside(innerRange, nodeType);\n if (!inner)\n return null;\n return around.map(withAttrs)\n .concat({ type: nodeType, attrs }).concat(inner.map(withAttrs));\n}\nfunction withAttrs(type) { return { type, attrs: null }; }\nfunction findWrappingOutside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let around = parent.contentMatchAt(startIndex).findWrapping(type);\n if (!around)\n return null;\n let outer = around.length ? around[0] : type;\n return parent.canReplaceWith(startIndex, endIndex, outer) ? around : null;\n}\nfunction findWrappingInside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let inner = parent.child(startIndex);\n let inside = type.contentMatch.findWrapping(inner.type);\n if (!inside)\n return null;\n let lastType = inside.length ? inside[inside.length - 1] : type;\n let innerMatch = lastType.contentMatch;\n for (let i = startIndex; innerMatch && i < endIndex; i++)\n innerMatch = innerMatch.matchType(parent.child(i).type);\n if (!innerMatch || !innerMatch.validEnd)\n return null;\n return inside;\n}\nfunction wrap(tr, range, wrappers) {\n let content = Fragment.empty;\n for (let i = wrappers.length - 1; i >= 0; i--) {\n if (content.size) {\n let match = wrappers[i].type.contentMatch.matchFragment(content);\n if (!match || !match.validEnd)\n throw new RangeError(\"Wrapper type given to Transform.wrap does not form valid content of its parent wrapper\");\n }\n content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n }\n let start = range.start, end = range.end;\n tr.step(new ReplaceAroundStep(start, end, start, end, new Slice(content, 0, 0), wrappers.length, true));\n}\nfunction setBlockType(tr, from, to, type, attrs) {\n if (!type.isTextblock)\n throw new RangeError(\"Type given to setBlockType should be a textblock\");\n let mapFrom = tr.steps.length;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n let attrsHere = typeof attrs == \"function\" ? attrs(node) : attrs;\n if (node.isTextblock && !node.hasMarkup(type, attrsHere) &&\n canChangeType(tr.doc, tr.mapping.slice(mapFrom).map(pos), type)) {\n let convertNewlines = null;\n if (type.schema.linebreakReplacement) {\n let pre = type.whitespace == \"pre\", supportLinebreak = !!type.contentMatch.matchType(type.schema.linebreakReplacement);\n if (pre && !supportLinebreak)\n convertNewlines = false;\n else if (!pre && supportLinebreak)\n convertNewlines = true;\n }\n // Ensure all markup that isn't allowed in the new node type is cleared\n if (convertNewlines === false)\n replaceLinebreaks(tr, node, pos, mapFrom);\n clearIncompatible(tr, tr.mapping.slice(mapFrom).map(pos, 1), type, undefined, convertNewlines === null);\n let mapping = tr.mapping.slice(mapFrom);\n let startM = mapping.map(pos, 1), endM = mapping.map(pos + node.nodeSize, 1);\n tr.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, new Slice(Fragment.from(type.create(attrsHere, null, node.marks)), 0, 0), 1, true));\n if (convertNewlines === true)\n replaceNewlines(tr, node, pos, mapFrom);\n return false;\n }\n });\n}\nfunction replaceNewlines(tr, node, pos, mapFrom) {\n node.forEach((child, offset) => {\n if (child.isText) {\n let m, newline = /\\r?\\n|\\r/g;\n while (m = newline.exec(child.text)) {\n let start = tr.mapping.slice(mapFrom).map(pos + 1 + offset + m.index);\n tr.replaceWith(start, start + 1, node.type.schema.linebreakReplacement.create());\n }\n }\n });\n}\nfunction replaceLinebreaks(tr, node, pos, mapFrom) {\n node.forEach((child, offset) => {\n if (child.type == child.type.schema.linebreakReplacement) {\n let start = tr.mapping.slice(mapFrom).map(pos + 1 + offset);\n tr.replaceWith(start, start + 1, node.type.schema.text(\"\\n\"));\n }\n });\n}\nfunction canChangeType(doc, pos, type) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type);\n}\n/**\nChange the type, attributes, and/or marks of the node at `pos`.\nWhen `type` isn't given, the existing node type is preserved,\n*/\nfunction setNodeMarkup(tr, pos, type, attrs, marks) {\n let node = tr.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at given position\");\n if (!type)\n type = node.type;\n let newNode = type.create(attrs, null, marks || node.marks);\n if (node.isLeaf)\n return tr.replaceWith(pos, pos + node.nodeSize, newNode);\n if (!type.validContent(node.content))\n throw new RangeError(\"Invalid content for node type \" + type.name);\n tr.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1, new Slice(Fragment.from(newNode), 0, 0), 1, true));\n}\n/**\nCheck whether splitting at the given position is allowed.\n*/\nfunction canSplit(doc, pos, depth = 1, typesAfter) {\n let $pos = doc.resolve(pos), base = $pos.depth - depth;\n let innerType = (typesAfter && typesAfter[typesAfter.length - 1]) || $pos.parent;\n if (base < 0 || $pos.parent.type.spec.isolating ||\n !$pos.parent.canReplace($pos.index(), $pos.parent.childCount) ||\n !innerType.type.validContent($pos.parent.content.cutByIndex($pos.index(), $pos.parent.childCount)))\n return false;\n for (let d = $pos.depth - 1, i = depth - 2; d > base; d--, i--) {\n let node = $pos.node(d), index = $pos.index(d);\n if (node.type.spec.isolating)\n return false;\n let rest = node.content.cutByIndex(index, node.childCount);\n let overrideChild = typesAfter && typesAfter[i + 1];\n if (overrideChild)\n rest = rest.replaceChild(0, overrideChild.type.create(overrideChild.attrs));\n let after = (typesAfter && typesAfter[i]) || node;\n if (!node.canReplace(index + 1, node.childCount) || !after.type.validContent(rest))\n return false;\n }\n let index = $pos.indexAfter(base);\n let baseType = typesAfter && typesAfter[0];\n return $pos.node(base).canReplaceWith(index, index, baseType ? baseType.type : $pos.node(base + 1).type);\n}\nfunction split(tr, pos, depth = 1, typesAfter) {\n let $pos = tr.doc.resolve(pos), before = Fragment.empty, after = Fragment.empty;\n for (let d = $pos.depth, e = $pos.depth - depth, i = depth - 1; d > e; d--, i--) {\n before = Fragment.from($pos.node(d).copy(before));\n let typeAfter = typesAfter && typesAfter[i];\n after = Fragment.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d).copy(after));\n }\n tr.step(new ReplaceStep(pos, pos, new Slice(before.append(after), depth, depth), true));\n}\n/**\nTest whether the blocks before and after a given position can be\njoined.\n*/\nfunction canJoin(doc, pos) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return joinable($pos.nodeBefore, $pos.nodeAfter) &&\n $pos.parent.canReplace(index, index + 1);\n}\nfunction joinable(a, b) {\n return !!(a && b && !a.isLeaf && a.canAppend(b));\n}\n/**\nFind an ancestor of the given position that can be joined to the\nblock before (or after if `dir` is positive). Returns the joinable\npoint, if any.\n*/\nfunction joinPoint(doc, pos, dir = -1) {\n let $pos = doc.resolve(pos);\n for (let d = $pos.depth;; d--) {\n let before, after, index = $pos.index(d);\n if (d == $pos.depth) {\n before = $pos.nodeBefore;\n after = $pos.nodeAfter;\n }\n else if (dir > 0) {\n before = $pos.node(d + 1);\n index++;\n after = $pos.node(d).maybeChild(index);\n }\n else {\n before = $pos.node(d).maybeChild(index - 1);\n after = $pos.node(d + 1);\n }\n if (before && !before.isTextblock && joinable(before, after) &&\n $pos.node(d).canReplace(index, index + 1))\n return pos;\n if (d == 0)\n break;\n pos = dir < 0 ? $pos.before(d) : $pos.after(d);\n }\n}\nfunction join(tr, pos, depth) {\n let step = new ReplaceStep(pos - depth, pos + depth, Slice.empty, true);\n tr.step(step);\n}\n/**\nTry to find a point where a node of the given type can be inserted\nnear `pos`, by searching up the node hierarchy when `pos` itself\nisn't a valid place but is at the start or end of a node. Return\nnull if no position was found.\n*/\nfunction insertPoint(doc, pos, nodeType) {\n let $pos = doc.resolve(pos);\n if ($pos.parent.canReplaceWith($pos.index(), $pos.index(), nodeType))\n return pos;\n if ($pos.parentOffset == 0)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.index(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.before(d + 1);\n if (index > 0)\n return null;\n }\n if ($pos.parentOffset == $pos.parent.content.size)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.indexAfter(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.after(d + 1);\n if (index < $pos.node(d).childCount)\n return null;\n }\n return null;\n}\n/**\nFinds a position at or around the given position where the given\nslice can be inserted. Will look at parent nodes' nearest boundary\nand try there, even if the original position wasn't directly at the\nstart or end of that node. Returns null when no position was found.\n*/\nfunction dropPoint(doc, pos, slice) {\n let $pos = doc.resolve(pos);\n if (!slice.content.size)\n return pos;\n let content = slice.content;\n for (let i = 0; i < slice.openStart; i++)\n content = content.firstChild.content;\n for (let pass = 1; pass <= (slice.openStart == 0 && slice.size ? 2 : 1); pass++) {\n for (let d = $pos.depth; d >= 0; d--) {\n let bias = d == $pos.depth ? 0 : $pos.pos <= ($pos.start(d + 1) + $pos.end(d + 1)) / 2 ? -1 : 1;\n let insertPos = $pos.index(d) + (bias > 0 ? 1 : 0);\n let parent = $pos.node(d), fits = false;\n if (pass == 1) {\n fits = parent.canReplace(insertPos, insertPos, content);\n }\n else {\n let wrapping = parent.contentMatchAt(insertPos).findWrapping(content.firstChild.type);\n fits = wrapping && parent.canReplaceWith(insertPos, insertPos, wrapping[0]);\n }\n if (fits)\n return bias == 0 ? $pos.pos : bias < 0 ? $pos.before(d + 1) : $pos.after(d + 1);\n }\n }\n return null;\n}\n\n/**\n‘Fit’ a slice into a given position in the document, producing a\n[step](https://prosemirror.net/docs/ref/#transform.Step) that inserts it. Will return null if\nthere's no meaningful way to insert the slice here, or inserting it\nwould be a no-op (an empty slice over an empty range).\n*/\nfunction replaceStep(doc, from, to = from, slice = Slice.empty) {\n if (from == to && !slice.size)\n return null;\n let $from = doc.resolve(from), $to = doc.resolve(to);\n // Optimization -- avoid work if it's obvious that it's not needed.\n if (fitsTrivially($from, $to, slice))\n return new ReplaceStep(from, to, slice);\n return new Fitter($from, $to, slice).fit();\n}\nfunction fitsTrivially($from, $to, slice) {\n return !slice.openStart && !slice.openEnd && $from.start() == $to.start() &&\n $from.parent.canReplace($from.index(), $to.index(), slice.content);\n}\n// Algorithm for 'placing' the elements of a slice into a gap:\n//\n// We consider the content of each node that is open to the left to be\n// independently placeable. I.e. in <p(\"foo\"), p(\"bar\")>, when the\n// paragraph on the left is open, \"foo\" can be placed (somewhere on\n// the left side of the replacement gap) independently from p(\"bar\").\n//\n// This class tracks the state of the placement progress in the\n// following properties:\n//\n// - `frontier` holds a stack of `{type, match}` objects that\n// represent the open side of the replacement. It starts at\n// `$from`, then moves forward as content is placed, and is finally\n// reconciled with `$to`.\n//\n// - `unplaced` is a slice that represents the content that hasn't\n// been placed yet.\n//\n// - `placed` is a fragment of placed content. Its open-start value\n// is implicit in `$from`, and its open-end value in `frontier`.\nclass Fitter {\n constructor($from, $to, unplaced) {\n this.$from = $from;\n this.$to = $to;\n this.unplaced = unplaced;\n this.frontier = [];\n this.placed = Fragment.empty;\n for (let i = 0; i <= $from.depth; i++) {\n let node = $from.node(i);\n this.frontier.push({\n type: node.type,\n match: node.contentMatchAt($from.indexAfter(i))\n });\n }\n for (let i = $from.depth; i > 0; i--)\n this.placed = Fragment.from($from.node(i).copy(this.placed));\n }\n get depth() { return this.frontier.length - 1; }\n fit() {\n // As long as there's unplaced content, try to place some of it.\n // If that fails, either increase the open score of the unplaced\n // slice, or drop nodes from it, and then try again.\n while (this.unplaced.size) {\n let fit = this.findFittable();\n if (fit)\n this.placeNodes(fit);\n else\n this.openMore() || this.dropNode();\n }\n // When there's inline content directly after the frontier _and_\n // directly after `this.$to`, we must generate a `ReplaceAround`\n // step that pulls that content into the node after the frontier.\n // That means the fitting must be done to the end of the textblock\n // node after `this.$to`, not `this.$to` itself.\n let moveInline = this.mustMoveInline(), placedSize = this.placed.size - this.depth - this.$from.depth;\n let $from = this.$from, $to = this.close(moveInline < 0 ? this.$to : $from.doc.resolve(moveInline));\n if (!$to)\n return null;\n // If closing to `$to` succeeded, create a step\n let content = this.placed, openStart = $from.depth, openEnd = $to.depth;\n while (openStart && openEnd && content.childCount == 1) { // Normalize by dropping open parent nodes\n content = content.firstChild.content;\n openStart--;\n openEnd--;\n }\n let slice = new Slice(content, openStart, openEnd);\n if (moveInline > -1)\n return new ReplaceAroundStep($from.pos, moveInline, this.$to.pos, this.$to.end(), slice, placedSize);\n if (slice.size || $from.pos != this.$to.pos) // Don't generate no-op steps\n return new ReplaceStep($from.pos, $to.pos, slice);\n return null;\n }\n // Find a position on the start spine of `this.unplaced` that has\n // content that can be moved somewhere on the frontier. Returns two\n // depths, one for the slice and one for the frontier.\n findFittable() {\n let startDepth = this.unplaced.openStart;\n for (let cur = this.unplaced.content, d = 0, openEnd = this.unplaced.openEnd; d < startDepth; d++) {\n let node = cur.firstChild;\n if (cur.childCount > 1)\n openEnd = 0;\n if (node.type.spec.isolating && openEnd <= d) {\n startDepth = d;\n break;\n }\n cur = node.content;\n }\n // Only try wrapping nodes (pass 2) after finding a place without\n // wrapping failed.\n for (let pass = 1; pass <= 2; pass++) {\n for (let sliceDepth = pass == 1 ? startDepth : this.unplaced.openStart; sliceDepth >= 0; sliceDepth--) {\n let fragment, parent = null;\n if (sliceDepth) {\n parent = contentAt(this.unplaced.content, sliceDepth - 1).firstChild;\n fragment = parent.content;\n }\n else {\n fragment = this.unplaced.content;\n }\n let first = fragment.firstChild;\n for (let frontierDepth = this.depth; frontierDepth >= 0; frontierDepth--) {\n let { type, match } = this.frontier[frontierDepth], wrap, inject = null;\n // In pass 1, if the next node matches, or there is no next\n // node but the parents look compatible, we've found a\n // place.\n if (pass == 1 && (first ? match.matchType(first.type) || (inject = match.fillBefore(Fragment.from(first), false))\n : parent && type.compatibleContent(parent.type)))\n return { sliceDepth, frontierDepth, parent, inject };\n // In pass 2, look for a set of wrapping nodes that make\n // `first` fit here.\n else if (pass == 2 && first && (wrap = match.findWrapping(first.type)))\n return { sliceDepth, frontierDepth, parent, wrap };\n // Don't continue looking further up if the parent node\n // would fit here.\n if (parent && match.matchType(parent.type))\n break;\n }\n }\n }\n }\n openMore() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (!inner.childCount || inner.firstChild.isLeaf)\n return false;\n this.unplaced = new Slice(content, openStart + 1, Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));\n return true;\n }\n dropNode() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (inner.childCount <= 1 && openStart > 0) {\n let openAtEnd = content.size - openStart <= openStart + inner.size;\n this.unplaced = new Slice(dropFromFragment(content, openStart - 1, 1), openStart - 1, openAtEnd ? openStart - 1 : openEnd);\n }\n else {\n this.unplaced = new Slice(dropFromFragment(content, openStart, 1), openStart, openEnd);\n }\n }\n // Move content from the unplaced slice at `sliceDepth` to the\n // frontier node at `frontierDepth`. Close that frontier node when\n // applicable.\n placeNodes({ sliceDepth, frontierDepth, parent, inject, wrap }) {\n while (this.depth > frontierDepth)\n this.closeFrontierNode();\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n this.openFrontierNode(wrap[i]);\n let slice = this.unplaced, fragment = parent ? parent.content : slice.content;\n let openStart = slice.openStart - sliceDepth;\n let taken = 0, add = [];\n let { match, type } = this.frontier[frontierDepth];\n if (inject) {\n for (let i = 0; i < inject.childCount; i++)\n add.push(inject.child(i));\n match = match.matchFragment(inject);\n }\n // Computes the amount of (end) open nodes at the end of the\n // fragment. When 0, the parent is open, but no more. When\n // negative, nothing is open.\n let openEndCount = (fragment.size + sliceDepth) - (slice.content.size - slice.openEnd);\n // Scan over the fragment, fitting as many child nodes as\n // possible.\n while (taken < fragment.childCount) {\n let next = fragment.child(taken), matches = match.matchType(next.type);\n if (!matches)\n break;\n taken++;\n if (taken > 1 || openStart == 0 || next.content.size) { // Drop empty open nodes\n match = matches;\n add.push(closeNodeStart(next.mark(type.allowedMarks(next.marks)), taken == 1 ? openStart : 0, taken == fragment.childCount ? openEndCount : -1));\n }\n }\n let toEnd = taken == fragment.childCount;\n if (!toEnd)\n openEndCount = -1;\n this.placed = addToFragment(this.placed, frontierDepth, Fragment.from(add));\n this.frontier[frontierDepth].match = match;\n // If the parent types match, and the entire node was moved, and\n // it's not open, close this frontier node right away.\n if (toEnd && openEndCount < 0 && parent && parent.type == this.frontier[this.depth].type && this.frontier.length > 1)\n this.closeFrontierNode();\n // Add new frontier nodes for any open nodes at the end.\n for (let i = 0, cur = fragment; i < openEndCount; i++) {\n let node = cur.lastChild;\n this.frontier.push({ type: node.type, match: node.contentMatchAt(node.childCount) });\n cur = node.content;\n }\n // Update `this.unplaced`. Drop the entire node from which we\n // placed it we got to its end, otherwise just drop the placed\n // nodes.\n this.unplaced = !toEnd ? new Slice(dropFromFragment(slice.content, sliceDepth, taken), slice.openStart, slice.openEnd)\n : sliceDepth == 0 ? Slice.empty\n : new Slice(dropFromFragment(slice.content, sliceDepth - 1, 1), sliceDepth - 1, openEndCount < 0 ? slice.openEnd : sliceDepth - 1);\n }\n mustMoveInline() {\n if (!this.$to.parent.isTextblock)\n return -1;\n let top = this.frontier[this.depth], level;\n if (!top.type.isTextblock || !contentAfterFits(this.$to, this.$to.depth, top.type, top.match, false) ||\n (this.$to.depth == this.depth && (level = this.findCloseLevel(this.$to)) && level.depth == this.depth))\n return -1;\n let { depth } = this.$to, after = this.$to.after(depth);\n while (depth > 1 && after == this.$to.end(--depth))\n ++after;\n return after;\n }\n findCloseLevel($to) {\n scan: for (let i = Math.min(this.depth, $to.depth); i >= 0; i--) {\n let { match, type } = this.frontier[i];\n let dropInner = i < $to.depth && $to.end(i + 1) == $to.pos + ($to.depth - (i + 1));\n let fit = contentAfterFits($to, i, type, match, dropInner);\n if (!fit)\n continue;\n for (let d = i - 1; d >= 0; d--) {\n let { match, type } = this.frontier[d];\n let matches = contentAfterFits($to, d, type, match, true);\n if (!matches || matches.childCount)\n continue scan;\n }\n return { depth: i, fit, move: dropInner ? $to.doc.resolve($to.after(i + 1)) : $to };\n }\n }\n close($to) {\n let close = this.findCloseLevel($to);\n if (!close)\n return null;\n while (this.depth > close.depth)\n this.closeFrontierNode();\n if (close.fit.childCount)\n this.placed = addToFragment(this.placed, close.depth, close.fit);\n $to = close.move;\n for (let d = close.depth + 1; d <= $to.depth; d++) {\n let node = $to.node(d), add = node.type.contentMatch.fillBefore(node.content, true, $to.index(d));\n this.openFrontierNode(node.type, node.attrs, add);\n }\n return $to;\n }\n openFrontierNode(type, attrs = null, content) {\n let top = this.frontier[this.depth];\n top.match = top.match.matchType(type);\n this.placed = addToFragment(this.placed, this.depth, Fragment.from(type.create(attrs, content)));\n this.frontier.push({ type, match: type.contentMatch });\n }\n closeFrontierNode() {\n let open = this.frontier.pop();\n let add = open.match.fillBefore(Fragment.empty, true);\n if (add.childCount)\n this.placed = addToFragment(this.placed, this.frontier.length, add);\n }\n}\nfunction dropFromFragment(fragment, depth, count) {\n if (depth == 0)\n return fragment.cutByIndex(count, fragment.childCount);\n return fragment.replaceChild(0, fragment.firstChild.copy(dropFromFragment(fragment.firstChild.content, depth - 1, count)));\n}\nfunction addToFragment(fragment, depth, content) {\n if (depth == 0)\n return fragment.append(content);\n return fragment.replaceChild(fragment.childCount - 1, fragment.lastChild.copy(addToFragment(fragment.lastChild.content, depth - 1, content)));\n}\nfunction contentAt(fragment, depth) {\n for (let i = 0; i < depth; i++)\n fragment = fragment.firstChild.content;\n return fragment;\n}\nfunction closeNodeStart(node, openStart, openEnd) {\n if (openStart <= 0)\n return node;\n let frag = node.content;\n if (openStart > 1)\n frag = frag.replaceChild(0, closeNodeStart(frag.firstChild, openStart - 1, frag.childCount == 1 ? openEnd - 1 : 0));\n if (openStart > 0) {\n frag = node.type.contentMatch.fillBefore(frag).append(frag);\n if (openEnd <= 0)\n frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(Fragment.empty, true));\n }\n return node.copy(frag);\n}\nfunction contentAfterFits($to, depth, type, match, open) {\n let node = $to.node(depth), index = open ? $to.indexAfter(depth) : $to.index(depth);\n if (index == node.childCount && !type.compatibleContent(node.type))\n return null;\n let fit = match.fillBefore(node.content, true, index);\n return fit && !invalidMarks(type, node.content, index) ? fit : null;\n}\nfunction invalidMarks(type, fragment, start) {\n for (let i = start; i < fragment.childCount; i++)\n if (!type.allowsMarks(fragment.child(i).marks))\n return true;\n return false;\n}\nfunction definesContent(type) {\n return type.spec.defining || type.spec.definingForContent;\n}\nfunction replaceRange(tr, from, to, slice) {\n if (!slice.size)\n return tr.deleteRange(from, to);\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n if (fitsTrivially($from, $to, slice))\n return tr.step(new ReplaceStep(from, to, slice));\n let targetDepths = coveredDepths($from, tr.doc.resolve(to));\n // Can't replace the whole document, so remove 0 if it's present\n if (targetDepths[targetDepths.length - 1] == 0)\n targetDepths.pop();\n // Negative numbers represent not expansion over the whole node at\n // that depth, but replacing from $from.before(-D) to $to.pos.\n let preferredTarget = -($from.depth + 1);\n targetDepths.unshift(preferredTarget);\n // This loop picks a preferred target depth, if one of the covering\n // depths is not outside of a defining node, and adds negative\n // depths for any depth that has $from at its start and does not\n // cross a defining node.\n for (let d = $from.depth, pos = $from.pos - 1; d > 0; d--, pos--) {\n let spec = $from.node(d).type.spec;\n if (spec.defining || spec.definingAsContext || spec.isolating)\n break;\n if (targetDepths.indexOf(d) > -1)\n preferredTarget = d;\n else if ($from.before(d) == pos)\n targetDepths.splice(1, 0, -d);\n }\n // Try to fit each possible depth of the slice into each possible\n // target depth, starting with the preferred depths.\n let preferredTargetIndex = targetDepths.indexOf(preferredTarget);\n let leftNodes = [], preferredDepth = slice.openStart;\n for (let content = slice.content, i = 0;; i++) {\n let node = content.firstChild;\n leftNodes.push(node);\n if (i == slice.openStart)\n break;\n content = node.content;\n }\n // Back up preferredDepth to cover defining textblocks directly\n // above it, possibly skipping a non-defining textblock.\n for (let d = preferredDepth - 1; d >= 0; d--) {\n let leftNode = leftNodes[d], def = definesContent(leftNode.type);\n if (def && !leftNode.sameMarkup($from.node(Math.abs(preferredTarget) - 1)))\n preferredDepth = d;\n else if (def || !leftNode.type.isTextblock)\n break;\n }\n for (let j = slice.openStart; j >= 0; j--) {\n let openDepth = (j + preferredDepth + 1) % (slice.openStart + 1);\n let insert = leftNodes[openDepth];\n if (!insert)\n continue;\n for (let i = 0; i < targetDepths.length; i++) {\n // Loop over possible expansion levels, starting with the\n // preferred one\n let targetDepth = targetDepths[(i + preferredTargetIndex) % targetDepths.length], expand = true;\n if (targetDepth < 0) {\n expand = false;\n targetDepth = -targetDepth;\n }\n let parent = $from.node(targetDepth - 1), index = $from.index(targetDepth - 1);\n if (parent.canReplaceWith(index, index, insert.type, insert.marks))\n return tr.replace($from.before(targetDepth), expand ? $to.after(targetDepth) : to, new Slice(closeFragment(slice.content, 0, slice.openStart, openDepth), openDepth, slice.openEnd));\n }\n }\n let startSteps = tr.steps.length;\n for (let i = targetDepths.length - 1; i >= 0; i--) {\n tr.replace(from, to, slice);\n if (tr.steps.length > startSteps)\n break;\n let depth = targetDepths[i];\n if (depth < 0)\n continue;\n from = $from.before(depth);\n to = $to.after(depth);\n }\n}\nfunction closeFragment(fragment, depth, oldOpen, newOpen, parent) {\n if (depth < oldOpen) {\n let first = fragment.firstChild;\n fragment = fragment.replaceChild(0, first.copy(closeFragment(first.content, depth + 1, oldOpen, newOpen, first)));\n }\n if (depth > newOpen) {\n let match = parent.contentMatchAt(0);\n let start = match.fillBefore(fragment).append(fragment);\n fragment = start.append(match.matchFragment(start).fillBefore(Fragment.empty, true));\n }\n return fragment;\n}\nfunction replaceRangeWith(tr, from, to, node) {\n if (!node.isInline && from == to && tr.doc.resolve(from).parent.content.size) {\n let point = insertPoint(tr.doc, from, node.type);\n if (point != null)\n from = to = point;\n }\n tr.replaceRange(from, to, new Slice(Fragment.from(node), 0, 0));\n}\nfunction deleteRange(tr, from, to) {\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n let covered = coveredDepths($from, $to);\n for (let i = 0; i < covered.length; i++) {\n let depth = covered[i], last = i == covered.length - 1;\n if ((last && depth == 0) || $from.node(depth).type.contentMatch.validEnd)\n return tr.delete($from.start(depth), $to.end(depth));\n if (depth > 0 && (last || $from.node(depth - 1).canReplace($from.index(depth - 1), $to.indexAfter(depth - 1))))\n return tr.delete($from.before(depth), $to.after(depth));\n }\n for (let d = 1; d <= $from.depth && d <= $to.depth; d++) {\n if (from - $from.start(d) == $from.depth - d && to > $from.end(d) && $to.end(d) - to != $to.depth - d)\n return tr.delete($from.before(d), to);\n }\n tr.delete(from, to);\n}\n// Returns an array of all depths for which $from - $to spans the\n// whole content of the nodes at that depth.\nfunction coveredDepths($from, $to) {\n let result = [], minDepth = Math.min($from.depth, $to.depth);\n for (let d = minDepth; d >= 0; d--) {\n let start = $from.start(d);\n if (start < $from.pos - ($from.depth - d) ||\n $to.end(d) > $to.pos + ($to.depth - d) ||\n $from.node(d).type.spec.isolating ||\n $to.node(d).type.spec.isolating)\n break;\n if (start == $to.start(d) ||\n (d == $from.depth && d == $to.depth && $from.parent.inlineContent && $to.parent.inlineContent &&\n d && $to.start(d - 1) == start - 1))\n result.push(d);\n }\n return result;\n}\n\n/**\nUpdate an attribute in a specific node.\n*/\nclass AttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n 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 = 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);\n/**\nUpdate an attribute in the doc node.\n*/\nclass DocAttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let attrs = 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);\n\n/**\n@internal\n*/\nlet TransformError = class extends Error {\n};\nTransformError = function TransformError(message) {\n let err = Error.call(this, message);\n err.__proto__ = TransformError.prototype;\n return err;\n};\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\nTransformError.prototype.name = \"TransformError\";\n/**\nAbstraction to build up and track an array of\n[steps](https://prosemirror.net/docs/ref/#transform.Step) representing a document transformation.\n\nMost transforming methods return the `Transform` object itself, so\nthat they can be chained.\n*/\nclass Transform {\n /**\n Create a transform that starts with the given document.\n */\n constructor(\n /**\n The current document (the result of applying the steps in the\n transform).\n */\n doc) {\n this.doc = doc;\n /**\n The steps in this transform.\n */\n this.steps = [];\n /**\n The documents before each of the steps.\n */\n this.docs = [];\n /**\n A mapping with the maps for each of the steps in this transform.\n */\n this.mapping = new Mapping;\n }\n /**\n The starting document.\n */\n get before() { return this.docs.length ? this.docs[0] : this.doc; }\n /**\n Apply a new step in this transform, saving the result. Throws an\n error when the step fails.\n */\n step(step) {\n let result = this.maybeStep(step);\n if (result.failed)\n throw new TransformError(result.failed);\n return this;\n }\n /**\n Try to apply a step in this transformation, ignoring it if it\n fails. Returns the step result.\n */\n maybeStep(step) {\n let result = step.apply(this.doc);\n if (!result.failed)\n this.addStep(step, result.doc);\n return result;\n }\n /**\n True when the document has been changed (when there are any\n steps).\n */\n get docChanged() {\n return this.steps.length > 0;\n }\n /**\n @internal\n */\n addStep(step, doc) {\n this.docs.push(this.doc);\n this.steps.push(step);\n this.mapping.appendMap(step.getMap());\n this.doc = doc;\n }\n /**\n Replace the part of the document between `from` and `to` with the\n given `slice`.\n */\n replace(from, to = from, slice = Slice.empty) {\n let step = replaceStep(this.doc, from, to, slice);\n if (step)\n this.step(step);\n return this;\n }\n /**\n Replace the given range with the given content, which may be a\n fragment, node, or array of nodes.\n */\n replaceWith(from, to, content) {\n return this.replace(from, to, new Slice(Fragment.from(content), 0, 0));\n }\n /**\n Delete the content between the given positions.\n */\n delete(from, to) {\n return this.replace(from, to, Slice.empty);\n }\n /**\n Insert the given content at the given position.\n */\n insert(pos, content) {\n return this.replaceWith(pos, pos, content);\n }\n /**\n Replace a range of the document with a given slice, using\n `from`, `to`, and the slice's\n [`openStart`](https://prosemirror.net/docs/ref/#model.Slice.openStart) property as hints, rather\n than fixed start and end points. This method may grow the\n replaced area or close open nodes in the slice in order to get a\n fit that is more in line with WYSIWYG expectations, by dropping\n fully covered parent nodes of the replaced region when they are\n marked [non-defining as\n context](https://prosemirror.net/docs/ref/#model.NodeSpec.definingAsContext), or including an\n open parent node from the slice that _is_ marked as [defining\n its content](https://prosemirror.net/docs/ref/#model.NodeSpec.definingForContent).\n \n This is the method, for example, to handle paste. The similar\n [`replace`](https://prosemirror.net/docs/ref/#transform.Transform.replace) method is a more\n primitive tool which will _not_ move the start and end of its given\n range, and is useful in situations where you need more precise\n control over what happens.\n */\n replaceRange(from, to, slice) {\n replaceRange(this, from, to, slice);\n return this;\n }\n /**\n Replace the given range with a node, but use `from` and `to` as\n hints, rather than precise positions. When from and to are the same\n and are at the start or end of a parent node in which the given\n node doesn't fit, this method may _move_ them out towards a parent\n that does allow the given node to be placed. When the given range\n completely covers a parent node, this method may completely replace\n that parent node.\n */\n replaceRangeWith(from, to, node) {\n replaceRangeWith(this, from, to, node);\n return this;\n }\n /**\n Delete the given range, expanding it to cover fully covered\n parent nodes until a valid replace is found.\n */\n deleteRange(from, to) {\n deleteRange(this, from, to);\n return this;\n }\n /**\n Split the content in the given range off from its parent, if there\n is sibling content before or after it, and move it up the tree to\n the depth specified by `target`. You'll probably want to use\n [`liftTarget`](https://prosemirror.net/docs/ref/#transform.liftTarget) to compute `target`, to make\n sure the lift is valid.\n */\n lift(range, target) {\n lift(this, range, target);\n return this;\n }\n /**\n Join the blocks around the given position. If depth is 2, their\n last and first siblings are also joined, and so on.\n */\n join(pos, depth = 1) {\n join(this, pos, depth);\n return this;\n }\n /**\n Wrap the given [range](https://prosemirror.net/docs/ref/#model.NodeRange) in the given set of wrappers.\n The wrappers are assumed to be valid in this position, and should\n probably be computed with [`findWrapping`](https://prosemirror.net/docs/ref/#transform.findWrapping).\n */\n wrap(range, wrappers) {\n wrap(this, range, wrappers);\n return this;\n }\n /**\n Set the type of all textblocks (partly) between `from` and `to` to\n the given node type with the given attributes.\n */\n setBlockType(from, to = from, type, attrs = null) {\n setBlockType(this, from, to, type, attrs);\n return this;\n }\n /**\n Change the type, attributes, and/or marks of the node at `pos`.\n When `type` isn't given, the existing node type is preserved,\n */\n setNodeMarkup(pos, type, attrs = null, marks) {\n setNodeMarkup(this, pos, type, attrs, marks);\n return this;\n }\n /**\n Set a single attribute on a given node to a new value.\n The `pos` addresses the document content. Use `setDocAttribute`\n to set attributes on the document itself.\n */\n setNodeAttribute(pos, attr, value) {\n this.step(new AttrStep(pos, attr, value));\n return this;\n }\n /**\n Set a single attribute on the document to a new value.\n */\n setDocAttribute(attr, value) {\n this.step(new DocAttrStep(attr, value));\n return this;\n }\n /**\n Add a mark to the node at position `pos`.\n */\n addNodeMark(pos, mark) {\n this.step(new AddNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Remove a mark (or a mark of the given type) from the node at\n position `pos`.\n */\n removeNodeMark(pos, mark) {\n if (!(mark instanceof Mark)) {\n let node = this.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at position \" + pos);\n mark = mark.isInSet(node.marks);\n if (!mark)\n return this;\n }\n this.step(new RemoveNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Split the node at the given position, and optionally, if `depth` is\n greater than one, any number of nodes above that. By default, the\n parts split off will inherit the node type of the original node.\n This can be changed by passing an array of types and attributes to\n use after the split.\n */\n split(pos, depth = 1, typesAfter) {\n split(this, pos, depth, typesAfter);\n return this;\n }\n /**\n Add the given mark to the inline content between `from` and `to`.\n */\n addMark(from, to, mark) {\n addMark(this, from, to, mark);\n return this;\n }\n /**\n Remove marks from inline nodes between `from` and `to`. When\n `mark` is a single mark, remove precisely that mark. When it is\n a mark type, remove all marks of that type. When it is null,\n remove all marks of any type.\n */\n removeMark(from, to, mark) {\n removeMark(this, from, to, mark);\n return this;\n }\n /**\n Removes all marks and nodes from the content of the node at\n `pos` that don't match the given new parent node type. Accepts\n an optional starting [content match](https://prosemirror.net/docs/ref/#model.ContentMatch) as\n third argument.\n */\n clearIncompatible(pos, parentType, match) {\n clearIncompatible(this, pos, parentType, match);\n return this;\n }\n}\n\nexport { AddMarkStep, AddNodeMarkStep, AttrStep, DocAttrStep, MapResult, Mapping, RemoveMarkStep, RemoveNodeMarkStep, ReplaceAroundStep, ReplaceStep, Step, StepMap, StepResult, Transform, TransformError, canJoin, canSplit, dropPoint, findWrapping, insertPoint, joinPoint, liftTarget, replaceStep };\n","// src/index.ts\nimport { Plugin as Plugin2 } from \"prosemirror-state\";\n\n// src/cellselection.ts\nimport { Fragment, Slice } from \"prosemirror-model\";\nimport {\n NodeSelection as NodeSelection2,\n Selection,\n SelectionRange,\n TextSelection\n} from \"prosemirror-state\";\nimport { Decoration, DecorationSet } from \"prosemirror-view\";\n\n// src/tablemap.ts\nvar readFromCache;\nvar addToCache;\nif (typeof WeakMap != \"undefined\") {\n let cache = /* @__PURE__ */ new WeakMap();\n readFromCache = (key) => cache.get(key);\n addToCache = (key, value) => {\n cache.set(key, value);\n return value;\n };\n} else {\n const cache = [];\n const cacheSize = 10;\n let cachePos = 0;\n readFromCache = (key) => {\n for (let i = 0; i < cache.length; i += 2)\n if (cache[i] == key)\n return cache[i + 1];\n };\n addToCache = (key, value) => {\n if (cachePos == cacheSize)\n cachePos = 0;\n cache[cachePos++] = key;\n return cache[cachePos++] = value;\n };\n}\nvar TableMap = class {\n constructor(width, height, map, problems) {\n this.width = width;\n this.height = height;\n this.map = map;\n this.problems = problems;\n }\n // Find the dimensions of the cell at the given position.\n findCell(pos) {\n for (let i = 0; i < this.map.length; i++) {\n const curPos = this.map[i];\n if (curPos != pos)\n continue;\n const left = i % this.width;\n const top = i / this.width | 0;\n let right = left + 1;\n let bottom = top + 1;\n for (let j = 1; right < this.width && this.map[i + j] == curPos; j++) {\n right++;\n }\n for (let j = 1; bottom < this.height && this.map[i + this.width * j] == curPos; j++) {\n bottom++;\n }\n return { left, top, right, bottom };\n }\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n // Find the left side of the cell at the given position.\n colCount(pos) {\n for (let i = 0; i < this.map.length; i++) {\n if (this.map[i] == pos) {\n return i % this.width;\n }\n }\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n // Find the next cell in the given direction, starting from the cell\n // at `pos`, if any.\n nextCell(pos, axis, dir) {\n const { left, right, top, bottom } = this.findCell(pos);\n if (axis == \"horiz\") {\n if (dir < 0 ? left == 0 : right == this.width)\n return null;\n return this.map[top * this.width + (dir < 0 ? left - 1 : right)];\n } else {\n if (dir < 0 ? top == 0 : bottom == this.height)\n return null;\n return this.map[left + this.width * (dir < 0 ? top - 1 : bottom)];\n }\n }\n // Get the rectangle spanning the two given cells.\n rectBetween(a, b) {\n const {\n left: leftA,\n right: rightA,\n top: topA,\n bottom: bottomA\n } = this.findCell(a);\n const {\n left: leftB,\n right: rightB,\n top: topB,\n bottom: bottomB\n } = this.findCell(b);\n return {\n left: Math.min(leftA, leftB),\n top: Math.min(topA, topB),\n right: Math.max(rightA, rightB),\n bottom: Math.max(bottomA, bottomB)\n };\n }\n // Return the position of all cells that have the top left corner in\n // the given rectangle.\n cellsInRect(rect) {\n const result = [];\n const seen = {};\n for (let row = rect.top; row < rect.bottom; row++) {\n for (let col = rect.left; col < rect.right; col++) {\n const index = row * this.width + col;\n const pos = this.map[index];\n if (seen[pos])\n continue;\n seen[pos] = true;\n if (col == rect.left && col && this.map[index - 1] == pos || row == rect.top && row && this.map[index - this.width] == pos) {\n continue;\n }\n result.push(pos);\n }\n }\n return result;\n }\n // Return the position at which the cell at the given row and column\n // starts, or would start, if a cell started there.\n positionAt(row, col, table) {\n for (let i = 0, rowStart = 0; ; i++) {\n const rowEnd = rowStart + table.child(i).nodeSize;\n if (i == row) {\n let index = col + row * this.width;\n const rowEndIndex = (row + 1) * this.width;\n while (index < rowEndIndex && this.map[index] < rowStart)\n index++;\n return index == rowEndIndex ? rowEnd - 1 : this.map[index];\n }\n rowStart = rowEnd;\n }\n }\n // Find the table map for the given table node.\n static get(table) {\n return readFromCache(table) || addToCache(table, computeMap(table));\n }\n};\nfunction computeMap(table) {\n if (table.type.spec.tableRole != \"table\")\n throw new RangeError(\"Not a table node: \" + table.type.name);\n const width = findWidth(table), height = table.childCount;\n const map = [];\n let mapPos = 0;\n let problems = null;\n const colWidths = [];\n for (let i = 0, e = width * height; i < e; i++)\n map[i] = 0;\n for (let row = 0, pos = 0; row < height; row++) {\n const rowNode = table.child(row);\n pos++;\n for (let i = 0; ; i++) {\n while (mapPos < map.length && map[mapPos] != 0)\n mapPos++;\n if (i == rowNode.childCount)\n break;\n const cellNode = rowNode.child(i);\n const { colspan, rowspan, colwidth } = cellNode.attrs;\n for (let h = 0; h < rowspan; h++) {\n if (h + row >= height) {\n (problems || (problems = [])).push({\n type: \"overlong_rowspan\",\n pos,\n n: rowspan - h\n });\n break;\n }\n const start = mapPos + h * width;\n for (let w = 0; w < colspan; w++) {\n if (map[start + w] == 0)\n map[start + w] = pos;\n else\n (problems || (problems = [])).push({\n type: \"collision\",\n row,\n pos,\n n: colspan - w\n });\n const colW = colwidth && colwidth[w];\n if (colW) {\n const widthIndex = (start + w) % width * 2, prev = colWidths[widthIndex];\n if (prev == null || prev != colW && colWidths[widthIndex + 1] == 1) {\n colWidths[widthIndex] = colW;\n colWidths[widthIndex + 1] = 1;\n } else if (prev == colW) {\n colWidths[widthIndex + 1]++;\n }\n }\n }\n }\n mapPos += colspan;\n pos += cellNode.nodeSize;\n }\n const expectedPos = (row + 1) * width;\n let missing = 0;\n while (mapPos < expectedPos)\n if (map[mapPos++] == 0)\n missing++;\n if (missing)\n (problems || (problems = [])).push({ type: \"missing\", row, n: missing });\n pos++;\n }\n const tableMap = new TableMap(width, height, map, problems);\n let badWidths = false;\n for (let i = 0; !badWidths && i < colWidths.length; i += 2)\n if (colWidths[i] != null && colWidths[i + 1] < height)\n badWidths = true;\n if (badWidths)\n findBadColWidths(tableMap, colWidths, table);\n return tableMap;\n}\nfunction findWidth(table) {\n let width = -1;\n let hasRowSpan = false;\n for (let row = 0; row < table.childCount; row++) {\n const rowNode = table.child(row);\n let rowWidth = 0;\n if (hasRowSpan)\n for (let j = 0; j < row; j++) {\n const prevRow = table.child(j);\n for (let i = 0; i < prevRow.childCount; i++) {\n const cell = prevRow.child(i);\n if (j + cell.attrs.rowspan > row)\n rowWidth += cell.attrs.colspan;\n }\n }\n for (let i = 0; i < rowNode.childCount; i++) {\n const cell = rowNode.child(i);\n rowWidth += cell.attrs.colspan;\n if (cell.attrs.rowspan > 1)\n hasRowSpan = true;\n }\n if (width == -1)\n width = rowWidth;\n else if (width != rowWidth)\n width = Math.max(width, rowWidth);\n }\n return width;\n}\nfunction findBadColWidths(map, colWidths, table) {\n if (!map.problems)\n map.problems = [];\n const seen = {};\n for (let i = 0; i < map.map.length; i++) {\n const pos = map.map[i];\n if (seen[pos])\n continue;\n seen[pos] = true;\n const node = table.nodeAt(pos);\n if (!node) {\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n let updated = null;\n const attrs = node.attrs;\n for (let j = 0; j < attrs.colspan; j++) {\n const col = (i + j) % map.width;\n const colWidth = colWidths[col * 2];\n if (colWidth != null && (!attrs.colwidth || attrs.colwidth[j] != colWidth))\n (updated || (updated = freshColWidth(attrs)))[j] = colWidth;\n }\n if (updated)\n map.problems.unshift({\n type: \"colwidth mismatch\",\n pos,\n colwidth: updated\n });\n }\n}\nfunction freshColWidth(attrs) {\n if (attrs.colwidth)\n return attrs.colwidth.slice();\n const result = [];\n for (let i = 0; i < attrs.colspan; i++)\n result.push(0);\n return result;\n}\n\n// src/util.ts\nimport { PluginKey } from \"prosemirror-state\";\n\n// src/schema.ts\nfunction getCellAttrs(dom, extraAttrs) {\n if (typeof dom === \"string\") {\n return {};\n }\n const widthAttr = dom.getAttribute(\"data-colwidth\");\n const widths = widthAttr && /^\\d+(,\\d+)*$/.test(widthAttr) ? widthAttr.split(\",\").map((s) => Number(s)) : null;\n const colspan = Number(dom.getAttribute(\"colspan\") || 1);\n const result = {\n colspan,\n rowspan: Number(dom.getAttribute(\"rowspan\") || 1),\n colwidth: widths && widths.length == colspan ? widths : null\n };\n for (const prop in extraAttrs) {\n const getter = extraAttrs[prop].getFromDOM;\n const value = getter && getter(dom);\n if (value != null) {\n result[prop] = value;\n }\n }\n return result;\n}\nfunction setCellAttrs(node, extraAttrs) {\n const attrs = {};\n if (node.attrs.colspan != 1)\n attrs.colspan = node.attrs.colspan;\n if (node.attrs.rowspan != 1)\n attrs.rowspan = node.attrs.rowspan;\n if (node.attrs.colwidth)\n attrs[\"data-colwidth\"] = node.attrs.colwidth.join(\",\");\n for (const prop in extraAttrs) {\n const setter = extraAttrs[prop].setDOMAttr;\n if (setter)\n setter(node.attrs[prop], attrs);\n }\n return attrs;\n}\nfunction tableNodes(options) {\n const extraAttrs = options.cellAttributes || {};\n const cellAttrs = {\n colspan: { default: 1 },\n rowspan: { default: 1 },\n colwidth: { default: null }\n };\n for (const prop in extraAttrs)\n cellAttrs[prop] = { default: extraAttrs[prop].default };\n return {\n table: {\n content: \"table_row+\",\n tableRole: \"table\",\n isolating: true,\n group: options.tableGroup,\n parseDOM: [{ tag: \"table\" }],\n toDOM() {\n return [\"table\", [\"tbody\", 0]];\n }\n },\n table_row: {\n content: \"(table_cell | table_header)*\",\n tableRole: \"row\",\n parseDOM: [{ tag: \"tr\" }],\n toDOM() {\n return [\"tr\", 0];\n }\n },\n table_cell: {\n content: options.cellContent,\n attrs: cellAttrs,\n tableRole: \"cell\",\n isolating: true,\n parseDOM: [\n { tag: \"td\", getAttrs: (dom) => getCellAttrs(dom, extraAttrs) }\n ],\n toDOM(node) {\n return [\"td\", setCellAttrs(node, extraAttrs), 0];\n }\n },\n table_header: {\n content: options.cellContent,\n attrs: cellAttrs,\n tableRole: \"header_cell\",\n isolating: true,\n parseDOM: [\n { tag: \"th\", getAttrs: (dom) => getCellAttrs(dom, extraAttrs) }\n ],\n toDOM(node) {\n return [\"th\", setCellAttrs(node, extraAttrs), 0];\n }\n }\n };\n}\nfunction tableNodeTypes(schema) {\n let result = schema.cached.tableNodeTypes;\n if (!result) {\n result = schema.cached.tableNodeTypes = {};\n for (const name in schema.nodes) {\n const type = schema.nodes[name], role = type.spec.tableRole;\n if (role)\n result[role] = type;\n }\n }\n return result;\n}\n\n// src/util.ts\nvar tableEditingKey = new PluginKey(\"selectingCells\");\nfunction cellAround($pos) {\n for (let d = $pos.depth - 1; d > 0; d--)\n if ($pos.node(d).type.spec.tableRole == \"row\")\n return $pos.node(0).resolve($pos.before(d + 1));\n return null;\n}\nfunction cellWrapping($pos) {\n for (let d = $pos.depth; d > 0; d--) {\n const role = $pos.node(d).type.spec.tableRole;\n if (role === \"cell\" || role === \"header_cell\")\n return $pos.node(d);\n }\n return null;\n}\nfunction isInTable(state) {\n const $head = state.selection.$head;\n for (let d = $head.depth; d > 0; d--)\n if ($head.node(d).type.spec.tableRole == \"row\")\n return true;\n return false;\n}\nfunction selectionCell(state) {\n const sel = state.selection;\n if (\"$anchorCell\" in sel && sel.$anchorCell) {\n return sel.$anchorCell.pos > sel.$headCell.pos ? sel.$anchorCell : sel.$headCell;\n } else if (\"node\" in sel && sel.node && sel.node.type.spec.tableRole == \"cell\") {\n return sel.$anchor;\n }\n const $cell = cellAround(sel.$head) || cellNear(sel.$head);\n if ($cell) {\n return $cell;\n }\n throw new RangeError(`No cell found around position ${sel.head}`);\n}\nfunction cellNear($pos) {\n for (let after = $pos.nodeAfter, pos = $pos.pos; after; after = after.firstChild, pos++) {\n const role = after.type.spec.tableRole;\n if (role == \"cell\" || role == \"header_cell\")\n return $pos.doc.resolve(pos);\n }\n for (let before = $pos.nodeBefore, pos = $pos.pos; before; before = before.lastChild, pos--) {\n const role = before.type.spec.tableRole;\n if (role == \"cell\" || role == \"header_cell\")\n return $pos.doc.resolve(pos - before.nodeSize);\n }\n}\nfunction pointsAtCell($pos) {\n return $pos.parent.type.spec.tableRole == \"row\" && !!$pos.nodeAfter;\n}\nfunction moveCellForward($pos) {\n return $pos.node(0).resolve($pos.pos + $pos.nodeAfter.nodeSize);\n}\nfunction inSameTable($cellA, $cellB) {\n return $cellA.depth == $cellB.depth && $cellA.pos >= $cellB.start(-1) && $cellA.pos <= $cellB.end(-1);\n}\nfunction findCell($pos) {\n return TableMap.get($pos.node(-1)).findCell($pos.pos - $pos.start(-1));\n}\nfunction colCount($pos) {\n return TableMap.get($pos.node(-1)).colCount($pos.pos - $pos.start(-1));\n}\nfunction nextCell($pos, axis, dir) {\n const table = $pos.node(-1);\n const map = TableMap.get(table);\n const tableStart = $pos.start(-1);\n const moved = map.nextCell($pos.pos - tableStart, axis, dir);\n return moved == null ? null : $pos.node(0).resolve(tableStart + moved);\n}\nfunction removeColSpan(attrs, pos, n = 1) {\n const result = { ...attrs, colspan: attrs.colspan - n };\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n result.colwidth.splice(pos, n);\n if (!result.colwidth.some((w) => w > 0))\n result.colwidth = null;\n }\n return result;\n}\nfunction addColSpan(attrs, pos, n = 1) {\n const result = { ...attrs, colspan: attrs.colspan + n };\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n for (let i = 0; i < n; i++)\n result.colwidth.splice(pos, 0, 0);\n }\n return result;\n}\nfunction columnIsHeader(map, table, col) {\n const headerCell = tableNodeTypes(table.type.schema).header_cell;\n for (let row = 0; row < map.height; row++)\n if (table.nodeAt(map.map[col + row * map.width]).type != headerCell)\n return false;\n return true;\n}\n\n// src/cellselection.ts\nvar CellSelection = class _CellSelection extends Selection {\n // A table selection is identified by its anchor and head cells. The\n // positions given to this constructor should point _before_ two\n // cells in the same table. They may be the same, to select a single\n // cell.\n constructor($anchorCell, $headCell = $anchorCell) {\n const table = $anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $anchorCell.start(-1);\n const rect = map.rectBetween(\n $anchorCell.pos - tableStart,\n $headCell.pos - tableStart\n );\n const doc = $anchorCell.node(0);\n const cells = map.cellsInRect(rect).filter((p) => p != $headCell.pos - tableStart);\n cells.unshift($headCell.pos - tableStart);\n const ranges = cells.map((pos) => {\n const cell = table.nodeAt(pos);\n if (!cell) {\n throw RangeError(`No cell with offset ${pos} found`);\n }\n const from = tableStart + pos + 1;\n return new SelectionRange(\n doc.resolve(from),\n doc.resolve(from + cell.content.size)\n );\n });\n super(ranges[0].$from, ranges[0].$to, ranges);\n this.$anchorCell = $anchorCell;\n this.$headCell = $headCell;\n }\n map(doc, mapping) {\n const $anchorCell = doc.resolve(mapping.map(this.$anchorCell.pos));\n const $headCell = doc.resolve(mapping.map(this.$headCell.pos));\n if (pointsAtCell($anchorCell) && pointsAtCell($headCell) && inSameTable($anchorCell, $headCell)) {\n const tableChanged = this.$anchorCell.node(-1) != $anchorCell.node(-1);\n if (tableChanged && this.isRowSelection())\n return _CellSelection.rowSelection($anchorCell, $headCell);\n else if (tableChanged && this.isColSelection())\n return _CellSelection.colSelection($anchorCell, $headCell);\n else\n return new _CellSelection($anchorCell, $headCell);\n }\n return TextSelection.between($anchorCell, $headCell);\n }\n // Returns a rectangular slice of table rows containing the selected\n // cells.\n content() {\n const table = this.$anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = this.$anchorCell.start(-1);\n const rect = map.rectBetween(\n this.$anchorCell.pos - tableStart,\n this.$headCell.pos - tableStart\n );\n const seen = {};\n const rows = [];\n for (let row = rect.top; row < rect.bottom; row++) {\n const rowContent = [];\n for (let index = row * map.width + rect.left, col = rect.left; col < rect.right; col++, index++) {\n const pos = map.map[index];\n if (seen[pos])\n continue;\n seen[pos] = true;\n const cellRect = map.findCell(pos);\n let cell = table.nodeAt(pos);\n if (!cell) {\n throw RangeError(`No cell with offset ${pos} found`);\n }\n const extraLeft = rect.left - cellRect.left;\n const extraRight = cellRect.right - rect.right;\n if (extraLeft > 0 || extraRight > 0) {\n let attrs = cell.attrs;\n if (extraLeft > 0) {\n attrs = removeColSpan(attrs, 0, extraLeft);\n }\n if (extraRight > 0) {\n attrs = removeColSpan(\n attrs,\n attrs.colspan - extraRight,\n extraRight\n );\n }\n if (cellRect.left < rect.left) {\n cell = cell.type.createAndFill(attrs);\n if (!cell) {\n throw RangeError(\n `Could not create cell with attrs ${JSON.stringify(attrs)}`\n );\n }\n } else {\n cell = cell.type.create(attrs, cell.content);\n }\n }\n if (cellRect.top < rect.top || cellRect.bottom > rect.bottom) {\n const attrs = {\n ...cell.attrs,\n rowspan: Math.min(cellRect.bottom, rect.bottom) - Math.max(cellRect.top, rect.top)\n };\n if (cellRect.top < rect.top) {\n cell = cell.type.createAndFill(attrs);\n } else {\n cell = cell.type.create(attrs, cell.content);\n }\n }\n rowContent.push(cell);\n }\n rows.push(table.child(row).copy(Fragment.from(rowContent)));\n }\n const fragment = this.isColSelection() && this.isRowSelection() ? table : rows;\n return new Slice(Fragment.from(fragment), 1, 1);\n }\n replace(tr, content = Slice.empty) {\n const mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n const { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n tr.replace(\n mapping.map($from.pos),\n mapping.map($to.pos),\n i ? Slice.empty : content\n );\n }\n const sel = Selection.findFrom(\n tr.doc.resolve(tr.mapping.slice(mapFrom).map(this.to)),\n -1\n );\n if (sel)\n tr.setSelection(sel);\n }\n replaceWith(tr, node) {\n this.replace(tr, new Slice(Fragment.from(node), 0, 0));\n }\n forEachCell(f) {\n const table = this.$anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = this.$anchorCell.start(-1);\n const cells = map.cellsInRect(\n map.rectBetween(\n this.$anchorCell.pos - tableStart,\n this.$headCell.pos - tableStart\n )\n );\n for (let i = 0; i < cells.length; i++) {\n f(table.nodeAt(cells[i]), tableStart + cells[i]);\n }\n }\n // True if this selection goes all the way from the top to the\n // bottom of the table.\n isColSelection() {\n const anchorTop = this.$anchorCell.index(-1);\n const headTop = this.$headCell.index(-1);\n if (Math.min(anchorTop, headTop) > 0)\n return false;\n const anchorBottom = anchorTop + this.$anchorCell.nodeAfter.attrs.rowspan;\n const headBottom = headTop + this.$headCell.nodeAfter.attrs.rowspan;\n return Math.max(anchorBottom, headBottom) == this.$headCell.node(-1).childCount;\n }\n // Returns the smallest column selection that covers the given anchor\n // and head cell.\n static colSelection($anchorCell, $headCell = $anchorCell) {\n const table = $anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $anchorCell.start(-1);\n const anchorRect = map.findCell($anchorCell.pos - tableStart);\n const headRect = map.findCell($headCell.pos - tableStart);\n const doc = $anchorCell.node(0);\n if (anchorRect.top <= headRect.top) {\n if (anchorRect.top > 0)\n $anchorCell = doc.resolve(tableStart + map.map[anchorRect.left]);\n if (headRect.bottom < map.height)\n $headCell = doc.resolve(\n tableStart + map.map[map.width * (map.height - 1) + headRect.right - 1]\n );\n } else {\n if (headRect.top > 0)\n $headCell = doc.resolve(tableStart + map.map[headRect.left]);\n if (anchorRect.bottom < map.height)\n $anchorCell = doc.resolve(\n tableStart + map.map[map.width * (map.height - 1) + anchorRect.right - 1]\n );\n }\n return new _CellSelection($anchorCell, $headCell);\n }\n // True if this selection goes all the way from the left to the\n // right of the table.\n isRowSelection() {\n const table = this.$anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = this.$anchorCell.start(-1);\n const anchorLeft = map.colCount(this.$anchorCell.pos - tableStart);\n const headLeft = map.colCount(this.$headCell.pos - tableStart);\n if (Math.min(anchorLeft, headLeft) > 0)\n return false;\n const anchorRight = anchorLeft + this.$anchorCell.nodeAfter.attrs.colspan;\n const headRight = headLeft + this.$headCell.nodeAfter.attrs.colspan;\n return Math.max(anchorRight, headRight) == map.width;\n }\n eq(other) {\n return other instanceof _CellSelection && other.$anchorCell.pos == this.$anchorCell.pos && other.$headCell.pos == this.$headCell.pos;\n }\n // Returns the smallest row selection that covers the given anchor\n // and head cell.\n static rowSelection($anchorCell, $headCell = $anchorCell) {\n const table = $anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $anchorCell.start(-1);\n const anchorRect = map.findCell($anchorCell.pos - tableStart);\n const headRect = map.findCell($headCell.pos - tableStart);\n const doc = $anchorCell.node(0);\n if (anchorRect.left <= headRect.left) {\n if (anchorRect.left > 0)\n $anchorCell = doc.resolve(\n tableStart + map.map[anchorRect.top * map.width]\n );\n if (headRect.right < map.width)\n $headCell = doc.resolve(\n tableStart + map.map[map.width * (headRect.top + 1) - 1]\n );\n } else {\n if (headRect.left > 0)\n $headCell = doc.resolve(tableStart + map.map[headRect.top * map.width]);\n if (anchorRect.right < map.width)\n $anchorCell = doc.resolve(\n tableStart + map.map[map.width * (anchorRect.top + 1) - 1]\n );\n }\n return new _CellSelection($anchorCell, $headCell);\n }\n toJSON() {\n return {\n type: \"cell\",\n anchor: this.$anchorCell.pos,\n head: this.$headCell.pos\n };\n }\n static fromJSON(doc, json) {\n return new _CellSelection(doc.resolve(json.anchor), doc.resolve(json.head));\n }\n static create(doc, anchorCell, headCell = anchorCell) {\n return new _CellSelection(doc.resolve(anchorCell), doc.resolve(headCell));\n }\n getBookmark() {\n return new CellBookmark(this.$anchorCell.pos, this.$headCell.pos);\n }\n};\nCellSelection.prototype.visible = false;\nSelection.jsonID(\"cell\", CellSelection);\nvar CellBookmark = class _CellBookmark {\n constructor(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n }\n map(mapping) {\n return new _CellBookmark(mapping.map(this.anchor), mapping.map(this.head));\n }\n resolve(doc) {\n const $anchorCell = doc.resolve(this.anchor), $headCell = doc.resolve(this.head);\n if ($anchorCell.parent.type.spec.tableRole == \"row\" && $headCell.parent.type.spec.tableRole == \"row\" && $anchorCell.index() < $anchorCell.parent.childCount && $headCell.index() < $headCell.parent.childCount && inSameTable($anchorCell, $headCell))\n return new CellSelection($anchorCell, $headCell);\n else\n return Selection.near($headCell, 1);\n }\n};\nfunction drawCellSelection(state) {\n if (!(state.selection instanceof CellSelection))\n return null;\n const cells = [];\n state.selection.forEachCell((node, pos) => {\n cells.push(\n Decoration.node(pos, pos + node.nodeSize, { class: \"selectedCell\" })\n );\n });\n return DecorationSet.create(state.doc, cells);\n}\nfunction isCellBoundarySelection({ $from, $to }) {\n if ($from.pos == $to.pos || $from.pos < $from.pos - 6)\n return false;\n let afterFrom = $from.pos;\n let beforeTo = $to.pos;\n let depth = $from.depth;\n for (; depth >= 0; depth--, afterFrom++)\n if ($from.after(depth + 1) < $from.end(depth))\n break;\n for (let d = $to.depth; d >= 0; d--, beforeTo--)\n if ($to.before(d + 1) > $to.start(d))\n break;\n return afterFrom == beforeTo && /row|table/.test($from.node(depth).type.spec.tableRole);\n}\nfunction isTextSelectionAcrossCells({ $from, $to }) {\n let fromCellBoundaryNode;\n let toCellBoundaryNode;\n for (let i = $from.depth; i > 0; i--) {\n const node = $from.node(i);\n if (node.type.spec.tableRole === \"cell\" || node.type.spec.tableRole === \"header_cell\") {\n fromCellBoundaryNode = node;\n break;\n }\n }\n for (let i = $to.depth; i > 0; i--) {\n const node = $to.node(i);\n if (node.type.spec.tableRole === \"cell\" || node.type.spec.tableRole === \"header_cell\") {\n toCellBoundaryNode = node;\n break;\n }\n }\n return fromCellBoundaryNode !== toCellBoundaryNode && $to.parentOffset === 0;\n}\nfunction normalizeSelection(state, tr, allowTableNodeSelection) {\n const sel = (tr || state).selection;\n const doc = (tr || state).doc;\n let normalize;\n let role;\n if (sel instanceof NodeSelection2 && (role = sel.node.type.spec.tableRole)) {\n if (role == \"cell\" || role == \"header_cell\") {\n normalize = CellSelection.create(doc, sel.from);\n } else if (role == \"row\") {\n const $cell = doc.resolve(sel.from + 1);\n normalize = CellSelection.rowSelection($cell, $cell);\n } else if (!allowTableNodeSelection) {\n const map = TableMap.get(sel.node);\n const start = sel.from + 1;\n const lastCell = start + map.map[map.width * map.height - 1];\n normalize = CellSelection.create(doc, start + 1, lastCell);\n }\n } else if (sel instanceof TextSelection && isCellBoundarySelection(sel)) {\n normalize = TextSelection.create(doc, sel.from);\n } else if (sel instanceof TextSelection && isTextSelectionAcrossCells(sel)) {\n normalize = TextSelection.create(doc, sel.$from.start(), sel.$from.end());\n }\n if (normalize)\n (tr || (tr = state.tr)).setSelection(normalize);\n return tr;\n}\n\n// src/fixtables.ts\nimport { PluginKey as PluginKey2 } from \"prosemirror-state\";\nvar fixTablesKey = new PluginKey2(\"fix-tables\");\nfunction changedDescendants(old, cur, offset, f) {\n const oldSize = old.childCount, curSize = cur.childCount;\n outer:\n for (let i = 0, j = 0; i < curSize; i++) {\n const child = cur.child(i);\n for (let scan = j, e = Math.min(oldSize, i + 3); scan < e; scan++) {\n if (old.child(scan) == child) {\n j = scan + 1;\n offset += child.nodeSize;\n continue outer;\n }\n }\n f(child, offset);\n if (j < oldSize && old.child(j).sameMarkup(child))\n changedDescendants(old.child(j), child, offset + 1, f);\n else\n child.nodesBetween(0, child.content.size, f, offset + 1);\n offset += child.nodeSize;\n }\n}\nfunction fixTables(state, oldState) {\n let tr;\n const check = (node, pos) => {\n if (node.type.spec.tableRole == \"table\")\n tr = fixTable(state, node, pos, tr);\n };\n if (!oldState)\n state.doc.descendants(check);\n else if (oldState.doc != state.doc)\n changedDescendants(oldState.doc, state.doc, 0, check);\n return tr;\n}\nfunction fixTable(state, table, tablePos, tr) {\n const map = TableMap.get(table);\n if (!map.problems)\n return tr;\n if (!tr)\n tr = state.tr;\n const mustAdd = [];\n for (let i = 0; i < map.height; i++)\n mustAdd.push(0);\n for (let i = 0; i < map.problems.length; i++) {\n const prob = map.problems[i];\n if (prob.type == \"collision\") {\n const cell = table.nodeAt(prob.pos);\n if (!cell)\n continue;\n const attrs = cell.attrs;\n for (let j = 0; j < attrs.rowspan; j++)\n mustAdd[prob.row + j] += prob.n;\n tr.setNodeMarkup(\n tr.mapping.map(tablePos + 1 + prob.pos),\n null,\n removeColSpan(attrs, attrs.colspan - prob.n, prob.n)\n );\n } else if (prob.type == \"missing\") {\n mustAdd[prob.row] += prob.n;\n } else if (prob.type == \"overlong_rowspan\") {\n const cell = table.nodeAt(prob.pos);\n if (!cell)\n continue;\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, {\n ...cell.attrs,\n rowspan: cell.attrs.rowspan - prob.n\n });\n } else if (prob.type == \"colwidth mismatch\") {\n const cell = table.nodeAt(prob.pos);\n if (!cell)\n continue;\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, {\n ...cell.attrs,\n colwidth: prob.colwidth\n });\n }\n }\n let first, last;\n for (let i = 0; i < mustAdd.length; i++)\n if (mustAdd[i]) {\n if (first == null)\n first = i;\n last = i;\n }\n for (let i = 0, pos = tablePos + 1; i < map.height; i++) {\n const row = table.child(i);\n const end = pos + row.nodeSize;\n const add = mustAdd[i];\n if (add > 0) {\n let role = \"cell\";\n if (row.firstChild) {\n role = row.firstChild.type.spec.tableRole;\n }\n const nodes = [];\n for (let j = 0; j < add; j++) {\n const node = tableNodeTypes(state.schema)[role].createAndFill();\n if (node)\n nodes.push(node);\n }\n const side = (i == 0 || first == i - 1) && last == i ? pos + 1 : end - 1;\n tr.insert(tr.mapping.map(side), nodes);\n }\n pos = end;\n }\n return tr.setMeta(fixTablesKey, { fixTables: true });\n}\n\n// src/input.ts\nimport { Fragment as Fragment3, Slice as Slice3 } from \"prosemirror-model\";\nimport {\n Selection as Selection2,\n TextSelection as TextSelection2\n} from \"prosemirror-state\";\nimport { keydownHandler } from \"prosemirror-keymap\";\n\n// src/copypaste.ts\nimport { Fragment as Fragment2, Slice as Slice2 } from \"prosemirror-model\";\nimport { Transform } from \"prosemirror-transform\";\nfunction pastedCells(slice) {\n if (!slice.size)\n return null;\n let { content, openStart, openEnd } = slice;\n while (content.childCount == 1 && (openStart > 0 && openEnd > 0 || content.child(0).type.spec.tableRole == \"table\")) {\n openStart--;\n openEnd--;\n content = content.child(0).content;\n }\n const first = content.child(0);\n const role = first.type.spec.tableRole;\n const schema = first.type.schema, rows = [];\n if (role == \"row\") {\n for (let i = 0; i < content.childCount; i++) {\n let cells = content.child(i).content;\n const left = i ? 0 : Math.max(0, openStart - 1);\n const right = i < content.childCount - 1 ? 0 : Math.max(0, openEnd - 1);\n if (left || right)\n cells = fitSlice(\n tableNodeTypes(schema).row,\n new Slice2(cells, left, right)\n ).content;\n rows.push(cells);\n }\n } else if (role == \"cell\" || role == \"header_cell\") {\n rows.push(\n openStart || openEnd ? fitSlice(\n tableNodeTypes(schema).row,\n new Slice2(content, openStart, openEnd)\n ).content : content\n );\n } else {\n return null;\n }\n return ensureRectangular(schema, rows);\n}\nfunction ensureRectangular(schema, rows) {\n const widths = [];\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n for (let j = row.childCount - 1; j >= 0; j--) {\n const { rowspan, colspan } = row.child(j).attrs;\n for (let r = i; r < i + rowspan; r++)\n widths[r] = (widths[r] || 0) + colspan;\n }\n }\n let width = 0;\n for (let r = 0; r < widths.length; r++)\n width = Math.max(width, widths[r]);\n for (let r = 0; r < widths.length; r++) {\n if (r >= rows.length)\n rows.push(Fragment2.empty);\n if (widths[r] < width) {\n const empty = tableNodeTypes(schema).cell.createAndFill();\n const cells = [];\n for (let i = widths[r]; i < width; i++) {\n cells.push(empty);\n }\n rows[r] = rows[r].append(Fragment2.from(cells));\n }\n }\n return { height: rows.length, width, rows };\n}\nfunction fitSlice(nodeType, slice) {\n const node = nodeType.createAndFill();\n const tr = new Transform(node).replace(0, node.content.size, slice);\n return tr.doc;\n}\nfunction clipCells({ width, height, rows }, newWidth, newHeight) {\n if (width != newWidth) {\n const added = [];\n const newRows = [];\n for (let row = 0; row < rows.length; row++) {\n const frag = rows[row], cells = [];\n for (let col = added[row] || 0, i = 0; col < newWidth; i++) {\n let cell = frag.child(i % frag.childCount);\n if (col + cell.attrs.colspan > newWidth)\n cell = cell.type.createChecked(\n removeColSpan(\n cell.attrs,\n cell.attrs.colspan,\n col + cell.attrs.colspan - newWidth\n ),\n cell.content\n );\n cells.push(cell);\n col += cell.attrs.colspan;\n for (let j = 1; j < cell.attrs.rowspan; j++)\n added[row + j] = (added[row + j] || 0) + cell.attrs.colspan;\n }\n newRows.push(Fragment2.from(cells));\n }\n rows = newRows;\n width = newWidth;\n }\n if (height != newHeight) {\n const newRows = [];\n for (let row = 0, i = 0; row < newHeight; row++, i++) {\n const cells = [], source = rows[i % height];\n for (let j = 0; j < source.childCount; j++) {\n let cell = source.child(j);\n if (row + cell.attrs.rowspan > newHeight)\n cell = cell.type.create(\n {\n ...cell.attrs,\n rowspan: Math.max(1, newHeight - cell.attrs.rowspan)\n },\n cell.content\n );\n cells.push(cell);\n }\n newRows.push(Fragment2.from(cells));\n }\n rows = newRows;\n height = newHeight;\n }\n return { width, height, rows };\n}\nfunction growTable(tr, map, table, start, width, height, mapFrom) {\n const schema = tr.doc.type.schema;\n const types = tableNodeTypes(schema);\n let empty;\n let emptyHead;\n if (width > map.width) {\n for (let row = 0, rowEnd = 0; row < map.height; row++) {\n const rowNode = table.child(row);\n rowEnd += rowNode.nodeSize;\n const cells = [];\n let add;\n if (rowNode.lastChild == null || rowNode.lastChild.type == types.cell)\n add = empty || (empty = types.cell.createAndFill());\n else\n add = emptyHead || (emptyHead = types.header_cell.createAndFill());\n for (let i = map.width; i < width; i++)\n cells.push(add);\n tr.insert(tr.mapping.slice(mapFrom).map(rowEnd - 1 + start), cells);\n }\n }\n if (height > map.height) {\n const cells = [];\n for (let i = 0, start2 = (map.height - 1) * map.width; i < Math.max(map.width, width); i++) {\n const header = i >= map.width ? false : table.nodeAt(map.map[start2 + i]).type == types.header_cell;\n cells.push(\n header ? emptyHead || (emptyHead = types.header_cell.createAndFill()) : empty || (empty = types.cell.createAndFill())\n );\n }\n const emptyRow = types.row.create(null, Fragment2.from(cells)), rows = [];\n for (let i = map.height; i < height; i++)\n rows.push(emptyRow);\n tr.insert(tr.mapping.slice(mapFrom).map(start + table.nodeSize - 2), rows);\n }\n return !!(empty || emptyHead);\n}\nfunction isolateHorizontal(tr, map, table, start, left, right, top, mapFrom) {\n if (top == 0 || top == map.height)\n return false;\n let found = false;\n for (let col = left; col < right; col++) {\n const index = top * map.width + col, pos = map.map[index];\n if (map.map[index - map.width] == pos) {\n found = true;\n const cell = table.nodeAt(pos);\n const { top: cellTop, left: cellLeft } = map.findCell(pos);\n tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + start), null, {\n ...cell.attrs,\n rowspan: top - cellTop\n });\n tr.insert(\n tr.mapping.slice(mapFrom).map(map.positionAt(top, cellLeft, table)),\n cell.type.createAndFill({\n ...cell.attrs,\n rowspan: cellTop + cell.attrs.rowspan - top\n })\n );\n col += cell.attrs.colspan - 1;\n }\n }\n return found;\n}\nfunction isolateVertical(tr, map, table, start, top, bottom, left, mapFrom) {\n if (left == 0 || left == map.width)\n return false;\n let found = false;\n for (let row = top; row < bottom; row++) {\n const index = row * map.width + left, pos = map.map[index];\n if (map.map[index - 1] == pos) {\n found = true;\n const cell = table.nodeAt(pos);\n const cellLeft = map.colCount(pos);\n const updatePos = tr.mapping.slice(mapFrom).map(pos + start);\n tr.setNodeMarkup(\n updatePos,\n null,\n removeColSpan(\n cell.attrs,\n left - cellLeft,\n cell.attrs.colspan - (left - cellLeft)\n )\n );\n tr.insert(\n updatePos + cell.nodeSize,\n cell.type.createAndFill(\n removeColSpan(cell.attrs, 0, left - cellLeft)\n )\n );\n row += cell.attrs.rowspan - 1;\n }\n }\n return found;\n}\nfunction insertCells(state, dispatch, tableStart, rect, cells) {\n let table = tableStart ? state.doc.nodeAt(tableStart - 1) : state.doc;\n if (!table) {\n throw new Error(\"No table found\");\n }\n let map = TableMap.get(table);\n const { top, left } = rect;\n const right = left + cells.width, bottom = top + cells.height;\n const tr = state.tr;\n let mapFrom = 0;\n function recomp() {\n table = tableStart ? tr.doc.nodeAt(tableStart - 1) : tr.doc;\n if (!table) {\n throw new Error(\"No table found\");\n }\n map = TableMap.get(table);\n mapFrom = tr.mapping.maps.length;\n }\n if (growTable(tr, map, table, tableStart, right, bottom, mapFrom))\n recomp();\n if (isolateHorizontal(tr, map, table, tableStart, left, right, top, mapFrom))\n recomp();\n if (isolateHorizontal(tr, map, table, tableStart, left, right, bottom, mapFrom))\n recomp();\n if (isolateVertical(tr, map, table, tableStart, top, bottom, left, mapFrom))\n recomp();\n if (isolateVertical(tr, map, table, tableStart, top, bottom, right, mapFrom))\n recomp();\n for (let row = top; row < bottom; row++) {\n const from = map.positionAt(row, left, table), to = map.positionAt(row, right, table);\n tr.replace(\n tr.mapping.slice(mapFrom).map(from + tableStart),\n tr.mapping.slice(mapFrom).map(to + tableStart),\n new Slice2(cells.rows[row - top], 0, 0)\n );\n }\n recomp();\n tr.setSelection(\n new CellSelection(\n tr.doc.resolve(tableStart + map.positionAt(top, left, table)),\n tr.doc.resolve(tableStart + map.positionAt(bottom - 1, right - 1, table))\n )\n );\n dispatch(tr);\n}\n\n// src/input.ts\nvar handleKeyDown = keydownHandler({\n ArrowLeft: arrow(\"horiz\", -1),\n ArrowRight: arrow(\"horiz\", 1),\n ArrowUp: arrow(\"vert\", -1),\n ArrowDown: arrow(\"vert\", 1),\n \"Shift-ArrowLeft\": shiftArrow(\"horiz\", -1),\n \"Shift-ArrowRight\": shiftArrow(\"horiz\", 1),\n \"Shift-ArrowUp\": shiftArrow(\"vert\", -1),\n \"Shift-ArrowDown\": shiftArrow(\"vert\", 1),\n Backspace: deleteCellSelection,\n \"Mod-Backspace\": deleteCellSelection,\n Delete: deleteCellSelection,\n \"Mod-Delete\": deleteCellSelection\n});\nfunction maybeSetSelection(state, dispatch, selection) {\n if (selection.eq(state.selection))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(selection).scrollIntoView());\n return true;\n}\nfunction arrow(axis, dir) {\n return (state, dispatch, view) => {\n if (!view)\n return false;\n const sel = state.selection;\n if (sel instanceof CellSelection) {\n return maybeSetSelection(\n state,\n dispatch,\n Selection2.near(sel.$headCell, dir)\n );\n }\n if (axis != \"horiz\" && !sel.empty)\n return false;\n const end = atEndOfCell(view, axis, dir);\n if (end == null)\n return false;\n if (axis == \"horiz\") {\n return maybeSetSelection(\n state,\n dispatch,\n Selection2.near(state.doc.resolve(sel.head + dir), dir)\n );\n } else {\n const $cell = state.doc.resolve(end);\n const $next = nextCell($cell, axis, dir);\n let newSel;\n if ($next)\n newSel = Selection2.near($next, 1);\n else if (dir < 0)\n newSel = Selection2.near(state.doc.resolve($cell.before(-1)), -1);\n else\n newSel = Selection2.near(state.doc.resolve($cell.after(-1)), 1);\n return maybeSetSelection(state, dispatch, newSel);\n }\n };\n}\nfunction shiftArrow(axis, dir) {\n return (state, dispatch, view) => {\n if (!view)\n return false;\n const sel = state.selection;\n let cellSel;\n if (sel instanceof CellSelection) {\n cellSel = sel;\n } else {\n const end = atEndOfCell(view, axis, dir);\n if (end == null)\n return false;\n cellSel = new CellSelection(state.doc.resolve(end));\n }\n const $head = nextCell(cellSel.$headCell, axis, dir);\n if (!$head)\n return false;\n return maybeSetSelection(\n state,\n dispatch,\n new CellSelection(cellSel.$anchorCell, $head)\n );\n };\n}\nfunction deleteCellSelection(state, dispatch) {\n const sel = state.selection;\n if (!(sel instanceof CellSelection))\n return false;\n if (dispatch) {\n const tr = state.tr;\n const baseContent = tableNodeTypes(state.schema).cell.createAndFill().content;\n sel.forEachCell((cell, pos) => {\n if (!cell.content.eq(baseContent))\n tr.replace(\n tr.mapping.map(pos + 1),\n tr.mapping.map(pos + cell.nodeSize - 1),\n new Slice3(baseContent, 0, 0)\n );\n });\n if (tr.docChanged)\n dispatch(tr);\n }\n return true;\n}\nfunction handleTripleClick(view, pos) {\n const doc = view.state.doc, $cell = cellAround(doc.resolve(pos));\n if (!$cell)\n return false;\n view.dispatch(view.state.tr.setSelection(new CellSelection($cell)));\n return true;\n}\nfunction handlePaste(view, _, slice) {\n if (!isInTable(view.state))\n return false;\n let cells = pastedCells(slice);\n const sel = view.state.selection;\n if (sel instanceof CellSelection) {\n if (!cells)\n cells = {\n width: 1,\n height: 1,\n rows: [\n Fragment3.from(\n fitSlice(tableNodeTypes(view.state.schema).cell, slice)\n )\n ]\n };\n const table = sel.$anchorCell.node(-1);\n const start = sel.$anchorCell.start(-1);\n const rect = TableMap.get(table).rectBetween(\n sel.$anchorCell.pos - start,\n sel.$headCell.pos - start\n );\n cells = clipCells(cells, rect.right - rect.left, rect.bottom - rect.top);\n insertCells(view.state, view.dispatch, start, rect, cells);\n return true;\n } else if (cells) {\n const $cell = selectionCell(view.state);\n const start = $cell.start(-1);\n insertCells(\n view.state,\n view.dispatch,\n start,\n TableMap.get($cell.node(-1)).findCell($cell.pos - start),\n cells\n );\n return true;\n } else {\n return false;\n }\n}\nfunction handleMouseDown(view, startEvent) {\n var _a;\n if (startEvent.ctrlKey || startEvent.metaKey)\n return;\n const startDOMCell = domInCell(view, startEvent.target);\n let $anchor;\n if (startEvent.shiftKey && view.state.selection instanceof CellSelection) {\n setCellSelection(view.state.selection.$anchorCell, startEvent);\n startEvent.preventDefault();\n } else if (startEvent.shiftKey && startDOMCell && ($anchor = cellAround(view.state.selection.$anchor)) != null && ((_a = cellUnderMouse(view, startEvent)) == null ? void 0 : _a.pos) != $anchor.pos) {\n setCellSelection($anchor, startEvent);\n startEvent.preventDefault();\n } else if (!startDOMCell) {\n return;\n }\n function setCellSelection($anchor2, event) {\n let $head = cellUnderMouse(view, event);\n const starting = tableEditingKey.getState(view.state) == null;\n if (!$head || !inSameTable($anchor2, $head)) {\n if (starting)\n $head = $anchor2;\n else\n return;\n }\n const selection = new CellSelection($anchor2, $head);\n if (starting || !view.state.selection.eq(selection)) {\n const tr = view.state.tr.setSelection(selection);\n if (starting)\n tr.setMeta(tableEditingKey, $anchor2.pos);\n view.dispatch(tr);\n }\n }\n function stop() {\n view.root.removeEventListener(\"mouseup\", stop);\n view.root.removeEventListener(\"dragstart\", stop);\n view.root.removeEventListener(\"mousemove\", move);\n if (tableEditingKey.getState(view.state) != null)\n view.dispatch(view.state.tr.setMeta(tableEditingKey, -1));\n }\n function move(_event) {\n const event = _event;\n const anchor = tableEditingKey.getState(view.state);\n let $anchor2;\n if (anchor != null) {\n $anchor2 = view.state.doc.resolve(anchor);\n } else if (domInCell(view, event.target) != startDOMCell) {\n $anchor2 = cellUnderMouse(view, startEvent);\n if (!$anchor2)\n return stop();\n }\n if ($anchor2)\n setCellSelection($anchor2, event);\n }\n view.root.addEventListener(\"mouseup\", stop);\n view.root.addEventListener(\"dragstart\", stop);\n view.root.addEventListener(\"mousemove\", move);\n}\nfunction atEndOfCell(view, axis, dir) {\n if (!(view.state.selection instanceof TextSelection2))\n return null;\n const { $head } = view.state.selection;\n for (let d = $head.depth - 1; d >= 0; d--) {\n const parent = $head.node(d), index = dir < 0 ? $head.index(d) : $head.indexAfter(d);\n if (index != (dir < 0 ? 0 : parent.childCount))\n return null;\n if (parent.type.spec.tableRole == \"cell\" || parent.type.spec.tableRole == \"header_cell\") {\n const cellPos = $head.before(d);\n const dirStr = axis == \"vert\" ? dir > 0 ? \"down\" : \"up\" : dir > 0 ? \"right\" : \"left\";\n return view.endOfTextblock(dirStr) ? cellPos : null;\n }\n }\n return null;\n}\nfunction domInCell(view, dom) {\n for (; dom && dom != view.dom; dom = dom.parentNode) {\n if (dom.nodeName == \"TD\" || dom.nodeName == \"TH\") {\n return dom;\n }\n }\n return null;\n}\nfunction cellUnderMouse(view, event) {\n const mousePos = view.posAtCoords({\n left: event.clientX,\n top: event.clientY\n });\n if (!mousePos)\n return null;\n return mousePos ? cellAround(view.state.doc.resolve(mousePos.pos)) : null;\n}\n\n// src/columnresizing.ts\nimport { Plugin, PluginKey as PluginKey3 } from \"prosemirror-state\";\nimport {\n Decoration as Decoration2,\n DecorationSet as DecorationSet2\n} from \"prosemirror-view\";\n\n// src/tableview.ts\nvar TableView = class {\n constructor(node, cellMinWidth) {\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 this.colgroup = this.table.appendChild(document.createElement(\"colgroup\"));\n updateColumnsOnResize(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 this.node = node;\n updateColumnsOnResize(node, this.colgroup, this.table, this.cellMinWidth);\n return true;\n }\n ignoreMutation(record) {\n return record.type == \"attributes\" && (record.target == this.table || this.colgroup.contains(record.target));\n }\n};\nfunction updateColumnsOnResize(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)\n return;\n for (let i = 0, col = 0; i < row.childCount; i++) {\n const { colspan, colwidth } = row.child(i).attrs;\n for (let j = 0; j < colspan; j++, col++) {\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 if (!nextDOM) {\n colgroup.appendChild(document.createElement(\"col\")).style.width = cssWidth;\n } else {\n if (nextDOM.style.width != cssWidth)\n nextDOM.style.width = cssWidth;\n nextDOM = nextDOM.nextSibling;\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 if (fixedWidth) {\n table.style.width = totalWidth + \"px\";\n table.style.minWidth = \"\";\n } else {\n table.style.width = \"\";\n table.style.minWidth = totalWidth + \"px\";\n }\n}\n\n// src/columnresizing.ts\nvar columnResizingPluginKey = new PluginKey3(\n \"tableColumnResizing\"\n);\nfunction columnResizing({\n handleWidth = 5,\n cellMinWidth = 25,\n View = TableView,\n lastColumnResizable = true\n} = {}) {\n const plugin = new Plugin({\n key: columnResizingPluginKey,\n state: {\n init(_, state) {\n var _a, _b;\n const nodeViews = (_b = (_a = plugin.spec) == null ? void 0 : _a.props) == null ? void 0 : _b.nodeViews;\n const tableName = tableNodeTypes(state.schema).table.name;\n if (View && nodeViews) {\n nodeViews[tableName] = (node, view) => {\n return new View(node, cellMinWidth, view);\n };\n }\n return new ResizeState(-1, false);\n },\n apply(tr, prev) {\n return prev.apply(tr);\n }\n },\n props: {\n attributes: (state) => {\n const pluginState = columnResizingPluginKey.getState(state);\n return pluginState && pluginState.activeHandle > -1 ? { class: \"resize-cursor\" } : {};\n },\n handleDOMEvents: {\n mousemove: (view, event) => {\n handleMouseMove(\n view,\n event,\n handleWidth,\n cellMinWidth,\n lastColumnResizable\n );\n },\n mouseleave: (view) => {\n handleMouseLeave(view);\n },\n mousedown: (view, event) => {\n handleMouseDown2(view, event, cellMinWidth);\n }\n },\n decorations: (state) => {\n const pluginState = columnResizingPluginKey.getState(state);\n if (pluginState && pluginState.activeHandle > -1) {\n return handleDecorations(state, pluginState.activeHandle);\n }\n },\n nodeViews: {}\n }\n });\n return plugin;\n}\nvar ResizeState = class _ResizeState {\n constructor(activeHandle, dragging) {\n this.activeHandle = activeHandle;\n this.dragging = dragging;\n }\n apply(tr) {\n const state = this;\n const action = tr.getMeta(columnResizingPluginKey);\n if (action && action.setHandle != null)\n return new _ResizeState(action.setHandle, false);\n if (action && action.setDragging !== void 0)\n return new _ResizeState(state.activeHandle, action.setDragging);\n if (state.activeHandle > -1 && tr.docChanged) {\n let handle = tr.mapping.map(state.activeHandle, -1);\n if (!pointsAtCell(tr.doc.resolve(handle))) {\n handle = -1;\n }\n return new _ResizeState(handle, state.dragging);\n }\n return state;\n }\n};\nfunction handleMouseMove(view, event, handleWidth, cellMinWidth, lastColumnResizable) {\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (!pluginState)\n return;\n if (!pluginState.dragging) {\n const target = domCellAround(event.target);\n let cell = -1;\n if (target) {\n const { left, right } = target.getBoundingClientRect();\n if (event.clientX - left <= handleWidth)\n cell = edgeCell(view, event, \"left\", handleWidth);\n else if (right - event.clientX <= handleWidth)\n cell = edgeCell(view, event, \"right\", handleWidth);\n }\n if (cell != pluginState.activeHandle) {\n if (!lastColumnResizable && cell !== -1) {\n const $cell = view.state.doc.resolve(cell);\n const table = $cell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $cell.start(-1);\n const col = map.colCount($cell.pos - tableStart) + $cell.nodeAfter.attrs.colspan - 1;\n if (col == map.width - 1) {\n return;\n }\n }\n updateHandle(view, cell);\n }\n }\n}\nfunction handleMouseLeave(view) {\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (pluginState && pluginState.activeHandle > -1 && !pluginState.dragging)\n updateHandle(view, -1);\n}\nfunction handleMouseDown2(view, event, cellMinWidth) {\n var _a;\n const win = (_a = view.dom.ownerDocument.defaultView) != null ? _a : window;\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (!pluginState || pluginState.activeHandle == -1 || pluginState.dragging)\n return false;\n const cell = view.state.doc.nodeAt(pluginState.activeHandle);\n const width = currentColWidth(view, pluginState.activeHandle, cell.attrs);\n view.dispatch(\n view.state.tr.setMeta(columnResizingPluginKey, {\n setDragging: { startX: event.clientX, startWidth: width }\n })\n );\n function finish(event2) {\n win.removeEventListener(\"mouseup\", finish);\n win.removeEventListener(\"mousemove\", move);\n const pluginState2 = columnResizingPluginKey.getState(view.state);\n if (pluginState2 == null ? void 0 : pluginState2.dragging) {\n updateColumnWidth(\n view,\n pluginState2.activeHandle,\n draggedWidth(pluginState2.dragging, event2, cellMinWidth)\n );\n view.dispatch(\n view.state.tr.setMeta(columnResizingPluginKey, { setDragging: null })\n );\n }\n }\n function move(event2) {\n if (!event2.which)\n return finish(event2);\n const pluginState2 = columnResizingPluginKey.getState(view.state);\n if (!pluginState2)\n return;\n if (pluginState2.dragging) {\n const dragged = draggedWidth(pluginState2.dragging, event2, cellMinWidth);\n displayColumnWidth(view, pluginState2.activeHandle, dragged, cellMinWidth);\n }\n }\n win.addEventListener(\"mouseup\", finish);\n win.addEventListener(\"mousemove\", move);\n event.preventDefault();\n return true;\n}\nfunction currentColWidth(view, cellPos, { colspan, colwidth }) {\n const width = colwidth && colwidth[colwidth.length - 1];\n if (width)\n return width;\n const dom = view.domAtPos(cellPos);\n const node = dom.node.childNodes[dom.offset];\n let domWidth = node.offsetWidth, parts = colspan;\n if (colwidth) {\n for (let i = 0; i < colspan; i++)\n if (colwidth[i]) {\n domWidth -= colwidth[i];\n parts--;\n }\n }\n return domWidth / parts;\n}\nfunction domCellAround(target) {\n while (target && target.nodeName != \"TD\" && target.nodeName != \"TH\")\n target = target.classList && target.classList.contains(\"ProseMirror\") ? null : target.parentNode;\n return target;\n}\nfunction edgeCell(view, event, side, handleWidth) {\n const offset = side == \"right\" ? -handleWidth : handleWidth;\n const found = view.posAtCoords({\n left: event.clientX + offset,\n top: event.clientY\n });\n if (!found)\n return -1;\n const { pos } = found;\n const $cell = cellAround(view.state.doc.resolve(pos));\n if (!$cell)\n return -1;\n if (side == \"right\")\n return $cell.pos;\n const map = TableMap.get($cell.node(-1)), start = $cell.start(-1);\n const index = map.map.indexOf($cell.pos - start);\n return index % map.width == 0 ? -1 : start + map.map[index - 1];\n}\nfunction draggedWidth(dragging, event, cellMinWidth) {\n const offset = event.clientX - dragging.startX;\n return Math.max(cellMinWidth, dragging.startWidth + offset);\n}\nfunction updateHandle(view, value) {\n view.dispatch(\n view.state.tr.setMeta(columnResizingPluginKey, { setHandle: value })\n );\n}\nfunction updateColumnWidth(view, cell, width) {\n const $cell = view.state.doc.resolve(cell);\n const table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);\n const col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n const tr = view.state.tr;\n for (let row = 0; row < map.height; row++) {\n const mapIndex = row * map.width + col;\n if (row && map.map[mapIndex] == map.map[mapIndex - map.width])\n continue;\n const pos = map.map[mapIndex];\n const attrs = table.nodeAt(pos).attrs;\n const index = attrs.colspan == 1 ? 0 : col - map.colCount(pos);\n if (attrs.colwidth && attrs.colwidth[index] == width)\n continue;\n const colwidth = attrs.colwidth ? attrs.colwidth.slice() : zeroes(attrs.colspan);\n colwidth[index] = width;\n tr.setNodeMarkup(start + pos, null, { ...attrs, colwidth });\n }\n if (tr.docChanged)\n view.dispatch(tr);\n}\nfunction displayColumnWidth(view, cell, width, cellMinWidth) {\n const $cell = view.state.doc.resolve(cell);\n const table = $cell.node(-1), start = $cell.start(-1);\n const col = TableMap.get(table).colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n let dom = view.domAtPos($cell.start(-1)).node;\n while (dom && dom.nodeName != \"TABLE\") {\n dom = dom.parentNode;\n }\n if (!dom)\n return;\n updateColumnsOnResize(\n table,\n dom.firstChild,\n dom,\n cellMinWidth,\n col,\n width\n );\n}\nfunction zeroes(n) {\n return Array(n).fill(0);\n}\nfunction handleDecorations(state, cell) {\n const decorations = [];\n const $cell = state.doc.resolve(cell);\n const table = $cell.node(-1);\n if (!table) {\n return DecorationSet2.empty;\n }\n const map = TableMap.get(table);\n const start = $cell.start(-1);\n const col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n for (let row = 0; row < map.height; row++) {\n const index = col + row * map.width;\n if ((col == map.width - 1 || map.map[index] != map.map[index + 1]) && (row == 0 || map.map[index] != map.map[index - map.width])) {\n const cellPos = map.map[index];\n const pos = start + cellPos + table.nodeAt(cellPos).nodeSize - 1;\n const dom = document.createElement(\"div\");\n dom.className = \"column-resize-handle\";\n decorations.push(Decoration2.widget(pos, dom));\n }\n }\n return DecorationSet2.create(state.doc, decorations);\n}\n\n// src/commands.ts\nimport { Fragment as Fragment4 } from \"prosemirror-model\";\nimport {\n TextSelection as TextSelection3\n} from \"prosemirror-state\";\nfunction selectedRect(state) {\n const sel = state.selection;\n const $pos = selectionCell(state);\n const table = $pos.node(-1);\n const tableStart = $pos.start(-1);\n const map = TableMap.get(table);\n const rect = sel instanceof CellSelection ? map.rectBetween(\n sel.$anchorCell.pos - tableStart,\n sel.$headCell.pos - tableStart\n ) : map.findCell($pos.pos - tableStart);\n return { ...rect, tableStart, map, table };\n}\nfunction addColumn(tr, { map, tableStart, table }, col) {\n let refColumn = col > 0 ? -1 : 0;\n if (columnIsHeader(map, table, col + refColumn)) {\n refColumn = col == 0 || col == map.width ? null : 0;\n }\n for (let row = 0; row < map.height; row++) {\n const index = row * map.width + col;\n if (col > 0 && col < map.width && map.map[index - 1] == map.map[index]) {\n const pos = map.map[index];\n const cell = table.nodeAt(pos);\n tr.setNodeMarkup(\n tr.mapping.map(tableStart + pos),\n null,\n addColSpan(cell.attrs, col - map.colCount(pos))\n );\n row += cell.attrs.rowspan - 1;\n } else {\n const type = refColumn == null ? tableNodeTypes(table.type.schema).cell : table.nodeAt(map.map[index + refColumn]).type;\n const pos = map.positionAt(row, col, table);\n tr.insert(tr.mapping.map(tableStart + pos), type.createAndFill());\n }\n }\n return tr;\n}\nfunction addColumnBefore(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addColumn(state.tr, rect, rect.left));\n }\n return true;\n}\nfunction addColumnAfter(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addColumn(state.tr, rect, rect.right));\n }\n return true;\n}\nfunction removeColumn(tr, { map, table, tableStart }, col) {\n const mapStart = tr.mapping.maps.length;\n for (let row = 0; row < map.height; ) {\n const index = row * map.width + col;\n const pos = map.map[index];\n const cell = table.nodeAt(pos);\n const attrs = cell.attrs;\n if (col > 0 && map.map[index - 1] == pos || col < map.width - 1 && map.map[index + 1] == pos) {\n tr.setNodeMarkup(\n tr.mapping.slice(mapStart).map(tableStart + pos),\n null,\n removeColSpan(attrs, col - map.colCount(pos))\n );\n } else {\n const start = tr.mapping.slice(mapStart).map(tableStart + pos);\n tr.delete(start, start + cell.nodeSize);\n }\n row += attrs.rowspan;\n }\n}\nfunction deleteColumn(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const rect = selectedRect(state);\n const tr = state.tr;\n if (rect.left == 0 && rect.right == rect.map.width)\n return false;\n for (let i = rect.right - 1; ; i--) {\n removeColumn(tr, rect, i);\n if (i == rect.left)\n break;\n const table = rect.tableStart ? tr.doc.nodeAt(rect.tableStart - 1) : tr.doc;\n if (!table) {\n throw RangeError(\"No table found\");\n }\n rect.table = table;\n rect.map = TableMap.get(table);\n }\n dispatch(tr);\n }\n return true;\n}\nfunction rowIsHeader(map, table, row) {\n var _a;\n const headerCell = tableNodeTypes(table.type.schema).header_cell;\n for (let col = 0; col < map.width; col++)\n if (((_a = table.nodeAt(map.map[col + row * map.width])) == null ? void 0 : _a.type) != headerCell)\n return false;\n return true;\n}\nfunction addRow(tr, { map, tableStart, table }, row) {\n var _a;\n let rowPos = tableStart;\n for (let i = 0; i < row; i++)\n rowPos += table.child(i).nodeSize;\n const cells = [];\n let refRow = row > 0 ? -1 : 0;\n if (rowIsHeader(map, table, row + refRow))\n refRow = row == 0 || row == map.height ? null : 0;\n for (let col = 0, index = map.width * row; col < map.width; col++, index++) {\n if (row > 0 && row < map.height && map.map[index] == map.map[index - map.width]) {\n const pos = map.map[index];\n const attrs = table.nodeAt(pos).attrs;\n tr.setNodeMarkup(tableStart + pos, null, {\n ...attrs,\n rowspan: attrs.rowspan + 1\n });\n col += attrs.colspan - 1;\n } else {\n const type = refRow == null ? tableNodeTypes(table.type.schema).cell : (_a = table.nodeAt(map.map[index + refRow * map.width])) == null ? void 0 : _a.type;\n const node = type == null ? void 0 : type.createAndFill();\n if (node)\n cells.push(node);\n }\n }\n tr.insert(rowPos, tableNodeTypes(table.type.schema).row.create(null, cells));\n return tr;\n}\nfunction addRowBefore(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addRow(state.tr, rect, rect.top));\n }\n return true;\n}\nfunction addRowAfter(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addRow(state.tr, rect, rect.bottom));\n }\n return true;\n}\nfunction removeRow(tr, { map, table, tableStart }, row) {\n let rowPos = 0;\n for (let i = 0; i < row; i++)\n rowPos += table.child(i).nodeSize;\n const nextRow = rowPos + table.child(row).nodeSize;\n const mapFrom = tr.mapping.maps.length;\n tr.delete(rowPos + tableStart, nextRow + tableStart);\n const seen = /* @__PURE__ */ new Set();\n for (let col = 0, index = row * map.width; col < map.width; col++, index++) {\n const pos = map.map[index];\n if (seen.has(pos))\n continue;\n seen.add(pos);\n if (row > 0 && pos == map.map[index - map.width]) {\n const attrs = table.nodeAt(pos).attrs;\n tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + tableStart), null, {\n ...attrs,\n rowspan: attrs.rowspan - 1\n });\n col += attrs.colspan - 1;\n } else if (row < map.height && pos == map.map[index + map.width]) {\n const cell = table.nodeAt(pos);\n const attrs = cell.attrs;\n const copy = cell.type.create(\n { ...attrs, rowspan: cell.attrs.rowspan - 1 },\n cell.content\n );\n const newPos = map.positionAt(row + 1, col, table);\n tr.insert(tr.mapping.slice(mapFrom).map(tableStart + newPos), copy);\n col += attrs.colspan - 1;\n }\n }\n}\nfunction deleteRow(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const rect = selectedRect(state), tr = state.tr;\n if (rect.top == 0 && rect.bottom == rect.map.height)\n return false;\n for (let i = rect.bottom - 1; ; i--) {\n removeRow(tr, rect, i);\n if (i == rect.top)\n break;\n const table = rect.tableStart ? tr.doc.nodeAt(rect.tableStart - 1) : tr.doc;\n if (!table) {\n throw RangeError(\"No table found\");\n }\n rect.table = table;\n rect.map = TableMap.get(rect.table);\n }\n dispatch(tr);\n }\n return true;\n}\nfunction isEmpty(cell) {\n const c = cell.content;\n return c.childCount == 1 && c.child(0).isTextblock && c.child(0).childCount == 0;\n}\nfunction cellsOverlapRectangle({ width, height, map }, rect) {\n let indexTop = rect.top * width + rect.left, indexLeft = indexTop;\n let indexBottom = (rect.bottom - 1) * width + rect.left, indexRight = indexTop + (rect.right - rect.left - 1);\n for (let i = rect.top; i < rect.bottom; i++) {\n if (rect.left > 0 && map[indexLeft] == map[indexLeft - 1] || rect.right < width && map[indexRight] == map[indexRight + 1])\n return true;\n indexLeft += width;\n indexRight += width;\n }\n for (let i = rect.left; i < rect.right; i++) {\n if (rect.top > 0 && map[indexTop] == map[indexTop - width] || rect.bottom < height && map[indexBottom] == map[indexBottom + width])\n return true;\n indexTop++;\n indexBottom++;\n }\n return false;\n}\nfunction mergeCells(state, dispatch) {\n const sel = state.selection;\n if (!(sel instanceof CellSelection) || sel.$anchorCell.pos == sel.$headCell.pos)\n return false;\n const rect = selectedRect(state), { map } = rect;\n if (cellsOverlapRectangle(map, rect))\n return false;\n if (dispatch) {\n const tr = state.tr;\n const seen = {};\n let content = Fragment4.empty;\n let mergedPos;\n let mergedCell;\n for (let row = rect.top; row < rect.bottom; row++) {\n for (let col = rect.left; col < rect.right; col++) {\n const cellPos = map.map[row * map.width + col];\n const cell = rect.table.nodeAt(cellPos);\n if (seen[cellPos] || !cell)\n continue;\n seen[cellPos] = true;\n if (mergedPos == null) {\n mergedPos = cellPos;\n mergedCell = cell;\n } else {\n if (!isEmpty(cell))\n content = content.append(cell.content);\n const mapped = tr.mapping.map(cellPos + rect.tableStart);\n tr.delete(mapped, mapped + cell.nodeSize);\n }\n }\n }\n if (mergedPos == null || mergedCell == null) {\n return true;\n }\n tr.setNodeMarkup(mergedPos + rect.tableStart, null, {\n ...addColSpan(\n mergedCell.attrs,\n mergedCell.attrs.colspan,\n rect.right - rect.left - mergedCell.attrs.colspan\n ),\n rowspan: rect.bottom - rect.top\n });\n if (content.size) {\n const end = mergedPos + 1 + mergedCell.content.size;\n const start = isEmpty(mergedCell) ? mergedPos + 1 : end;\n tr.replaceWith(start + rect.tableStart, end + rect.tableStart, content);\n }\n tr.setSelection(\n new CellSelection(tr.doc.resolve(mergedPos + rect.tableStart))\n );\n dispatch(tr);\n }\n return true;\n}\nfunction splitCell(state, dispatch) {\n const nodeTypes = tableNodeTypes(state.schema);\n return splitCellWithType(({ node }) => {\n return nodeTypes[node.type.spec.tableRole];\n })(state, dispatch);\n}\nfunction splitCellWithType(getCellType) {\n return (state, dispatch) => {\n var _a;\n const sel = state.selection;\n let cellNode;\n let cellPos;\n if (!(sel instanceof CellSelection)) {\n cellNode = cellWrapping(sel.$from);\n if (!cellNode)\n return false;\n cellPos = (_a = cellAround(sel.$from)) == null ? void 0 : _a.pos;\n } else {\n if (sel.$anchorCell.pos != sel.$headCell.pos)\n return false;\n cellNode = sel.$anchorCell.nodeAfter;\n cellPos = sel.$anchorCell.pos;\n }\n if (cellNode == null || cellPos == null) {\n return false;\n }\n if (cellNode.attrs.colspan == 1 && cellNode.attrs.rowspan == 1) {\n return false;\n }\n if (dispatch) {\n let baseAttrs = cellNode.attrs;\n const attrs = [];\n const colwidth = baseAttrs.colwidth;\n if (baseAttrs.rowspan > 1)\n baseAttrs = { ...baseAttrs, rowspan: 1 };\n if (baseAttrs.colspan > 1)\n baseAttrs = { ...baseAttrs, colspan: 1 };\n const rect = selectedRect(state), tr = state.tr;\n for (let i = 0; i < rect.right - rect.left; i++)\n attrs.push(\n colwidth ? {\n ...baseAttrs,\n colwidth: colwidth && colwidth[i] ? [colwidth[i]] : null\n } : baseAttrs\n );\n let lastCell;\n for (let row = rect.top; row < rect.bottom; row++) {\n let pos = rect.map.positionAt(row, rect.left, rect.table);\n if (row == rect.top)\n pos += cellNode.nodeSize;\n for (let col = rect.left, i = 0; col < rect.right; col++, i++) {\n if (col == rect.left && row == rect.top)\n continue;\n tr.insert(\n lastCell = tr.mapping.map(pos + rect.tableStart, 1),\n getCellType({ node: cellNode, row, col }).createAndFill(attrs[i])\n );\n }\n }\n tr.setNodeMarkup(\n cellPos,\n getCellType({ node: cellNode, row: rect.top, col: rect.left }),\n attrs[0]\n );\n if (sel instanceof CellSelection)\n tr.setSelection(\n new CellSelection(\n tr.doc.resolve(sel.$anchorCell.pos),\n lastCell ? tr.doc.resolve(lastCell) : void 0\n )\n );\n dispatch(tr);\n }\n return true;\n };\n}\nfunction setCellAttr(name, value) {\n return function(state, dispatch) {\n if (!isInTable(state))\n return false;\n const $cell = selectionCell(state);\n if ($cell.nodeAfter.attrs[name] === value)\n return false;\n if (dispatch) {\n const tr = state.tr;\n if (state.selection instanceof CellSelection)\n state.selection.forEachCell((node, pos) => {\n if (node.attrs[name] !== value)\n tr.setNodeMarkup(pos, null, {\n ...node.attrs,\n [name]: value\n });\n });\n else\n tr.setNodeMarkup($cell.pos, null, {\n ...$cell.nodeAfter.attrs,\n [name]: value\n });\n dispatch(tr);\n }\n return true;\n };\n}\nfunction deprecated_toggleHeader(type) {\n return function(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const types = tableNodeTypes(state.schema);\n const rect = selectedRect(state), tr = state.tr;\n const cells = rect.map.cellsInRect(\n type == \"column\" ? {\n left: rect.left,\n top: 0,\n right: rect.right,\n bottom: rect.map.height\n } : type == \"row\" ? {\n left: 0,\n top: rect.top,\n right: rect.map.width,\n bottom: rect.bottom\n } : rect\n );\n const nodes = cells.map((pos) => rect.table.nodeAt(pos));\n for (let i = 0; i < cells.length; i++)\n if (nodes[i].type == types.header_cell)\n tr.setNodeMarkup(\n rect.tableStart + cells[i],\n types.cell,\n nodes[i].attrs\n );\n if (tr.steps.length == 0)\n for (let i = 0; i < cells.length; i++)\n tr.setNodeMarkup(\n rect.tableStart + cells[i],\n types.header_cell,\n nodes[i].attrs\n );\n dispatch(tr);\n }\n return true;\n };\n}\nfunction isHeaderEnabledByType(type, rect, types) {\n const cellPositions = rect.map.cellsInRect({\n left: 0,\n top: 0,\n right: type == \"row\" ? rect.map.width : 1,\n bottom: type == \"column\" ? rect.map.height : 1\n });\n for (let i = 0; i < cellPositions.length; i++) {\n const cell = rect.table.nodeAt(cellPositions[i]);\n if (cell && cell.type !== types.header_cell) {\n return false;\n }\n }\n return true;\n}\nfunction toggleHeader(type, options) {\n options = options || { useDeprecatedLogic: false };\n if (options.useDeprecatedLogic)\n return deprecated_toggleHeader(type);\n return function(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const types = tableNodeTypes(state.schema);\n const rect = selectedRect(state), tr = state.tr;\n const isHeaderRowEnabled = isHeaderEnabledByType(\"row\", rect, types);\n const isHeaderColumnEnabled = isHeaderEnabledByType(\n \"column\",\n rect,\n types\n );\n const isHeaderEnabled = type === \"column\" ? isHeaderRowEnabled : type === \"row\" ? isHeaderColumnEnabled : false;\n const selectionStartsAt = isHeaderEnabled ? 1 : 0;\n const cellsRect = type == \"column\" ? {\n left: 0,\n top: selectionStartsAt,\n right: 1,\n bottom: rect.map.height\n } : type == \"row\" ? {\n left: selectionStartsAt,\n top: 0,\n right: rect.map.width,\n bottom: 1\n } : rect;\n const newType = type == \"column\" ? isHeaderColumnEnabled ? types.cell : types.header_cell : type == \"row\" ? isHeaderRowEnabled ? types.cell : types.header_cell : types.cell;\n rect.map.cellsInRect(cellsRect).forEach((relativeCellPos) => {\n const cellPos = relativeCellPos + rect.tableStart;\n const cell = tr.doc.nodeAt(cellPos);\n if (cell) {\n tr.setNodeMarkup(cellPos, newType, cell.attrs);\n }\n });\n dispatch(tr);\n }\n return true;\n };\n}\nvar toggleHeaderRow = toggleHeader(\"row\", {\n useDeprecatedLogic: true\n});\nvar toggleHeaderColumn = toggleHeader(\"column\", {\n useDeprecatedLogic: true\n});\nvar toggleHeaderCell = toggleHeader(\"cell\", {\n useDeprecatedLogic: true\n});\nfunction findNextCell($cell, dir) {\n if (dir < 0) {\n const before = $cell.nodeBefore;\n if (before)\n return $cell.pos - before.nodeSize;\n for (let row = $cell.index(-1) - 1, rowEnd = $cell.before(); row >= 0; row--) {\n const rowNode = $cell.node(-1).child(row);\n const lastChild = rowNode.lastChild;\n if (lastChild) {\n return rowEnd - 1 - lastChild.nodeSize;\n }\n rowEnd -= rowNode.nodeSize;\n }\n } else {\n if ($cell.index() < $cell.parent.childCount - 1) {\n return $cell.pos + $cell.nodeAfter.nodeSize;\n }\n const table = $cell.node(-1);\n for (let row = $cell.indexAfter(-1), rowStart = $cell.after(); row < table.childCount; row++) {\n const rowNode = table.child(row);\n if (rowNode.childCount)\n return rowStart + 1;\n rowStart += rowNode.nodeSize;\n }\n }\n return null;\n}\nfunction goToNextCell(direction) {\n return function(state, dispatch) {\n if (!isInTable(state))\n return false;\n const cell = findNextCell(selectionCell(state), direction);\n if (cell == null)\n return false;\n if (dispatch) {\n const $cell = state.doc.resolve(cell);\n dispatch(\n state.tr.setSelection(TextSelection3.between($cell, moveCellForward($cell))).scrollIntoView()\n );\n }\n return true;\n };\n}\nfunction deleteTable(state, dispatch) {\n const $pos = state.selection.$anchor;\n for (let d = $pos.depth; d > 0; d--) {\n const node = $pos.node(d);\n if (node.type.spec.tableRole == \"table\") {\n if (dispatch)\n dispatch(\n state.tr.delete($pos.before(d), $pos.after(d)).scrollIntoView()\n );\n return true;\n }\n }\n return false;\n}\n\n// src/index.ts\nfunction tableEditing({\n allowTableNodeSelection = false\n} = {}) {\n return new Plugin2({\n key: tableEditingKey,\n // This piece of state is used to remember when a mouse-drag\n // cell-selection is happening, so that it can continue even as\n // transactions (which might move its anchor cell) come in.\n state: {\n init() {\n return null;\n },\n apply(tr, cur) {\n const set = tr.getMeta(tableEditingKey);\n if (set != null)\n return set == -1 ? null : set;\n if (cur == null || !tr.docChanged)\n return cur;\n const { deleted, pos } = tr.mapping.mapResult(cur);\n return deleted ? null : pos;\n }\n },\n props: {\n decorations: drawCellSelection,\n handleDOMEvents: {\n mousedown: handleMouseDown\n },\n createSelectionBetween(view) {\n return tableEditingKey.getState(view.state) != null ? view.state.selection : null;\n },\n handleTripleClick,\n handleKeyDown,\n handlePaste\n },\n appendTransaction(_, oldState, state) {\n return normalizeSelection(\n state,\n fixTables(state, oldState),\n allowTableNodeSelection\n );\n }\n });\n}\nexport {\n CellBookmark,\n CellSelection,\n ResizeState,\n TableMap,\n TableView,\n clipCells as __clipCells,\n insertCells as __insertCells,\n pastedCells as __pastedCells,\n addColSpan,\n addColumn,\n addColumnAfter,\n addColumnBefore,\n addRow,\n addRowAfter,\n addRowBefore,\n cellAround,\n colCount,\n columnIsHeader,\n columnResizing,\n columnResizingPluginKey,\n deleteColumn,\n deleteRow,\n deleteTable,\n findCell,\n fixTables,\n fixTablesKey,\n goToNextCell,\n handlePaste,\n inSameTable,\n isInTable,\n mergeCells,\n moveCellForward,\n nextCell,\n pointsAtCell,\n removeColSpan,\n removeColumn,\n removeRow,\n rowIsHeader,\n selectedRect,\n selectionCell,\n setCellAttr,\n splitCell,\n splitCellWithType,\n tableEditing,\n tableEditingKey,\n tableNodeTypes,\n tableNodes,\n toggleHeader,\n toggleHeaderCell,\n toggleHeaderColumn,\n toggleHeaderRow,\n updateColumnsOnResize\n};\n","import { findParentNodeClosestToPos, Node, mergeAttributes, callOrReturn, getExtensionField } from '@tiptap/core';\nimport { TextSelection } from '@tiptap/pm/state';\nimport { CellSelection, addColumnBefore, addColumnAfter, deleteColumn, addRowBefore, addRowAfter, deleteRow, deleteTable, mergeCells, splitCell, toggleHeader, toggleHeaderCell, setCellAttr, goToNextCell, fixTables, columnResizing, tableEditing } from '@tiptap/pm/tables';\n\nfunction updateColumns(node, colgroup, table, cellMinWidth, overrideCol, overrideValue) {\n let totalWidth = 0;\n let fixedWidth = true;\n let nextDOM = colgroup.firstChild;\n const row = node.firstChild;\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 colgroup.appendChild(document.createElement('col')).style.width = cssWidth;\n }\n else {\n if (nextDOM.style.width !== cssWidth) {\n nextDOM.style.width = cssWidth;\n }\n nextDOM = nextDOM.nextSibling;\n }\n }\n }\n while (nextDOM) {\n const after = nextDOM.nextSibling;\n nextDOM.parentNode.removeChild(nextDOM);\n nextDOM = after;\n }\n if (fixedWidth) {\n table.style.width = `${totalWidth}px`;\n table.style.minWidth = '';\n }\n else {\n table.style.width = '';\n table.style.minWidth = `${totalWidth}px`;\n }\n}\nclass TableView {\n constructor(node, cellMinWidth) {\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 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 return (mutation.type === 'attributes'\n && (mutation.target === this.table || this.colgroup.contains(mutation.target)));\n }\n}\n\n/**\n * Creates a colgroup element for a table node in ProseMirror.\n *\n * @param node - The ProseMirror node representing the table.\n * @param cellMinWidth - The minimum width of a cell in the table.\n * @param overrideCol - (Optional) The index of the column to override the width of.\n * @param overrideValue - (Optional) The width value to use for the overridden column.\n * @returns An object containing the colgroup element, the total width of the table, and the minimum width of the table.\n */\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 const cssWidth = hasWidth ? `${hasWidth}px` : '';\n totalWidth += hasWidth || cellMinWidth;\n if (!hasWidth) {\n fixedWidth = false;\n }\n cols.push(['col', cssWidth ? { style: `width: ${cssWidth}` } : {}]);\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\nfunction createCell(cellType, cellContent) {\n if (cellContent) {\n return cellType.createChecked(null, cellContent);\n }\n return cellType.createAndFill();\n}\n\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\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\nfunction isCellSelection(value) {\n return value instanceof CellSelection;\n}\n\nconst 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 || table === void 0 ? 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/**\n * This extension allows you to create tables.\n * @see https://www.tiptap.dev/api/nodes/table\n */\nconst Table = Node.create({\n name: 'table',\n // @ts-ignore\n addOptions() {\n return {\n HTMLAttributes: {},\n resizable: 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 table = [\n 'table',\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, {\n style: tableWidth\n ? `width: ${tableWidth}`\n : `min-width: ${tableMinWidth}`,\n }),\n colgroup,\n ['tbody', 0],\n ];\n return table;\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)\n .scrollIntoView()\n .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 = CellSelection.create(tr.doc, position.anchorCell, position.headCell);\n // @ts-ignore\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 ? [\n columnResizing({\n handleWidth: this.options.handleWidth,\n cellMinWidth: this.options.cellMinWidth,\n View: this.options.View,\n lastColumnResizable: this.options.lastColumnResizable,\n }),\n ]\n : []),\n tableEditing({\n allowTableNodeSelection: this.options.allowTableNodeSelection,\n }),\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\nexport { Table, createColGroup, createTable, Table as default };\n//# sourceMappingURL=index.js.map\n","import { noop } from \"neetocist\";\n\nfunction updateColumns(node, colgroup, table, cellMinWidth) {\n let totalWidth = 0;\n let fixedWidth = true;\n let nextDOM = colgroup.firstChild;\n const row = node.firstChild;\n\n for (let i = 0, col = 0; i < row.childCount; i += 1) {\n const { colspan, colwidth } = row.child(i).attrs;\n\n for (let j = 0; j < colspan; j += 1, col += 1) {\n const hasWidth = colwidth && colwidth[j];\n const cssWidth = hasWidth ? `${hasWidth}px` : \"\";\n\n totalWidth += hasWidth || cellMinWidth;\n\n if (!hasWidth) {\n fixedWidth = false;\n }\n\n if (!nextDOM) {\n colgroup.appendChild(document.createElement(\"col\")).style.width =\n cssWidth;\n } else {\n if (nextDOM.style.width !== cssWidth) {\n nextDOM.style.width = cssWidth;\n }\n\n nextDOM = nextDOM.nextSibling;\n }\n }\n }\n\n while (nextDOM) {\n const after = nextDOM.nextSibling;\n\n nextDOM.parentNode.removeChild(nextDOM);\n nextDOM = after;\n }\n\n if (fixedWidth) {\n table.style.width = `${totalWidth}px`;\n table.style.minWidth = \"\";\n } else {\n table.style.width = \"\";\n table.style.minWidth = `${totalWidth}px`;\n }\n}\n\nexport class TableView {\n constructor(node, cellMinWidth) {\n this.node = node;\n this.cellMinWidth = cellMinWidth;\n this.dom = document.createElement(\"div\");\n\n const alignmentSuffix = node.attrs?.textAlign || \"left\";\n const alignmentClass = `neeto-editor-table--${alignmentSuffix}`;\n this.dom.className = `neeto-editor-table ${alignmentClass}`;\n this.wrapper = document.createElement(\"div\");\n this.wrapper.className = \"neeto-editor-table__wrapper\";\n this.table = this.dom\n .appendChild(this.wrapper)\n .appendChild(document.createElement(\"table\"));\n this.colgroup = this.table.appendChild(document.createElement(\"colgroup\"));\n this.wrapper.appendChild(\n this.buildController({\n className: \"neeto-editor-table__add-column\",\n handleClick: this.insertColumn,\n })\n );\n\n this.dom.appendChild(\n this.buildController({\n className: \"neeto-editor-table__add-row\",\n handleClick: () => this.table.insertRow(),\n })\n );\n updateColumns(node, this.colgroup, this.table, cellMinWidth);\n this.contentDOM = this.table.appendChild(document.createElement(\"tbody\"));\n }\n\n update(node) {\n if (node.type !== this.node.type) {\n return false;\n }\n\n this.node = node;\n updateColumns(node, this.colgroup, this.table, this.cellMinWidth);\n\n const alignmentSuffix = node.attrs?.textAlign || \"left\";\n const currentAlignmentClass = `neeto-editor-table--${alignmentSuffix}`;\n\n this.dom.classList.remove(\n \"neeto-editor-table--left\",\n \"neeto-editor-table--center\",\n \"neeto-editor-table--right\"\n );\n\n this.dom.classList.add(currentAlignmentClass);\n\n return true;\n }\n\n ignoreMutation(mutation) {\n return (\n mutation.type === \"attributes\" &&\n (mutation.target === this.table ||\n this.colgroup.contains(mutation.target))\n );\n }\n\n buildController = ({ className = \"\", handleClick = noop }) => {\n const controller = document.createElement(\"div\");\n const icon = document.createElement(\"p\");\n controller.className = className;\n controller.onclick = handleClick;\n icon.textContent = \"+\";\n controller.appendChild(icon);\n\n return controller;\n };\n\n insertColumn = () => {\n this.table.querySelectorAll(\"tr\").forEach(tr => {\n if (tr.firstChild?.nodeName === \"TH\") {\n const th = document.createElement(\"th\");\n th.appendChild(document.createElement(\"p\"));\n tr.appendChild(th);\n } else {\n const td = document.createElement(\"td\");\n td.appendChild(document.createElement(\"p\"));\n tr.appendChild(td);\n }\n });\n };\n}\n","import TiptapTable from \"@tiptap/extension-table\";\n\nimport { TableView } from \"./TableView\";\n\nconst Table = TiptapTable.extend({\n addOptions() {\n return {\n HTMLAttributes: {},\n resizable: true,\n handleWidth: 5,\n cellMinWidth: 100,\n View: TableView,\n lastColumnResizable: true,\n allowTableNodeSelection: true,\n };\n },\n\n parseHTML() {\n const getAlignmentFromElement = element => {\n if (!element) return null;\n\n const dataAlign = element.getAttribute(\"data-text-align\");\n if (dataAlign) return dataAlign;\n\n if (element.classList.contains(\"neeto-editor-table--center\")) {\n return \"center\";\n }\n\n if (element.classList.contains(\"neeto-editor-table--right\")) {\n return \"right\";\n }\n\n if (element.classList.contains(\"neeto-editor-table--left\")) {\n return \"left\";\n }\n\n return null;\n };\n\n return [\n {\n tag: \"table\",\n priority: 100,\n getAttrs: node => {\n const alignment = getAlignmentFromElement(node);\n if (alignment) {\n return { textAlign: alignment };\n }\n\n const parent = node.parentElement;\n if (parent && parent.classList.contains(\"table-responsive\")) {\n const parentAlignment = getAlignmentFromElement(parent);\n if (parentAlignment) {\n return { textAlign: parentAlignment };\n }\n }\n\n return { textAlign: \"left\" };\n },\n },\n ];\n },\n\n addAttributes() {\n return {\n ...this.parent?.(),\n textAlign: {\n default: \"left\",\n renderHTML: attributes => {\n if (!attributes.textAlign) return {};\n\n return {\n class: `neeto-editor-table--${attributes.textAlign}`,\n \"data-text-align\": attributes.textAlign,\n };\n },\n },\n };\n },\n\n renderHTML({ node }) {\n let totalWidth = 0;\n let fixedWidth = true;\n\n const colgroups = [];\n const cellMinWidth = this.options?.cellMinWidth ?? 100;\n const firstRow = node.content?.firstChild;\n\n if (firstRow && firstRow.childCount) {\n for (let i = 0; i < firstRow.childCount; i++) {\n const cell = firstRow.child(i);\n const { colspan, colwidth } = cell.attrs;\n const span = colspan || 1;\n\n for (let j = 0; j < span; j++) {\n const hasWidth = colwidth && colwidth[j];\n totalWidth += Number(hasWidth) || cellMinWidth;\n if (!hasWidth) fixedWidth = false;\n\n const style = hasWidth\n ? `min-width: ${cellMinWidth}px; width: ${Number(hasWidth)}px;`\n : `min-width: ${cellMinWidth}px;`;\n\n colgroups.push([\"col\", { style }]);\n }\n }\n }\n\n let tableStyle = \"\";\n if (totalWidth > 0) {\n tableStyle = fixedWidth\n ? `width: ${totalWidth}px;`\n : `min-width: ${totalWidth}px;`;\n }\n\n const alignmentClass = node.attrs?.textAlign\n ? `neeto-editor-table--${node.attrs.textAlign}`\n : \"neeto-editor-table--left\";\n\n return [\n \"div\",\n {\n class: `table-responsive ${alignmentClass}`,\n \"data-text-align\": node.attrs?.textAlign || \"left\",\n },\n [\n \"table\",\n tableStyle ? { style: tableStyle } : {},\n [\"colgroup\", ...colgroups],\n [\"tbody\", 0],\n ],\n ];\n },\n\n addKeyboardShortcuts() {\n return {\n ...this.parent?.(),\n \"Mod-alt-t\": () =>\n this.editor\n .chain()\n .focus()\n .insertTable({ rows: 3, cols: 3, withHeaderRow: true })\n .updateAttributes(\"table\", { textAlign: \"left\" })\n .run(),\n };\n },\n});\n\nexport default Table.configure({});\n","import { Node, mergeAttributes, wrappingInputRule } from '@tiptap/core';\n\n/**\n * Matches a task item to a - [ ] on input.\n */\nconst inputRegex = /^\\s*(\\[([( |x])?\\])\\s$/;\n/**\n * This extension allows you to create task items.\n * @see https://www.tiptap.dev/api/nodes/task-item\n */\nconst TaskItem = Node.create({\n name: 'taskItem',\n addOptions() {\n return {\n nested: false,\n HTMLAttributes: {},\n taskListTypeName: 'taskList',\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 mergeAttributes(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 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 checkboxWrapper.contentEditable = 'false';\n checkbox.type = 'checkbox';\n checkbox.addEventListener('mousedown', event => event.preventDefault());\n checkbox.addEventListener('change', event => {\n // if the editor isn’t editable and we don't have a handler for\n // readonly checks we have to undo the latest change\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\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .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, undefined, {\n ...currentNode === null || currentNode === void 0 ? void 0 : currentNode.attrs,\n checked,\n });\n return true;\n })\n .run();\n }\n if (!editor.isEditable && this.options.onReadOnlyChecked) {\n // Reset state if onReadOnlyChecked returns false\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 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 return true;\n },\n };\n };\n },\n addInputRules() {\n return [\n wrappingInputRule({\n find: inputRegex,\n type: this.type,\n getAttributes: match => ({\n checked: match[match.length - 1] === 'x',\n }),\n }),\n ];\n },\n});\n\nexport { TaskItem, TaskItem as default, inputRegex };\n//# sourceMappingURL=index.js.map\n","import { Node, mergeAttributes } from '@tiptap/core';\n\n/**\n * This extension allows you to create task lists.\n * @see https://www.tiptap.dev/api/nodes/task-list\n */\nconst TaskList = Node.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 ['ul', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, { 'data-type': this.name }), 0];\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\nexport { TaskList, TaskList as default };\n//# sourceMappingURL=index.js.map\n","import TaskItem from \"@tiptap/extension-task-item\";\nimport TaskList from \"@tiptap/extension-task-list\";\n\nexport const TodoListExtension = TaskList.extend({\n name: \"todoList\",\n addKeyboardShortcuts() {\n return {\n \"Mod-Shift-9\": () => this.editor.commands.toggleTaskList(),\n };\n },\n});\n\nexport const TodoItemExtension = TaskItem.extend({\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}).configure({ nested: true });\n\nexport default TodoListExtension;\n","export const MAX_VARIABLE_NAME_DISPLAY_LENGTH = 25;\n","import { NodeViewWrapper } from \"@tiptap/react\";\nimport { Tooltip } from \"neetoui\";\n\nimport { MAX_VARIABLE_NAME_DISPLAY_LENGTH } from \"./constants\";\n\nconst VariableComponent = ({ node, extension }) => {\n const { id, label } = node.attrs;\n\n const variableName = label || id;\n const shouldTruncate = variableName.length > MAX_VARIABLE_NAME_DISPLAY_LENGTH;\n\n return (\n <NodeViewWrapper\n as=\"span\"\n className=\"neeto-editor-variable\"\n data-label={id}\n data-variable=\"\"\n >\n {extension.options.charOpen}\n <Tooltip content={variableName} disabled={!shouldTruncate} position=\"top\">\n {variableName?.substr(0, MAX_VARIABLE_NAME_DISPLAY_LENGTH)?.trim()}\n {shouldTruncate && \"...\"}\n </Tooltip>\n {extension.options.charClose}\n </NodeViewWrapper>\n );\n};\n\nexport default VariableComponent;\n","import { Node, mergeAttributes } from \"@tiptap/core\";\nimport { PluginKey } from \"@tiptap/pm/state\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\n\nimport VariableComponent from \"./VariableComponent\";\n\nconst VariablePluginKey = new PluginKey(\"variables\");\nconst Variable = Node.create({\n name: \"variable\",\n addOptions() {\n return {\n HTMLAttributes: { class: \"neeto-editor-variable\" },\n charOpen: \"{{\",\n charClose: \"}}\",\n renderLabel({ options, node }) {\n return `${options.charOpen}${node.attrs.id || node.attrs.label}${\n options.charClose\n }`;\n },\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) return {};\n\n return { \"data-id\": attributes.id };\n },\n },\n label: {\n default: null,\n parseHTML: element => element.getAttribute(\"data-label\"),\n renderHTML: attributes => {\n if (!attributes.label) return {};\n\n return { \"data-label\": attributes.label };\n },\n },\n };\n },\n\n parseHTML() {\n return [{ tag: \"span[data-variable]\" }];\n },\n\n renderHTML({ node, HTMLAttributes }) {\n return [\n \"span\",\n mergeAttributes(\n { \"data-variable\": \"\" },\n this.options.HTMLAttributes,\n HTMLAttributes\n ),\n this.options.renderLabel({ options: this.options, node }),\n ];\n },\n\n renderText({ node }) {\n return this.options.renderLabel({ options: this.options, node });\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(VariableComponent);\n },\n\n addCommands() {\n return {\n setVariable:\n attributes =>\n ({ chain }) => {\n chain()\n .focus()\n .insertContent([\n { type: this.name, attrs: attributes },\n { type: \"text\", text: \" \" },\n ])\n .run();\n },\n };\n },\n});\n\nexport default Variable;\n\nexport { VariablePluginKey };\n","import { useRef, useState } from \"react\";\n\nimport { NodeViewContent, NodeViewWrapper } from \"@tiptap/react\";\nimport classNames from \"classnames\";\nimport { isNotPresent } from \"neetocist\";\nimport { isEmpty, mergeRight } from \"ramda\";\nimport { Resizable } from \"re-resizable\";\n\nimport Menu from \"../Image/Menu\";\n\nconst VideoComponent = ({\n node,\n editor,\n getPos,\n updateAttributes,\n deleteNode,\n}) => {\n const { src, vidheight, vidwidth, align, border } = node.attrs;\n\n const [captionWidth, setCaptionWidth] = useState(vidwidth || 0);\n\n const figureRef = useRef(null);\n\n const { view } = editor;\n let height = vidheight;\n let width = vidwidth;\n const caption = node?.content?.content[0]?.text || \"\";\n\n const editorElement = figureRef.current?.closest(\".neeto-editor\");\n const maxVideoWidth = editorElement?.offsetWidth - 50;\n\n const handleResize = (_event, _direction, ref) => {\n height = ref.offsetHeight;\n width = ref.offsetWidth;\n\n if (width > maxVideoWidth) {\n width = maxVideoWidth;\n const aspectRatio = ref.offsetHeight / ref.offsetWidth;\n height = width * aspectRatio;\n }\n setCaptionWidth(width);\n view.dispatch(\n view.state.tr.setNodeMarkup(\n getPos(),\n undefined,\n mergeRight(node.attrs, {\n vidheight: height,\n vidwidth: width,\n height,\n width,\n })\n )\n );\n editor.commands.focus();\n };\n\n if (isNotPresent(src)) return null;\n\n return (\n <NodeViewWrapper\n className={classNames(\n \"neeto-editor__image-wrapper\",\n `neeto-editor__image--${align}`,\n { \"neeto-editor__image--bordered\": border }\n )}\n >\n <figure ref={figureRef}>\n <Menu {...{ align, border, deleteNode, editor, updateAttributes }} />\n <Resizable\n lockAspectRatio\n className=\"neeto-editor__image\"\n size={{ height, width }}\n onResizeStop={handleResize}\n onResize={(_event, _direction, ref) =>\n setCaptionWidth(ref.offsetWidth)\n }\n >\n <video\n controls\n {...{ ...node.attrs, src }}\n alt={caption}\n data-border={border}\n preload=\"metadata\"\n />\n </Resizable>\n <NodeViewContent\n as=\"figcaption\"\n className={classNames({ \"is-empty\": isEmpty(caption) })}\n style={{ width: `${captionWidth}px` }}\n />\n </figure>\n </NodeViewWrapper>\n );\n};\n\nexport default VideoComponent;\n","import { NodeViewWrapper } from \"@tiptap/react\";\nimport classnames from \"classnames\";\nimport { mergeRight } from \"ramda\";\nimport { Resizable } from \"re-resizable\";\n\nimport Menu from \"../Image/Menu\";\n\nconst EmbedComponent = ({\n node,\n editor,\n getPos,\n updateAttributes,\n deleteNode,\n}) => {\n const { figheight, figwidth, align, border, aspectRatio } = node.attrs;\n const { view } = editor;\n let height = figheight;\n let width = figwidth;\n\n const handleResize = (_event, _direction, ref) => {\n height = ref.offsetHeight;\n width = ref.offsetWidth;\n view.dispatch(\n view.state.tr.setNodeMarkup(\n getPos(),\n undefined,\n mergeRight(node.attrs, {\n figheight: height,\n figwidth: width,\n height,\n width,\n })\n )\n );\n editor.commands.focus();\n };\n\n return (\n <NodeViewWrapper\n data-testid=\"neeto-editor-video-wrapper\"\n className={classnames(\n \"neeto-editor__video-wrapper\",\n `neeto-editor__video--${align}`,\n { \"neeto-editor__video--bordered\": border }\n )}\n >\n <Resizable\n lockAspectRatio\n size={{ height, width }}\n className={classnames(\"neeto-editor__video-iframe\", {\n \"neeto-editor-aspect-1-1\": aspectRatio === \"1/1\",\n \"neeto-editor-aspect-16-9\": aspectRatio === \"16/9\",\n \"neeto-editor-aspect-9-16\": aspectRatio === \"9/16\",\n \"neeto-editor-aspect-4-3\": aspectRatio === \"4/3\",\n \"neeto-editor-aspect-3-2\": aspectRatio === \"3/2\",\n })}\n onResizeStop={handleResize}\n >\n <Menu\n {...{ align, border, deleteNode, editor, updateAttributes }}\n showAspectRatio\n />\n <iframe {...node.attrs} allowFullScreen data-border={border} />\n </Resizable>\n </NodeViewWrapper>\n );\n};\n\nexport default EmbedComponent;\n","import { mergeAttributes, Node, PasteRule } from \"@tiptap/core\";\nimport { TextSelection } from \"@tiptap/pm/state\";\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport classnames from \"classnames\";\nimport { COMBINED_REGEX } from \"common/constants\";\n\nimport VideoComponent from \"./VideoComponent\";\n\nimport { DEFAULT_ASPECT_RATIO } from \"../../MediaUploader/constants\";\nimport EmbedComponent from \"../Embeds/EmbedComponent\";\nimport { validateUrl } from \"../Embeds/utils\";\n\nconst getSharedAttributes = () => ({\n src: {\n default: null,\n parseHTML: element => {\n const iframe = element.querySelector(\"iframe\");\n const video = element.querySelector(\"video\");\n\n return iframe?.getAttribute(\"src\") || video?.getAttribute(\"src\");\n },\n },\n align: {\n default: \"left\",\n parseHTML: element =>\n element.getAttribute(\"align\") ||\n element.querySelector(\"video\")?.getAttribute(\"align\"),\n },\n videoType: {\n default: \"upload\",\n parseHTML: element => {\n const iframe = element.querySelector(\"iframe\");\n\n return iframe ? \"embed\" : \"upload\";\n },\n },\n border: {\n default: true,\n parseHTML: element =>\n element.querySelector(\"video\")?.getAttribute(\"data-border\") === \"true\" ||\n element.querySelector(\"iframe\")?.getAttribute(\"data-border\") === \"true\",\n },\n});\n\nconst getUploadAttributes = () => ({\n alt: {\n default: \"\",\n parseHTML: element => element.querySelector(\"video\")?.getAttribute(\"alt\"),\n },\n vidheight: {\n default: \"fit-content\",\n parseHTML: element =>\n element.querySelector(\"video\")?.getAttribute(\"vidheight\"),\n },\n vidwidth: {\n default: 502,\n parseHTML: element =>\n element.querySelector(\"video\")?.getAttribute(\"vidwidth\"),\n },\n});\n\nconst getEmbedAttributes = () => ({\n figheight: {\n default: 281,\n parseHTML: element => element.getAttribute(\"figheight\"),\n },\n figwidth: {\n default: 500,\n parseHTML: element => element.getAttribute(\"figwidth\"),\n },\n aspectRatio: {\n default: DEFAULT_ASPECT_RATIO,\n parseHTML: element => {\n const iframe = element.querySelector(\".neeto-editor__video-iframe\");\n\n return iframe?.getAttribute(\"data-aspect-ratio\") || DEFAULT_ASPECT_RATIO;\n },\n },\n title: { default: null },\n frameBorder: \"0\",\n allow:\n \"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; fullscreen\",\n allowfullscreen: true,\n});\n\nconst renderEmbedHTML = (node, HTMLAttributes, options) => {\n const { align, figheight, figwidth, border, aspectRatio } = node.attrs;\n\n return [\n \"div\",\n {\n class: classnames(\n \"neeto-editor__video-wrapper\",\n `neeto-editor__video--${align}`,\n { \"neeto-editor__video--bordered\": border }\n ),\n },\n [\n \"div\",\n {\n class: classnames(\"neeto-editor__video-iframe\", {\n \"neeto-editor-aspect-1-1\": aspectRatio === \"1/1\",\n \"neeto-editor-aspect-16-9\": aspectRatio === \"16/9\",\n \"neeto-editor-aspect-9-16\": aspectRatio === \"9/16\",\n \"neeto-editor-aspect-4-3\": aspectRatio === \"4/3\",\n \"neeto-editor-aspect-3-2\": aspectRatio === \"3/2\",\n }),\n style: `width: ${figwidth}px; height: ${figheight}px;`,\n \"data-aspect-ratio\": aspectRatio,\n },\n [\n \"iframe\",\n mergeAttributes(options.HTMLAttributes, {\n ...HTMLAttributes,\n allowfullscreen: true,\n \"data-border\": border,\n }),\n ],\n ],\n ];\n};\n\nconst renderUploadHTML = (node, HTMLAttributes, options) => {\n const { align, vidheight, vidwidth, border } = node.attrs;\n\n const wrapperDivAttrs = {\n class: classnames(\n \"neeto-editor__image-wrapper\",\n `neeto-editor__image--${align}`,\n { \"neeto-editor__image--bordered\": border }\n ),\n };\n\n const heightStyle =\n vidheight === \"fit-content\" ? \"fit-content\" : `${vidheight}px`;\n\n const wrapperLinkAttrs = {\n rel: \"noopener noreferrer\",\n class: \"neeto-editor__image\",\n style: `height:${heightStyle};width:${vidwidth}px;display:inline-block;`,\n };\n\n const captionAttrs = { style: `width:${vidwidth}px;` };\n\n return [\n \"div\",\n wrapperDivAttrs,\n [\n \"figure\",\n mergeAttributes(options.HTMLAttributes, { \"data-video\": \"\" }),\n [\n \"a\",\n wrapperLinkAttrs,\n [\n \"video\",\n mergeAttributes(HTMLAttributes, {\n preload: \"metadata\",\n controls: true,\n draggable: false,\n contenteditable: false,\n \"data-border\": border,\n }),\n ],\n ],\n [\"figcaption\", captionAttrs, 0],\n ],\n ];\n};\n\nconst handleVideoPaste = ({ state, range, match }) => {\n state.tr.delete(range.from, range.to);\n state.tr.setSelection(TextSelection.create(state.doc, range.from + 1));\n\n const validatedUrl = validateUrl(match[0]);\n if (validatedUrl) {\n const node = state.schema.nodes[\"unified-video\"].create({\n src: validatedUrl,\n videoType: \"embed\",\n });\n\n state.tr.insert(range.from, node);\n state.tr.insert(\n range.from + node.nodeSize + 1,\n state.schema.nodes.paragraph.create()\n );\n\n state.tr.setSelection(\n TextSelection.create(state.tr.doc, range.from + node.nodeSize + 1)\n );\n }\n};\n\nconst UnifiedVideoExtension = Node.create({\n name: \"unified-video\",\n\n addOptions() {\n return { HTMLAttributes: {} };\n },\n\n group: \"block\",\n content: \"inline*\",\n draggable: true,\n isolating: true,\n\n addAttributes() {\n return {\n ...getSharedAttributes(),\n ...getUploadAttributes(),\n ...getEmbedAttributes(),\n };\n },\n\n parseHTML() {\n return [\n {\n tag: \"div.neeto-editor__image-wrapper\",\n getAttrs: node => {\n const figure = node.querySelector(\"figure[data-video]\");\n\n if (!figure) return false;\n\n const videoEl = figure.querySelector(\"video\");\n const iframeEl = figure.querySelector(\"iframe\");\n\n if (!videoEl && !iframeEl) return false;\n\n return node.style.fontWeight !== \"normal\" && null;\n },\n contentElement: \"figcaption\",\n },\n { tag: \"iframe[src]\" },\n { tag: \"div.neeto-editor__video-wrapper\" },\n ];\n },\n\n renderHTML({ node, HTMLAttributes }) {\n const { videoType } = node.attrs;\n\n return videoType === \"embed\"\n ? renderEmbedHTML(node, HTMLAttributes, this.options)\n : renderUploadHTML(node, HTMLAttributes, this.options);\n },\n\n addNodeView() {\n return ReactNodeViewRenderer(({ node, ...props }) => {\n const { videoType } = node.attrs;\n\n return videoType === \"embed\" ? (\n <EmbedComponent {...{ ...props, node }} />\n ) : (\n <VideoComponent {...{ ...props, node }} />\n );\n });\n },\n\n addCommands() {\n return {\n setVideo:\n ({ caption, ...attrs }) =>\n ({ chain }) =>\n chain()\n .insertContent({\n type: this.name,\n attrs: { ...attrs, videoType: \"upload\" },\n content: caption ? [{ type: \"text\", text: caption }] : [],\n })\n .command(({ tr, commands }) => {\n const { doc, selection } = tr;\n const position = doc.resolve(selection.to).end();\n\n return commands.setTextSelection(position);\n })\n .run(),\n\n setExternalVideo:\n options =>\n ({ commands }) =>\n commands.insertContent({\n type: this.name,\n attrs: { ...options, videoType: \"embed\" },\n }),\n };\n },\n\n addPasteRules() {\n return [\n new PasteRule({\n find: COMBINED_REGEX,\n handler: handleVideoPaste,\n }),\n ];\n },\n});\n\nexport default UnifiedVideoExtension;\n","import CharacterCount from \"@tiptap/extension-character-count\";\nimport Code from \"@tiptap/extension-code\";\nimport Collaboration from \"@tiptap/extension-collaboration\";\nimport CollaborationCursor from \"@tiptap/extension-collaboration-cursor\";\nimport Color from \"@tiptap/extension-color\";\nimport Document from \"@tiptap/extension-document\";\nimport Focus from \"@tiptap/extension-focus\";\nimport Highlight from \"@tiptap/extension-highlight\";\nimport ListItem from \"@tiptap/extension-list-item\";\nimport TableCell from \"@tiptap/extension-table-cell\";\nimport TableHeader from \"@tiptap/extension-table-header\";\nimport TableRow from \"@tiptap/extension-table-row\";\nimport TextStyle from \"@tiptap/extension-text-style\";\nimport Underline from \"@tiptap/extension-underline\";\nimport StarterKit from \"@tiptap/starter-kit\";\nimport { EDITOR_OPTIONS } from \"common/constants\";\nimport { isEmpty } from \"ramda\";\n\nimport { buildLevelsFromOptions } from \"components/Editor/utils\";\n\nimport HighlightInternal from \"../BackgroundColor/ExtensionConfig\";\nimport BulletList from \"../BulletList/ExtensionConfig\";\nimport Callout from \"../Callout/ExtensionConfig\";\nimport CodeBlock from \"../CodeBlock/ExtensionConfig\";\nimport CustomCommands from \"../CustomCommands/ExtensionConfig\";\nimport DeletedArticleDecoration from \"../DeletedArticleDecoration/ExtensionConfig\";\nimport EmojiPicker from \"../Emoji/EmojiPicker/ExtensionConfig\";\nimport EmojiSuggestion from \"../Emoji/EmojiSuggestion/ExtensionConfig\";\nimport ImageExtension from \"../Image/ExtensionConfig\";\nimport FigCaption from \"../Image/FigCaption\";\nimport Italic from \"../Italic/ExtensionConfig\";\nimport KeyboardShortcuts from \"../KeyboardShortcuts/ExtensionConfig\";\nimport Link from \"../Link/ExtensionConfig\";\nimport Mention, { createMentionSuggestions } from \"../Mention/ExtensionConfig\";\nimport OrderedList from \"../OrderedList/ExtensionConfig\";\nimport Placeholder from \"../Placeholder/ExtensionConfig\";\nimport SelectionDecoration from \"../SelectionDecoration/ExtensionConfig\";\nimport SlashCommands from \"../SlashCommands/ExtensionConfig\";\nimport SpecialMentions from \"../SpecialMentions/ExtensionConfig\";\nimport Table from \"../Table/ExtensionConfig\";\nimport {\n TodoListExtension,\n TodoItemExtension,\n} from \"../TodoList/ExtensionConfig\";\nimport Variable from \"../Variable/ExtensionConfig\";\nimport UnifiedVideoExtension from \"../Video/ExtensionConfig\";\n\nconst useCustomExtensions = ({\n placeholder,\n extensions,\n mentions,\n variables,\n isSlashCommandsActive,\n options,\n addonCommands,\n onSubmit,\n keyboardShortcuts,\n setMediaUploader,\n setIsAddLinkActive,\n attachmentProps,\n openImageInNewTab,\n openLinkInNewTab,\n enableReactNodeViewOptimization,\n collaborationProvider,\n setIsNeetoKbArticleActive,\n}) => {\n let customExtensions = [\n CharacterCount,\n Code,\n CodeBlock.configure({ enableReactNodeViewOptimization }),\n CustomCommands,\n Document,\n FigCaption,\n HighlightInternal,\n SelectionDecoration,\n Focus.configure({ mode: \"shallowest\" }),\n Highlight,\n ImageExtension.configure({\n openImageInNewTab,\n enableReactNodeViewOptimization,\n }),\n Link.configure({\n HTMLAttributes: { target: openLinkInNewTab ? \"_blank\" : null },\n }),\n Placeholder.configure({ placeholder, isSlashCommandsActive }),\n StarterKit.configure({\n document: false,\n codeBlock: false,\n code: false,\n bulletList: false,\n listItem: false, // Disable ListItem from StarterKit since we add it conditionally below\n blockquote: options.includes(EDITOR_OPTIONS.BLOCKQUOTE),\n orderedList: false,\n italic: false,\n history: !collaborationProvider,\n heading: { levels: buildLevelsFromOptions(options) },\n }),\n TextStyle,\n Underline,\n Italic,\n KeyboardShortcuts.configure({\n onSubmit,\n shortcuts: keyboardShortcuts,\n isBlockQuoteActive: options.includes(EDITOR_OPTIONS.BLOCKQUOTE),\n }),\n EmojiSuggestion,\n EmojiPicker,\n ];\n\n if (options.includes(EDITOR_OPTIONS.VIDEO_UPLOAD)) {\n customExtensions.push(UnifiedVideoExtension);\n }\n\n if (options.includes(EDITOR_OPTIONS.NEETO_KB_ARTICLE)) {\n customExtensions.push(\n DeletedArticleDecoration.configure({\n deletedArticleIds: new Set(),\n })\n );\n }\n\n if (options.includes(EDITOR_OPTIONS.TABLE)) {\n customExtensions.push(\n Table.configure({ resizable: true }),\n TableRow,\n TableHeader,\n TableCell\n );\n }\n\n if (\n options.includes(EDITOR_OPTIONS.TEXT_COLOR) ||\n options.includes(EDITOR_OPTIONS.HIGHLIGHT)\n ) {\n customExtensions.push(Color);\n }\n\n if (options.includes(EDITOR_OPTIONS.LIST_BULLETS)) {\n customExtensions.push(BulletList);\n }\n\n if (options.includes(EDITOR_OPTIONS.LIST_ORDERED)) {\n customExtensions.push(OrderedList);\n }\n\n if (\n options.includes(EDITOR_OPTIONS.LIST_BULLETS) ||\n options.includes(EDITOR_OPTIONS.LIST_ORDERED)\n ) {\n customExtensions.push(ListItem);\n }\n\n if (options.includes(EDITOR_OPTIONS.CALLOUT)) {\n customExtensions.push(Callout);\n }\n\n if (options.includes(EDITOR_OPTIONS.TODO_LIST)) {\n customExtensions.push(TodoListExtension);\n customExtensions.push(TodoItemExtension);\n }\n\n if (isSlashCommandsActive) {\n customExtensions.push(\n SlashCommands.configure({\n options,\n addonCommands,\n setMediaUploader,\n setIsAddLinkActive,\n attachmentProps,\n setIsNeetoKbArticleActive,\n })\n );\n }\n\n if (!isEmpty(mentions)) {\n const items = createMentionSuggestions(mentions);\n\n customExtensions.push(Mention.configure({ suggestion: { items } }));\n\n customExtensions.push(SpecialMentions.configure({ suggestion: { items } }));\n }\n\n if (!isEmpty(variables)) {\n customExtensions.push(Variable);\n }\n\n if (collaborationProvider) {\n customExtensions.push(\n Collaboration.configure({\n document: collaborationProvider.document ?? collaborationProvider.doc,\n })\n );\n\n customExtensions.push(\n CollaborationCursor.configure({\n provider: collaborationProvider,\n })\n );\n }\n\n customExtensions = customExtensions.concat(extensions);\n\n return customExtensions;\n};\n\nexport default useCustomExtensions;\n","import React from \"react\";\n\nimport classNames from \"classnames\";\nimport { isNotEmpty } from \"neetocist\";\nimport { withT } from \"neetocommons/react-utils\";\nimport { Typography as NeetoUITypography } from \"neetoui\";\n\nimport { decodeHtmlEntities } from \"src/utils/common\";\n\nconst ArticlesList = withT(\n ({\n t,\n articles = [],\n onSelectArticle,\n highlightedIndex = 0,\n containerRef,\n }) => (\n <div className=\"max-h-40 overflow-y-auto\" ref={containerRef}>\n {isNotEmpty(articles) ? (\n <div className=\"space-y-1\">\n {articles.map((article, index) => (\n <button\n data-index={index}\n key={article?.id}\n className={classNames(\n \"hover:neeto-ui-bg-gray-200 focus:neeto-ui-bg-gray-200 neeto-ui-rounded w-full p-2 text-left focus:outline-none\",\n { \"neeto-ui-bg-gray-200\": index === highlightedIndex }\n )}\n onClick={() => onSelectArticle?.(article)}\n >\n <div className=\"neeto-ui-text-sm neeto-ui-font-medium\">\n {decodeHtmlEntities(article?.title)}\n </div>\n </button>\n ))}\n </div>\n ) : (\n <div className=\"neeto-ui-text-gray-500 py-4 text-center\">\n <NeetoUITypography style=\"body2\">\n {t(\"neetoEditor.error.noResults\")}\n </NeetoUITypography>\n </div>\n )}\n </div>\n )\n);\n\nexport default ArticlesList;\n","import { useState, useEffect, useCallback } from \"react\";\n\nconst useArticleNavigation = ({\n articles = [],\n articlesContainerRef,\n mode,\n onClose,\n handleModalArticleSelect,\n searchTerm,\n}) => {\n const [highlightedIndex, setHighlightedIndex] = useState(0);\n\n useEffect(() => {\n setHighlightedIndex(0);\n }, [articles, searchTerm]);\n\n useEffect(() => {\n if (!articlesContainerRef?.current || !articles?.length) return;\n\n const container = articlesContainerRef.current;\n const highlightedItem = container.querySelector(\n `[data-index=\"${highlightedIndex}\"]`\n );\n\n if (!highlightedItem) return;\n\n const containerRect = container.getBoundingClientRect();\n const itemRect = highlightedItem.getBoundingClientRect();\n\n const isItemAbove = itemRect.top < containerRect.top;\n const isItemBelow = itemRect.bottom > containerRect.bottom;\n\n if (isItemAbove) {\n container.scrollTop -= containerRect.top - itemRect.top;\n } else if (isItemBelow) {\n container.scrollTop += itemRect.bottom - containerRect.bottom;\n }\n }, [highlightedIndex, articles.length, articlesContainerRef]);\n\n const navigationHandlers = {\n down: prev => (prev < articles.length - 1 ? prev + 1 : 0),\n up: prev => (prev > 0 ? prev - 1 : articles.length - 1),\n };\n\n const keyActions = {\n Escape: () => onClose?.(),\n ArrowDown: () => setHighlightedIndex(navigationHandlers[\"down\"]),\n ArrowUp: () => setHighlightedIndex(navigationHandlers[\"up\"]),\n Tab: event =>\n setHighlightedIndex(navigationHandlers[event.shiftKey ? \"up\" : \"down\"]),\n Enter: () => {\n if (articles[highlightedIndex]) {\n handleModalArticleSelect?.(articles[highlightedIndex]);\n }\n },\n };\n\n const handleKeyboardNavigation = useCallback(\n event => {\n if (mode !== \"modal\") return;\n\n const action = keyActions[event.key];\n if (!action) return;\n\n event.preventDefault();\n action(event);\n },\n [mode, articles, highlightedIndex, onClose, handleModalArticleSelect]\n );\n\n useEffect(() => {\n if (mode !== \"modal\") return undefined;\n\n document.addEventListener(\"keydown\", handleKeyboardNavigation);\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeyboardNavigation);\n };\n }, [mode, handleKeyboardNavigation]);\n\n return { highlightedIndex };\n};\n\nexport default useArticleNavigation;\n","import React, { useState, useEffect, useRef } from \"react\";\n\nimport { findBy } from \"neetocist\";\nimport Search from \"neetomolecules/Search\";\nimport { Select, Spinner as NeetoUISpinner } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { useFetchKbArticles } from \"hooks/reactQuery/kbArticle/useArticleFetching\";\n\nimport ArticlesList from \"./ArticlesList\";\nimport {\n MODE,\n MODAL_BOTTOM_MARGIN,\n MODAL_LEFT_OFFSET,\n MODAL_TOP_OFFSET,\n MODAL_TRANSFORM_Y,\n MODAL_TRANSFORM_X,\n} from \"./constants\";\nimport useArticleNavigation from \"./hooks/useArticleNavigation\";\nimport { buildArticleFullUrl, createArticleOptions } from \"./utils\";\n\nconst ArticlePicker = ({\n mode = MODE.MODAL,\n cursorPos,\n onClose,\n isLoading: externalIsLoading,\n options: externalOptions,\n value,\n onChange,\n placeholder,\n label,\n name,\n className,\n strategy,\n onArticleSelect,\n}) => {\n const { t } = useTranslation();\n const [searchTerm, setSearchTerm] = useState(\"\");\n const modalRef = useRef(null);\n const articlesContainerRef = useRef(null);\n\n const { data: articles = [], isLoading: isLoadingArticles } =\n useFetchKbArticles({\n searchTerm,\n reactQueryOptions: { enabled: !externalOptions },\n });\n\n const isLoading = externalIsLoading || isLoadingArticles;\n\n const selectOptions =\n mode === MODE.SELECT ? createArticleOptions(articles) : [];\n\n const handleModalArticleSelect = article => {\n if (mode !== MODE.MODAL || !article) return;\n\n const articleWithUrl = {\n ...article,\n full_url: buildArticleFullUrl(article.slug),\n };\n\n onArticleSelect(article, articleWithUrl);\n onClose?.();\n };\n\n const { highlightedIndex } = useArticleNavigation({\n articles,\n articlesContainerRef,\n mode,\n onClose,\n handleModalArticleSelect,\n searchTerm,\n });\n\n const handleSelectChange = (selectedValue, formikHelpers) => {\n const selectedOption = findBy(\n { value: selectedValue?.value },\n selectOptions\n );\n\n if (selectedOption?.data?.type === \"article\" && onChange) {\n onChange(selectedValue, formikHelpers);\n }\n };\n\n useEffect(() => {\n if (mode !== MODE.MODAL || !modalRef.current || !cursorPos) return;\n\n const modal = modalRef.current;\n\n const modalRect = modal.getBoundingClientRect();\n const modalWidth = modalRect.width || 320;\n const modalHeight = modalRect.height || 200;\n\n const maxLeft = window.innerWidth - modalWidth;\n const maxTop = window.innerHeight - modalHeight - MODAL_BOTTOM_MARGIN;\n\n const adjustedLeft = Math.min(cursorPos.left - MODAL_LEFT_OFFSET, maxLeft);\n const adjustedTop = Math.min(cursorPos.top - MODAL_TOP_OFFSET, maxTop);\n\n Object.assign(modal.style, {\n position: \"fixed\",\n top: `${adjustedTop}px`,\n left: `${adjustedLeft}px`,\n transform: `translateY(${MODAL_TRANSFORM_Y}px) translateX(${MODAL_TRANSFORM_X}px)`,\n zIndex: 99999,\n });\n }, [mode, cursorPos]);\n\n useEffect(() => {\n if (mode !== MODE.MODAL) return undefined;\n\n const handleClickOutside = event => {\n if (modalRef.current && !modalRef.current.contains(event.target)) {\n onClose?.();\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [mode, onClose]);\n\n if (mode === MODE.MODAL) {\n return (\n <div className=\"ne-article-picker-popover w-80 border\" ref={modalRef}>\n <div className=\"mb-4\">\n <Search\n autoFocus\n placeholder={t(\"neetoEditor.placeholders.searchArticles\")}\n onSearch={setSearchTerm}\n />\n </div>\n {isLoading ? (\n <div className=\"flex items-center justify-center py-8\">\n <NeetoUISpinner />\n </div>\n ) : (\n <div>\n <ArticlesList\n {...{ articles, highlightedIndex, searchTerm }}\n containerRef={articlesContainerRef}\n onSelectArticle={handleModalArticleSelect}\n />\n </div>\n )}\n </div>\n );\n }\n\n return (\n <Select\n {...{ className, isLoading, label, name, placeholder, strategy, value }}\n isSearchable\n options={externalOptions || selectOptions}\n onChange={handleSelectChange}\n />\n );\n};\n\nexport default ArticlePicker;\n","import React from \"react\";\n\nimport ArticlePicker from \"./ArticlePicker\";\nimport { MODE } from \"./constants\";\n\nconst ArticleSelector = ({\n editor,\n cursorPos,\n onClose,\n deletedArticlesHook,\n}) => {\n const handleArticleSelect = (article, detailedArticle) => {\n if (!detailedArticle.full_url) return;\n const { from, to } = editor.state.selection;\n\n const linkText = detailedArticle.title || article.title;\n const isDeleted = deletedArticlesHook?.isArticleDeleted(article.id);\n\n const attrs = {\n href: detailedArticle.full_url,\n \"data-neeto-kb-article\": \"true\",\n \"data-article-id\": article.id,\n \"data-article-deleted\": isDeleted ? \"true\" : null,\n title: detailedArticle.title || article.title,\n };\n\n const linkMark = editor.state.schema.marks.link.create(attrs);\n const linkTextWithMark = editor.state.schema.text(linkText, [linkMark]);\n\n const tr = editor.state.tr.replaceWith(from, to, linkTextWithMark);\n editor.view.dispatch(tr);\n editor.view.focus();\n };\n\n return (\n <ArticlePicker\n {...{ cursorPos, deletedArticlesHook, editor, onClose }}\n mode={MODE.MODAL}\n onArticleSelect={handleArticleSelect}\n />\n );\n};\n\nexport default ArticleSelector;\n","import { CellSelection } from \"@tiptap/pm/tables\";\nimport { t } from \"i18next\";\nimport { isNotPresent } from \"neetocist\";\nimport {\n DeleteRow,\n DeleteColumn,\n DeleteTable,\n InsertRow,\n InsertColumn,\n MergeSplit,\n ToggleHeaderRow,\n} from \"neetoicons\";\n\nconst shouldShowMergeCellToggler = selection => {\n if (isNotPresent(selection)) return false;\n\n if (selection instanceof CellSelection) return true;\n\n let depth = selection.$from.depth;\n\n while (depth > 0) {\n const node = selection.$from.node(depth);\n const nodeRoleInTable = node?.type?.spec?.tableRole;\n if (nodeRoleInTable === \"cell\" || nodeRoleInTable === \"header_cell\") {\n const { colspan, rowspan } = node.attrs;\n\n return colspan > 1 || rowspan > 1;\n }\n depth -= 1;\n }\n\n return false;\n};\n\nconst setTableAlignment = (editor, alignment) => {\n const { state, view } = editor;\n const { selection } = state;\n\n let tableNode = null;\n let tablePos = null;\n\n state.doc.descendants((node, pos) => {\n if (\n node.type.name === \"table\" &&\n pos <= selection.from &&\n selection.from <= pos + node.nodeSize\n ) {\n tableNode = node;\n tablePos = pos;\n\n return false;\n }\n\n return true;\n });\n\n if (tableNode && tablePos !== null) {\n const tr = state.tr;\n const currentAttrs = tableNode?.attrs || {};\n const newAttrs = { ...currentAttrs, textAlign: alignment };\n\n tr.setNodeMarkup(tablePos, null, newAttrs);\n view.dispatch(tr);\n }\n};\n\nexport const tableActions = ({ editor }) => [\n {\n type: \"dropdown\",\n label: t(\"neetoEditor.table.textAlign\"),\n items: [\n {\n type: \"left\",\n command: () => setTableAlignment(editor, \"left\"),\n tooltipLabel: t(\"neetoEditor.table.leftAlign\"),\n },\n {\n type: \"center\",\n command: () => setTableAlignment(editor, \"center\"),\n tooltipLabel: t(\"neetoEditor.table.centerAlign\"),\n },\n {\n type: \"right\",\n command: () => setTableAlignment(editor, \"right\"),\n tooltipLabel: t(\"neetoEditor.table.rightAlign\"),\n },\n ],\n },\n {\n label: t(\"neetoEditor.table.insertRow\"),\n command: () => editor.commands.addRowAfter(),\n icon: InsertRow,\n },\n {\n label: t(\"neetoEditor.table.insertColumn\"),\n command: () => editor.commands.addColumnAfter(),\n icon: InsertColumn,\n },\n {\n label: t(\"neetoEditor.table.deleteRow\"),\n command: () => editor.chain().focus().deleteRow().run(),\n icon: DeleteRow,\n isVisible: true,\n },\n {\n label: t(\"neetoEditor.table.deleteColumn\"),\n command: () => editor.chain().focus().deleteColumn().run(),\n icon: DeleteColumn,\n },\n {\n label: t(\"neetoEditor.table.mergeSplit\"),\n command: () => editor.chain().focus().mergeOrSplit().run(),\n icon: MergeSplit,\n isHidden: !shouldShowMergeCellToggler(editor.state?.selection),\n },\n {\n label: t(\"neetoEditor.table.toggleHeaderRow\"),\n command: () => editor.chain().focus().toggleHeaderRow().run(),\n icon: ToggleHeaderRow,\n },\n {\n label: t(\"neetoEditor.table.delete\"),\n command: () => editor.commands.deleteTable(),\n icon: DeleteTable,\n },\n];\n","import { useCallback } from \"react\";\n\nimport { BubbleMenu } from \"@tiptap/react\";\nimport { CenterAlign, Down, LeftAlign, RightAlign } from \"neetoicons\";\nimport { Button, Dropdown } from \"neetoui\";\nimport { sticky } from \"tippy.js\";\n\nimport { tableActions } from \"./utils\";\n\nconst { Menu, MenuItem } = Dropdown;\n\nconst alignmentIcons = {\n left: LeftAlign,\n center: CenterAlign,\n right: RightAlign,\n};\n\nconst TableActionMenu = ({ editor }) => {\n const getReferenceClientRect = useCallback(() => {\n if (!editor) return new DOMRect(0, 0, 0, 0);\n\n const { $anchor: anchor } = editor.state?.selection ?? {};\n const node = editor.view.domAtPos(anchor?.pos)?.node;\n const element = node?.nodeType === 3 ? node?.parentElement : node;\n\n return element?.getBoundingClientRect() || new DOMRect(0, 0, 0, 0);\n }, [editor]);\n\n const shouldShow = useCallback(\n () => editor?.isFocused && editor?.isActive(\"table\"),\n [editor]\n );\n\n if (!editor) return null;\n\n return (\n <BubbleMenu\n {...{ editor, shouldShow }}\n className=\"neeto-editor-bubble-menu\"\n tippyOptions={{\n arrow: false,\n offset: [10, 10],\n zIndex: 99999,\n theme: \"light neeto-editor-bubble-menu-tippy-box\",\n popperOptions: {\n modifiers: [{ name: \"flip\", enabled: false }],\n },\n getReferenceClientRect,\n plugins: [sticky],\n sticky: \"popper\",\n }}\n >\n {tableActions({ editor }).map(action => {\n if (action.isHidden) return null;\n\n if (action.type) {\n return (\n <Dropdown\n appendTo={() => document.body}\n className=\"neeto-editor-table-bubble-menu__dropdown\"\n closeOnSelect={false}\n key={action.label}\n position=\"bottom-start\"\n strategy=\"fixed\"\n buttonProps={{\n className: \"neeto-editor-table-bubble-menu__dropdown-item\",\n icon: Down,\n iconPosition: \"right\",\n iconSize: 16,\n label: <LeftAlign />,\n size: \"small\",\n style: \"text\",\n tooltipProps: {\n content: action.label,\n position: \"top\",\n delay: [500],\n },\n }}\n >\n <Menu className=\"neeto-ui-flex neeto-ui-items-center neeto-ui-justify-center\">\n {action.items?.map(({ type, command, tooltipLabel }) => {\n const IconComponent = alignmentIcons[type];\n\n return (\n <MenuItem key={type}>\n <Button\n className=\"neeto-editor-table-bubble-menu__item\"\n icon={IconComponent}\n style=\"text\"\n tooltipProps={{\n content: tooltipLabel,\n position: \"bottom\",\n delay: [500],\n }}\n onClick={command}\n />\n </MenuItem>\n );\n })}\n </Menu>\n </Dropdown>\n );\n }\n\n return (\n <Button\n className=\"neeto-editor-table-bubble-menu__item\"\n icon={action.icon}\n iconSize={18}\n key={action.label}\n size=\"small\"\n style=\"text\"\n tooltipProps={{\n content: action.label,\n position: \"top\",\n delay: [500],\n }}\n onClick={action.command}\n />\n );\n })}\n </BubbleMenu>\n );\n};\n\nexport default TableActionMenu;\n","import React from \"react\";\n\nimport { withT } from \"neetocommons/react-utils\";\nimport { Button, Modal } from \"neetoui\";\n\nconst KbArticleDeletedModal = withT(({ t, isOpen, onClose }) => (\n <Modal {...{ isOpen, onClose }}>\n <Modal.Header>\n <h2>{t(\"neetoEditor.linkKb.articleDeletedTitle\")}</h2>\n </Modal.Header>\n <Modal.Body>\n <p>{t(\"neetoEditor.linkKb.articleDeletedDescription\")}</p>\n </Modal.Body>\n <Modal.Footer>\n <Button label={t(\"neetoEditor.common.close\")} onClick={onClose} />\n </Modal.Footer>\n </Modal>\n));\n\nexport default KbArticleDeletedModal;\n","import React from \"react\";\n\nimport { Button } from \"neetoui\";\nimport { Form, Input } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { decodeHtmlEntities } from \"src/utils/common\";\n\nimport ArticlePicker from \"./ArticlePicker\";\nimport { MODE } from \"./constants\";\n\nconst KbArticleEdit = ({\n linkAttributes,\n getCurrentTextContent,\n getCurrentArticleOption,\n handleKbArticleSubmit,\n handleSelectChange,\n handleKeyDown,\n isLoadingKbData,\n selectOptions,\n setIsEditing,\n}) => {\n const initialValues = {\n textContent:\n getCurrentTextContent?.() ||\n decodeHtmlEntities(linkAttributes?.title || \"\") ||\n \"\",\n pageSelection: getCurrentArticleOption(),\n };\n\n const { t } = useTranslation();\n\n return (\n <Form\n className=\"w-64\"\n formikProps={{\n initialValues,\n onSubmit: handleKbArticleSubmit,\n enableReinitialize: true,\n }}\n >\n {({ dirty, isSubmitting, setFieldValue, values }) => (\n <div className=\"flex w-full flex-col items-start gap-2\">\n <Input\n required\n unlimitedChars\n className=\"w-full\"\n data-testid=\"neeto-editor-edit-kb-link-text-input\"\n label={t(\"neetoEditor.common.text\")}\n name=\"textContent\"\n placeholder={t(\"neetoEditor.placeholders.enterText\")}\n onKeyDown={handleKeyDown}\n />\n <ArticlePicker\n className=\"w-full\"\n data-testid=\"neeto-editor-edit-kb-link-page-select\"\n isLoading={isLoadingKbData}\n label={t(\"neetoEditor.linkKb.articleLabel\")}\n mode={MODE.SELECT}\n name=\"pageSelection\"\n options={selectOptions}\n placeholder={t(\"neetoEditor.linkKb.selectArticle\")}\n strategy=\"fixed\"\n value={values.pageSelection}\n onChange={value => handleSelectChange(value, { setFieldValue })}\n />\n <div className=\"ne-link-popover__edit-prompt-buttons\">\n <Button\n data-testid=\"neeto-editor-edit-kb-link-done\"\n disabled={!dirty}\n label={t(\"neetoEditor.common.done\")}\n loading={isSubmitting}\n size=\"small\"\n type=\"submit\"\n />\n <Button\n data-testid=\"neeto-editor-edit-kb-link-cancel\"\n label={t(\"neetoEditor.common.cancel\")}\n size=\"small\"\n style=\"text\"\n onClick={() => setIsEditing(false)}\n />\n </div>\n </div>\n )}\n </Form>\n );\n};\n\nexport default KbArticleEdit;\n","import React from \"react\";\n\nimport classnames from \"classnames\";\nimport { withT } from \"neetocommons/react-utils\";\nimport { Edit, Articles } from \"neetoicons\";\nimport CopyToClipboardButton from \"neetomolecules/CopyToClipboardButton\";\nimport { Button } from \"neetoui\";\n\nimport { decodeHtmlEntities } from \"src/utils/common\";\n\nconst KbArticleView = withT(\n ({ t, linkAttributes, isDeleted, onEdit, onDeletedClick, currentText }) => (\n <div>\n <div className=\"flex items-center gap-3\">\n <Articles className=\"neeto-ui-text-gray-600\" size={16} />\n <a\n href={linkAttributes?.href}\n rel=\"noreferrer\"\n target=\"_blank\"\n className={classnames(\"ne-link-popover__kb-article-link\", {\n \"ne-link-popover__kb-article-link--deleted\": isDeleted,\n })}\n onClick={event => {\n if (!isDeleted) return;\n event.preventDefault();\n onDeletedClick?.();\n }}\n >\n {currentText ||\n decodeHtmlEntities(linkAttributes?.title || \"\") ||\n linkAttributes?.href}\n </a>\n <div className=\"flex items-center gap-0.5\">\n <CopyToClipboardButton\n size=\"small\"\n style=\"text\"\n value={linkAttributes?.href}\n />\n <Button\n className=\"ne-link-popover__option-button mx-0\"\n data-testid=\"neeto-editor-link-popover-edit\"\n icon={Edit}\n size=\"small\"\n style=\"text\"\n tooltipProps={{\n content: t(\"neetoEditor.common.edit\"),\n position: \"top\",\n }}\n onClick={onEdit}\n />\n </div>\n </div>\n {isDeleted && (\n <div className=\"neeto-ui-rounded mt-2 p-2 text-sm\">\n {t(\"neetoEditor.linkKb.articleDeletedDescription\")}\n </div>\n )}\n </div>\n )\n);\n\nexport default KbArticleView;\n","import { useEffect, useState, useRef } from \"react\";\n\nimport { getMarkRange, getMarkType } from \"@tiptap/react\";\nimport { findBy } from \"neetocist\";\nimport { useOnClickOutside } from \"neetocommons/react-utils\";\nimport { Button, Checkbox } from \"neetoui\";\nimport { Form, Input } from \"neetoui/formik\";\nimport { equals, isNil } from \"ramda\";\nimport { createPortal } from \"react-dom\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { useFetchKbArticles } from \"hooks/reactQuery/kbArticle/useArticleFetching\";\nimport { decodeHtmlEntities } from \"src/utils/common\";\n\nimport { LINK_VALIDATION_SCHEMA } from \"./constants\";\nimport KbArticleDeletedModal from \"./CustomExtensions/LinkKbArticles/KbArticleDeletedModal\";\nimport KbArticleEdit from \"./CustomExtensions/LinkKbArticles/KbArticleEdit\";\nimport KbArticleView from \"./CustomExtensions/LinkKbArticles/KbArticleView\";\nimport {\n buildArticleFullUrl,\n createArticleOptions,\n} from \"./CustomExtensions/LinkKbArticles/utils\";\nimport { getLinkPopoverPosition } from \"./Menu/Fixed/utils\";\nimport { validateAndFormatUrl } from \"./utils\";\n\nconst LinkPopOver = ({ editor, deletedArticlesHook }) => {\n const { view } = editor || {};\n const { from } = editor.state.selection;\n const initialTextContent = view?.state?.doc?.nodeAt(from)?.text || \"\";\n\n const [arrowPosition, setArrowPosition] = useState({ top: 0, left: 0 });\n const [popoverPosition, setPopoverPosition] = useState({ top: 0, left: 0 });\n const [isEditing, setIsEditing] = useState(false);\n const [isLinkActive, setIsLinkActive] = useState(editor?.isActive(\"link\"));\n const [linkAttributes, setLinkAttributes] = useState(\n editor?.getAttributes(\"link\")\n );\n\n const [showDeletedModal, setShowDeletedModal] = useState(false);\n\n const popoverRef = useRef(null);\n\n const { t } = useTranslation();\n const isNeetoKbArticle = linkAttributes?.[\"data-neeto-kb-article\"] === \"true\";\n\n const { data: articles = [], isLoading: isLoadingKbData } =\n useFetchKbArticles({\n searchTerm: \"\",\n reactQueryOptions: { enabled: isEditing && isNeetoKbArticle },\n });\n\n const selectOptions = createArticleOptions(articles);\n\n const handleSelectChange = (value, { setFieldValue }) => {\n const selectedOption = findBy({ value: value?.value }, selectOptions);\n\n if (selectedOption?.data?.type === \"article\") {\n setFieldValue(\"pageSelection\", value);\n }\n };\n\n const updatePopoverPosition = () => {\n if (!view) return;\n\n const { arrowPosition, popoverPosition } = getLinkPopoverPosition(\n editor,\n popoverRef\n );\n\n setPopoverPosition({\n top: parseInt(popoverPosition.top),\n left: parseInt(popoverPosition.left),\n });\n\n setArrowPosition({\n top: parseInt(arrowPosition.top),\n left: parseInt(arrowPosition.left),\n });\n };\n\n const handleUnlink = () =>\n editor.chain().focus().extendMarkRange(\"link\").unsetLink().run();\n\n const removePopover = () => {\n setIsEditing(false);\n setIsLinkActive(false);\n };\n\n const popoverStyle = {\n display: \"block\",\n position: \"fixed\",\n top: popoverPosition.top,\n left: popoverPosition.left,\n transform: `translateY(52px) translateX(${isEditing ? \"8px\" : \"3px\"})`,\n };\n\n const handleSubmit = ({ textContent, urlString, openInNewTab }) => {\n const formattedUrl = validateAndFormatUrl(urlString);\n if (equals(textContent, initialTextContent)) {\n editor\n .chain()\n .focus()\n .extendMarkRange(\"link\")\n .setLink({\n href: formattedUrl,\n target: openInNewTab ? \"_blank\" : \"_self\",\n })\n .run();\n\n setIsEditing(false);\n\n return;\n }\n const { state, dispatch } = editor.view;\n const type = getMarkType(\"link\", state.schema);\n const { $to } = state.selection;\n const { from = null, to = null } = getMarkRange($to, type) || {};\n\n if (isNil(from) || isNil(to)) return;\n\n const attrs = {\n href: formattedUrl,\n target: openInNewTab ? \"_blank\" : \"_self\",\n };\n\n const linkMark = state.schema.marks.link.create(attrs);\n const linkTextWithMark = state.schema.text(textContent, [linkMark]);\n\n const tr = state.tr.replaceWith(from, to, linkTextWithMark);\n\n dispatch(tr);\n\n setIsEditing(false);\n editor.view.focus();\n editor.commands.extendMarkRange(\"link\");\n };\n\n const handleKbArticleSubmit = ({ textContent, pageSelection }) => {\n if (!pageSelection || pageSelection === \"\") {\n const { state, dispatch } = editor.view;\n const type = getMarkType(\"link\", state.schema);\n const { $to } = state.selection;\n const { from = null, to = null } = getMarkRange($to, type) || {};\n\n if (isNil(from) || isNil(to)) return;\n\n const articleId = linkAttributes?.[\"data-article-id\"];\n const isDeleted = deletedArticlesHook?.isArticleDeleted(articleId);\n\n const attrs = {\n href: linkAttributes?.href,\n \"data-neeto-kb-article\": linkAttributes?.[\"data-neeto-kb-article\"],\n \"data-article-id\": articleId,\n \"data-article-deleted\": isDeleted ? \"true\" : null,\n title: textContent || decodeHtmlEntities(linkAttributes?.title || \"\"),\n };\n\n const linkMark = state.schema.marks.link.create(attrs);\n const linkTextWithMark = state.schema.text(textContent, [linkMark]);\n\n const tr = state.tr.replaceWith(from, to, linkTextWithMark);\n dispatch(tr);\n\n setIsEditing(false);\n editor.view.focus();\n editor.commands.extendMarkRange(\"link\");\n\n return;\n }\n\n const selectedOption = findBy(\n { value: pageSelection?.value },\n selectOptions\n );\n\n if (!selectedOption) return;\n\n const { data } = selectedOption;\n\n if (data?.type === \"article\") {\n const full_url = buildArticleFullUrl(data.slug);\n\n if (full_url) {\n const { state, dispatch } = editor.view;\n const type = getMarkType(\"link\", state.schema);\n const { $to } = state.selection;\n const { from = null, to = null } = getMarkRange($to, type) || {};\n\n if (isNil(from) || isNil(to)) return;\n\n const isDeleted = deletedArticlesHook?.isArticleDeleted(data.id);\n\n const attrs = {\n href: full_url,\n \"data-neeto-kb-article\": \"true\",\n \"data-article-id\": data.id,\n \"data-article-deleted\": isDeleted ? \"true\" : null,\n title: decodeHtmlEntities(data.title || \"\"),\n };\n\n const linkMark = state.schema.marks.link.create(attrs);\n const linkTextWithMark = state.schema.text(\n textContent || decodeHtmlEntities(data.title || \"\"),\n [linkMark]\n );\n\n const tr = state.tr.replaceWith(from, to, linkTextWithMark);\n dispatch(tr);\n\n setIsEditing(false);\n editor.view.focus();\n editor.commands.extendMarkRange(\"link\");\n }\n }\n };\n\n const handleKeyDown = event =>\n equals(event.key, \"Escape\") && setIsEditing(false);\n\n useOnClickOutside(popoverRef, removePopover, { enabled: true });\n\n useEffect(() => {\n const isActive = editor?.isActive(\"link\");\n\n setIsLinkActive(isActive);\n if (isActive) {\n updatePopoverPosition();\n const currentLinkAttributes = editor?.getAttributes(\"link\");\n\n setLinkAttributes(currentLinkAttributes);\n }\n }, [view?.state?.selection?.$from?.pos, isEditing]);\n\n const getCurrentArticleOption = () => {\n const articleId = linkAttributes?.[\"data-article-id\"];\n if (!articleId) return \"\";\n\n const currentArticleOption = findBy(\n { data: { type: \"article\", id: articleId } },\n selectOptions || []\n );\n\n if (!currentArticleOption && linkAttributes?.title) {\n return {\n label: decodeHtmlEntities(linkAttributes.title),\n value: articleId,\n };\n }\n\n return currentArticleOption || \"\";\n };\n\n const getCurrentTextContent = () => {\n const { state } = editor.view;\n const type = getMarkType(\"link\", state.schema);\n const { $to } = state.selection;\n const { from = null, to = null } = getMarkRange($to, type) || {};\n\n if (from !== null && to !== null) {\n return state.doc.textBetween(from, to);\n }\n const { $from } = state.selection;\n\n return state.doc.textBetween($from.pos, $to.pos);\n };\n\n const renderEditingMode = () => {\n const initialValues = {\n textContent: initialTextContent,\n urlString: linkAttributes?.href || \"\",\n openInNewTab: linkAttributes?.target === \"_blank\",\n };\n\n return (\n <Form\n key={`${linkAttributes?.href}-${linkAttributes?.target}`}\n formikProps={{\n initialValues,\n onSubmit: handleSubmit,\n validationSchema: LINK_VALIDATION_SCHEMA,\n }}\n >\n {({ dirty, isSubmitting, setFieldValue, values }) => (\n <>\n <Input\n required\n data-testid=\"neeto-editor-edit-link-text-input\"\n label={t(\"neetoEditor.common.text\")}\n name=\"textContent\"\n placeholder={t(\"neetoEditor.placeholders.enterText\")}\n style={{ width: \"250px\" }}\n onKeyDown={handleKeyDown}\n />\n <Input\n autoFocus\n required\n className=\"ne-link-popover__url-input\"\n data-testid=\"neeto-editor-edit-link-url-input\"\n label={t(\"neetoEditor.common.url\")}\n name=\"urlString\"\n placeholder={t(\"neetoEditor.placeholders.url\")}\n style={{ width: \"250px\" }}\n onKeyDown={handleKeyDown}\n />\n <Checkbox\n checked={values.openInNewTab}\n className=\"ne-link-popover__checkbox\"\n label={t(\"neetoEditor.common.openInNewTab\")}\n onChange={() => {\n setFieldValue(\"openInNewTab\", !values.openInNewTab);\n }}\n />\n <div className=\"ne-link-popover__edit-prompt-buttons\">\n <Button\n data-testid=\"neeto-editor-edit-link\"\n disabled={!dirty}\n label={t(\"neetoEditor.menu.link\")}\n loading={isSubmitting}\n size=\"small\"\n type=\"submit\"\n />\n <Button\n data-testid=\"neeto-editor-edit-link-cancel\"\n label={t(\"neetoEditor.common.cancel\")}\n size=\"small\"\n style=\"text\"\n onClick={() => setIsEditing(false)}\n />\n </div>\n </>\n )}\n </Form>\n );\n };\n\n const renderEditingModeForKbArticle = () => (\n <KbArticleEdit\n {...{\n getCurrentArticleOption,\n getCurrentTextContent,\n handleKbArticleSubmit,\n handleKeyDown,\n handleSelectChange,\n isLoadingKbData,\n linkAttributes,\n selectOptions,\n setIsEditing,\n }}\n />\n );\n\n const renderViewModeForKbArticle = () => {\n const articleId = linkAttributes?.[\"data-article-id\"];\n const isDeleted = deletedArticlesHook?.isArticleDeleted(articleId);\n\n return (\n <KbArticleView\n {...{ isDeleted, linkAttributes }}\n currentText={getCurrentTextContent()}\n onEdit={() => setIsEditing(true)}\n onDeletedClick={() => {\n removePopover();\n setShowDeletedModal(true);\n }}\n />\n );\n };\n\n const renderViewMode = () => (\n <>\n <a\n href={linkAttributes?.href}\n rel=\"noreferrer noopener\"\n target={linkAttributes?.target || \"_self\"}\n >\n {linkAttributes?.href}\n </a>\n {\" - \"}\n <Button\n className=\"ne-link-popover__option-button\"\n data-testid=\"neeto-editor-link-popover-edit\"\n label={t(\"neetoEditor.common.edit\")}\n size=\"small\"\n style=\"link\"\n onClick={() => setIsEditing(true)}\n />\n <span>|</span>\n <Button\n className=\"ne-link-popover__option-button\"\n data-testid=\"neeto-editor-link-popover-unlink\"\n label={t(\"neetoEditor.common.unlink\")}\n size=\"small\"\n style=\"link\"\n onClick={handleUnlink}\n />\n </>\n );\n\n const renderPopoverContent = () => {\n if (isEditing) {\n return isNeetoKbArticle\n ? renderEditingModeForKbArticle()\n : renderEditingMode();\n }\n\n return isNeetoKbArticle ? renderViewModeForKbArticle() : renderViewMode();\n };\n\n return (\n <>\n {createPortal(\n isLinkActive ? (\n <>\n <div\n className=\"ne-link-arrow fade-in\"\n style={{ top: arrowPosition.top, left: arrowPosition.left }}\n />\n <div\n className=\"ne-link-popover fade-in\"\n id=\"ne-link-view-popover\"\n ref={popoverRef}\n style={popoverStyle}\n >\n {renderPopoverContent()}\n </div>\n </>\n ) : null,\n document.body\n )}\n <KbArticleDeletedModal\n isOpen={showDeletedModal}\n onClose={() => setShowDeletedModal(false)}\n />\n </>\n );\n};\n\nexport default LinkPopOver;\n","import {\n forwardRef,\n useImperativeHandle,\n useState,\n useRef,\n memo,\n useEffect,\n} from \"react\";\n\nimport { EditorView } from \"@tiptap/pm/view\";\nimport { useEditor, EditorContent, useEditorState } from \"@tiptap/react\";\nimport classnames from \"classnames\";\nimport { EDITOR_OPTIONS, EDITOR_SIZES } from \"common/constants\";\nimport { noop, slugify } from \"neetocist\";\nimport { useFuncDebounce } from \"neetocommons/react-utils\";\nimport { Label } from \"neetoui\";\nimport { createPortal } from \"react-dom\";\n\nimport ErrorWrapper from \"components/Common/ErrorWrapper\";\nimport { useDeletedArticles } from \"hooks/reactQuery/kbArticle/useDeletedArticles\";\nimport useEditorWarnings from \"hooks/useEditorWarnings\";\nimport \"src/styles/editor/index.scss\";\nimport { removeEmptyTags } from \"src/utils\";\n\nimport { DEFAULT_EDITOR_OPTIONS } from \"./constants\";\nimport CharacterCountWrapper from \"./CustomExtensions/CharacterCount\";\nimport useCustomExtensions from \"./CustomExtensions/hooks/useCustomExtensions\";\nimport ArticleSelector from \"./CustomExtensions/LinkKbArticles/ArticleSelector\";\nimport TableActionMenu from \"./CustomExtensions/Table/TableActionMenu\";\nimport LinkPopOver from \"./LinkPopOver\";\nimport MediaUploader from \"./MediaUploader\";\nimport Menu from \"./Menu\";\nimport MenuDynamicVariables from \"./Menu/DynamicVariables\";\nimport LinkAddPopOver from \"./Menu/Fixed/components/LinkAddPopOver\";\nimport {\n getEditorStyles,\n clipboardTextParser,\n setInitialPosition,\n transformPastedHTML,\n} from \"./utils\";\n\nimport Attachments from \"../Attachments\";\n\nconst Editor = (\n {\n addonCommands = [],\n addons = [],\n attachments = [],\n attachmentsConfig = {},\n autoFocus = false,\n className,\n contentClassName,\n contentWrapperClassName,\n errorWrapperClassName,\n contentAttributes = {},\n menuClassName,\n attachmentsClassName,\n isMenuIndependent = false,\n defaults = DEFAULT_EDITOR_OPTIONS,\n editorSecrets = {},\n error = null,\n extensions = [],\n hideSlashCommands = true,\n initialValue = \"\",\n isCharacterCountActive = false,\n keyboardShortcuts = [],\n label = \"\",\n mentions = [],\n menuType = \"fixed\",\n placeholder,\n required = false,\n rows = 6,\n tooltips = {},\n variables = [],\n disableTrimOnBlur = false,\n onChange = noop,\n onFocus = noop,\n onBlur = noop,\n onSubmit = noop,\n onChangeAttachments = noop,\n children,\n openImageInNewTab = true,\n openLinkInNewTab = true,\n showAssetLibrary = true,\n collaborationProvider = null,\n enableReactNodeViewOptimization = false,\n size = EDITOR_SIZES.SMALL,\n otherAttachmentProps = {},\n ...otherProps\n },\n ref\n) => {\n const [isAttachmentsUploading, setIsAttachmentsUploading] = useState(false);\n const wrapperRef = useRef(null);\n const isArticleOptActive = addons.includes(EDITOR_OPTIONS.NEETO_KB_ARTICLE);\n const isAttachmentsActive = addons.includes(EDITOR_OPTIONS.ATTACHMENTS);\n const isMediaUploaderActive =\n addons.includes(EDITOR_OPTIONS.IMAGE_UPLOAD) ||\n addons.includes(EDITOR_OPTIONS.VIDEO_UPLOAD);\n const isFixedMenuActive = menuType === \"fixed\";\n const isBubbleMenuActive = menuType === \"bubble\";\n const isSlashCommandsActive =\n !hideSlashCommands || (isBubbleMenuActive && !hideSlashCommands);\n const isPlaceholderActive = !!placeholder || isSlashCommandsActive;\n const [isAddLinkActive, setIsAddLinkActive] = useState(false);\n const [mediaUploader, setMediaUploader] = useState({\n image: false,\n video: false,\n });\n\n const [neetoKbArticleState, setNeetoKbArticleState] = useState({\n active: false,\n editor: null,\n range: null,\n cursorPos: null,\n });\n\n const addAttachmentsRef = useRef(null);\n\n const attachmentProps = {\n handleUploadAttachments: () =>\n addAttachmentsRef.current?.handleUploadAttachments(),\n isDisabled: isAttachmentsUploading,\n };\n\n const debouncedOnChangeHandler = useFuncDebounce(\n ({ editor }) => onChange(editor.getHTML()),\n 100\n );\n\n const handleBlur = props => {\n const { editor } = props;\n if (!disableTrimOnBlur) {\n const content = editor.getHTML();\n const trimmedContent = removeEmptyTags(content);\n\n if (content !== trimmedContent) onChange(trimmedContent);\n }\n onBlur(props);\n };\n\n const customExtensions = useCustomExtensions({\n placeholder,\n extensions,\n mentions,\n variables,\n isSlashCommandsActive,\n options: [...defaults, ...addons],\n addonCommands,\n onSubmit,\n keyboardShortcuts,\n setMediaUploader,\n setIsAddLinkActive,\n attachmentProps,\n openImageInNewTab,\n openLinkInNewTab,\n enableReactNodeViewOptimization,\n collaborationProvider,\n setIsNeetoKbArticleActive: setNeetoKbArticleState,\n });\n useEditorWarnings({ initialValue });\n\n const editorClasses = classnames(\"neeto-editor\", {\n \"fixed-menu-active\": isFixedMenuActive,\n \"bubble-menu-active\": isBubbleMenuActive,\n \"placeholder-active\": isPlaceholderActive,\n \"attachments-active\": isAttachmentsActive,\n \"neeto-editor-size--large\": size === EDITOR_SIZES.LARGE,\n \"neeto-editor-size--medium\": size === EDITOR_SIZES.MEDIUM,\n \"neeto-editor-size--small\": size === EDITOR_SIZES.SMALL,\n [contentClassName]: contentClassName,\n });\n\n const ariaAttributes = {\n role: \"textbox\",\n \"aria-label\": \"editor-content\",\n \"aria-multiline\": \"true\",\n \"aria-labelledby\": \"labelId\",\n \"aria-required\": required,\n \"aria-roledescription\": \"editor\",\n };\n\n const editor = useEditor({\n extensions: customExtensions,\n content: initialValue,\n injectCSS: false,\n immediatelyRender: false,\n shouldRerenderOnTransaction: false,\n autofocus: autoFocus && \"end\",\n editorProps: {\n attributes: {\n class: editorClasses,\n style: getEditorStyles({ rows }),\n \"data-testid\": \"neeto-editor-content\",\n ...ariaAttributes,\n ...contentAttributes,\n },\n clipboardTextParser,\n transformPastedHTML,\n },\n parseOptions: { preserveWhitespace: true },\n onCreate: ({ editor }) => !autoFocus && setInitialPosition(editor),\n onUpdate: debouncedOnChangeHandler,\n onFocus,\n onBlur: handleBlur,\n });\n\n useEditorState({\n editor,\n selector: () => ({\n isMediaUploaderActive,\n isLinkActive: editor?.isActive(\"link\"),\n }),\n });\n\n const deletedArticlesHook = useDeletedArticles(\n isArticleOptActive ? editor : null\n );\n\n /* Make editor object available to the parent */\n useImperativeHandle(\n ref,\n () => ({ editor, focus: () => editor?.commands?.focus?.() }),\n [editor]\n );\n\n // Cleanup NeetoKB article state when editor changes\n useEffect(() => {\n if (!editor && neetoKbArticleState.active) {\n setNeetoKbArticleState({\n active: false,\n editor: null,\n range: null,\n cursorPos: null,\n });\n }\n }, [editor, neetoKbArticleState.active]);\n\n useEffect(() => {\n if (!editor || !deletedArticlesHook.deletedArticleIds.size) return;\n\n editor.commands.updateDeletedArticles(\n deletedArticlesHook.deletedArticleIds\n );\n }, [editor, deletedArticlesHook.deletedArticleIds]);\n\n // https://github.com/ueberdosis/tiptap/issues/1451#issuecomment-953348865\n EditorView.prototype.updateState = function updateState(state) {\n if (!this.docView) return;\n this.updateStateInner(state, this.state.plugins !== state.plugins);\n };\n\n return (\n <div\n data-testid=\"neeto-editor-wrapper\"\n ref={wrapperRef}\n className={classnames({\n [className]: className,\n \"ne-attachments__wrapper\": isAttachmentsActive,\n })}\n >\n {label && (\n <Label\n {...{ required }}\n className=\"neeto-ui-mb-2\"\n data-testid={`${slugify(label)}-editor-label`}\n >\n {label}\n </Label>\n )}\n <ErrorWrapper {...{ error }} className={errorWrapperClassName}>\n <>\n {menuType !== \"none\" && (\n <Menu\n {...{\n addonCommands,\n addons,\n attachmentProps,\n defaults,\n editor,\n editorSecrets,\n mentions,\n menuType,\n neetoKbArticleState,\n openLinkInNewTab,\n showAssetLibrary,\n tooltips,\n variables,\n }}\n className={menuClassName}\n isIndependant={isMenuIndependent}\n setIsNeetoKbArticleActive={setNeetoKbArticleState}\n />\n )}\n {children}\n {menuType === \"none\" && (\n <div className=\"neeto-editor-fixed-menu-standalone-variables-wrapper\">\n <MenuDynamicVariables {...{ editor, variables }} standalone />\n </div>\n )}\n <EditorContent\n className={contentWrapperClassName}\n {...{ editor, ...otherProps }}\n />\n {isMediaUploaderActive && (\n <MediaUploader\n {...{ editor, mediaUploader, showAssetLibrary }}\n onClose={() => setMediaUploader({ image: false, video: false })}\n />\n )}\n {isAttachmentsActive && (\n <Attachments\n {...{ attachments }}\n config={attachmentsConfig}\n dragDropRef={wrapperRef}\n isIndependent={false}\n ref={addAttachmentsRef}\n setIsUploading={setIsAttachmentsUploading}\n className={classnames(\"ne-attachments--integrated\", {\n [attachmentsClassName]: attachmentsClassName,\n })}\n onChange={onChangeAttachments}\n {...otherAttachmentProps}\n />\n )}\n {editor?.isActive(\"link\") && (\n <LinkPopOver {...{ deletedArticlesHook, editor }} />\n )}\n {isAddLinkActive && (\n <LinkAddPopOver\n {...{\n editor,\n isAddLinkActive,\n openLinkInNewTab,\n setIsAddLinkActive,\n }}\n />\n )}\n {neetoKbArticleState.active &&\n neetoKbArticleState.cursorPos &&\n createPortal(\n <ArticleSelector\n {...{ deletedArticlesHook }}\n cursorPos={neetoKbArticleState.cursorPos}\n editor={neetoKbArticleState.editor}\n onClose={() =>\n setNeetoKbArticleState({\n active: false,\n editor: null,\n range: null,\n cursorPos: null,\n })\n }\n />,\n document.body\n )}\n <TableActionMenu {...{ editor }} appendTo={wrapperRef} />\n {isCharacterCountActive && <CharacterCountWrapper {...{ editor }} />}\n </>\n </ErrorWrapper>\n </div>\n );\n};\n\nEditor.displayName = \"NeetoEditor\";\n\nexport default memo(forwardRef(Editor));\n"],"names":["ErrorWrapper","_ref","error","children","className","isError","isNotPresent","wrapperClasses","classnames","_defineProperty","getErrorMessage","message","is","String","Array","Object","_jsxs","_Fragment","_jsx","memo","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","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","console","warn","CharacterCountWrapper","storage","characterCount","characters","inputRegex","pasteRegex","create","math.floor","map.create","string.fromCamelCase","conditions.undefinedToNull","storage.varStorage","f.isOneOf","set.create","random.oneOf","eventloop.timeout","environment.isBrowser","dom.doc","PModel.Slice","PModel.Fragment","error.unexpectedCase","error.methodUnimplemented","object.keys","math.min","map.setIfUndefined","math.max","undo","redo","Item","Text","TextStyle","ListItem","starInputRegex","starPasteRegex","underscoreInputRegex","underscorePasteRegex","BulletList","CodeBlock","handleKeyDown","arrow","Fragment","Mapping","Italic","OrderedList","Extension","addOptions","types","addGlobalAttributes","options","attributes","backgroundColor","parseHTML","element","style","replace","renderHTML","addCommands","setHighlightInternal","color","chain","setMark","run","unsetHighlightInternal","_ref2","Node2","mergeAttributes2","getNodeType2","isNodeActive2","Node3","mergeAttributes3","wrappingInputRule2","TaskItem","Node4","mergeAttributes4","wrappingInputRule3","TaskList","Node5","mergeAttributes5","Extension2","configure","HTMLAttributes","itemTypeName","CalloutComponent","_findBy","Icon","findBy","CALLOUT_TYPES","icon","Megaphone","NodeViewWrapper","NodeViewContent","Node","inline","group","content","defining","draggable","addAttributes","getAttribute","tag","contentElement","svgString","ReactDOM","renderToStaticMarkup","svgContainer","document","createElement","innerHTML","svgNode","firstChild","mergeAttributes","addNodeView","ReactNodeViewRenderer","_this","setCallout","_attributes$type","toggleWrap","command","_ref3","tr","dispatch","selection","$from","calloutNode","depth","pos","after","nextNode","nodeAt","insert","schema","nodes","paragraph","focus","addKeyboardShortcuts","_this2","Backspace","_this2$editor","commands","_state$selection","empty","parentOffset","currentNode","parent","size","lift","ArrowDown","_this2$editor2","_state$selection2","isAtEnd","calloutContent","currentNodeIndex","index","isLastNode","childCount","endPos","nodeSize","setTextSelection","insertContentAt","escape","SORTED_LANGUAGE_LIST","lowlight","listLanguages","sort","LINE_NUMBER_OPTIONS","t","codeBlockHighlightKey","PluginKey","createLineDecoration","from","lineNumber","Decoration","widget","view","line","setAttribute","toString","lineElement","domAtPos","Element","lineHeight","window","getComputedStyle","height","getLineRanges","lines","textContent","split","currentPos","to","codeBlockHighlightPlugin","Plugin","key","init","DecorationSet","set","mapping","getMeta","decorations","highlightedLines","lineRanges","props","getState","Menu","Dropdown","MenuItem","CodeBlockComponent","_node$attrs","_node$content","updateAttributes","keyword","setKeyword","_useState3","_useState4","showHighlightButton","setShowHighlightButton","_useState5","linenumbers","_useState6","showLineNumbers","setShowLineNumbers","ref","useRef","_useTranslation","useTranslation","filteredAndSortedLanguageList","language","handleLanguageSelect","_editor$commands","handleContentMount","current","offsetHeight","minHeight","handleSelectionChange","useCallback","_editor$state$selecti","isCodeBlockSelected","isActive","on","off","setMeta","handleHighlight","_editor$state$selecti2","resolve","codeBlock","codeBlockStart","start","textBeforeSelection","textBetween","startLine","selectedText","selectedLines","newSelectedLines","_","currentHighlightedLines","overlapLines","intersection","difference","union","contentEditable","appendTo","body","buttonSize","buttonStyle","Down","strategy","zIndex","Button","onClick","Input","autoFocus","placeholder","onChange","e","target","preventDefault","stopPropagation","CopyToClipboardButton","text","Highlight","tooltipProps","as","CodeBlockLowlight","extend","_this$parent","call","_element$dataset$high","dataset","Number","Boolean","_attributes$highlight","_attributes$highlight2","join","addProseMirrorPlugins","_this$parent2","defaultLanguage","pasteUnformatted","navigator","clipboard","readText","insertContent","_x","DeletedArticleDecoration","articleId","decoration","updateDeletedArticles","updateState","EmojiPickerPluginKey","EmojiPicker","selectable","atom","suggestion","startOfLine","pluginKey","items","render","reactRenderer","popup","onStart","ReactRenderer","EmojiPickerMenu","tippy","theme","getReferenceClientRect","clientRect","showOnCreate","interactive","trigger","placement","onKeyDown","_reactRenderer$ref","onExit","destroy","Suggestion","DEFAULT_EMOJI_PRIORITIES_LIST","EMOJI_QUERY_REGEX","filterEmojiSuggestions","suggestions","frequentlyUsedEmojis","mergedEmojiList","emoji","a","b","aIndex","indexOf","bIndex","slice","EmojiSuggestionMenu","_React$Component","_classCallCheck","_len","args","_key","_callSuper","selectedIndex","emojiSuggestions","_yield$emojiPickerApi","setState","emojiPickerApi","fetch","t0","_callee2","_callee2$","_context2","query","SearchIndex","search","_callee3","_callee3$","_context3","searchEmoji","_callee4","_callee4$","_context4","deleteRange","range","setEmoji","_ref5","event","_ref6","_ref7","selectItem","_inherits","_createClass","componentDidMount","keys","JSON","parse","localStorage","getItem","fetchEmojiData","previewPosition","searchEmojiAndSetState","componentDidUpdate","oldProps","Spinner","isNotEmpty","skins","React","Component","EmojiSuggestionPluginKey","EmojiSuggestion","renderEmoji","renderText","_ref4","_emoji$skins$","suggestionConfig","input","lastKeyCode","onUpdate","_popup$","isArrowNavigation","test","updateProps","isNil","setProps","_reactRenderer","_popup$2","_reactRenderer2","imageSkeletonContainer","classList","add","imageSkeleton","appendChild","LARGE_IMAGE_ERROR","__extends","this","__assign","ImagePreviewModal","previewUrl","setPreviewUrl","setIsLoading","handleImageLoad","handleClose","Modal","closeButton","isOpen","isPresent","onClose","Close","alt","src","classNames","onLoad","DropdownMenu","align","border","deleteNode","showAspectRatio","menuOptions","buildImageOptions","handleClick","alignPos","borderToggle","buttonProps","MenuHorizontal","position","optionName","delay","customTarget","Tooltip","AspectRatio","ratio","aspectRatio","ImageComponent","_figureRef$current","getPos","figheight","figwidth","captionWidth","setCaptionWidth","figureRef","width","caption","editorElement","closest","maxImageWidth","offsetWidth","handleResizeStop","_event","_direction","setNodeMarkup","mergeRight","Resizable","lockAspectRatio","minWidth","onResizeStop","onResize","upload","file","url","uploader","endUserUploadedFileSizeLimitInMb","DirectUpload","blob_url","Error","_x2","findNextTextPos","foundPos","nodesBetween","nodePos","isTextblock","openImageInNewTab","isolating","_element$querySelecto","querySelector","_element$querySelecto2","_element$querySelecto3","_element$querySelecto4","_element$querySelecto5","_element$querySelecto6","wrapperDivAttrs","wrapperLinkPointerEventsStyle","heightStyle","wrapperLinkAttrs","href","rel","captionAttrs","contenteditable","setFigure","_objectWithoutProperties","_excluded","Enter","head","$head","tail","nextTextPos","handleDOMEvents","paste","_event$clipboardData","_event$clipboardData2","_view$state","$anchor","clipboardData","getData","hasFiles","files","_DOMParser$parseFromS","plainText","DOMParser","parseFromString","pasteText","images","image","emptyImageNode","imageNode","_view$state2","_tr","_doc","_tr2","Math","random","substring","DIRECT_UPLOAD_ENDPOINT","replaceWith","Toastr","limit","_x3","addInputRules","addPasteRules","KeyboardShortcuts","onSubmit","shortcuts","isBlockQuoteActive","ModEnter","getHTML","ModShiftB","toggleBlockquote","Link","LINK_MARKDOWN_INPUT_REGEX","linkInputRule","config","defaultMarkInputRule","markInputRule","InputRule","find","handler","RangeError","inclusive","getAttributes","match","_match$pop","_match$pop2","pop","trim","Mention","scrollHandler","wrapperRef","parentItem","selectedItem","itemHeight","clientHeight","MARGIN_HEIGHT","scrollPosition","scrollTop","offsetTop","MentionList","_this$props","item","prevState","nextSelectedIndex","keyDownHandlers","ArrowUp","upHandler","downHandler","enterHandler","Tab","tabHandler","prototype","hasOwnProperty","mentionRef","createRef","prevProps","imageUrl","active","Avatar","user","Typography","createMentionSuggestions","mentions","_ref$query","mention","toLowerCase","hide","_popup","Mentions","setMention","_ref3$suggestion","otherConfig","Placeholder","excludeNodeTypes","emptyEditorClass","emptyNodeClass","slashCommandsPlaceholder","showOnlyWhenEditable","showOnlyCurrent","includeChildren","isEditable","anchor","hasAnchor","isLeaf","isExcluded","classes","placeholderText","isSlashCommandsActive","Document","selectedTextDecoration","oldState","remove","calculateScore","inputLower","targetLower","substringIndex","inputIndex","targetIndex","firstMatchIndex","consecutiveMatches","maxConsecutive","max","positionScore","consecutiveBonus","lengthRatio","score","min","fuzzySearch","FUZZY_SEARCH_DEFAULT_LIMIT","_options$limit","_options$keys","DEFAULT_SEARCH_KEYS","trimmedQuery","fieldAccessors","getValue","prop","weight","results","reduce","acc","bestScore","maxScore","accessor","fieldValue","fieldString","weightedScore","abs","aTitle","bTitle","localeCompare","listeners","ArrowLeft","leftArrowHandler","ArrowRight","rightArrowHandler","hasCommand","_this$props2","menuIndex","setActiveMenuIndex","_this$props3","hasSubItems","menuRef","_this$props4","activeMenuIndex","isCurrentMenuActive","addEventListener","keydownHandler","componentWillUnmount","removeEventListener","_this$props5","_this$props6","isLeafNode","nodeElement","_createElement","onHover","Tippy","visible","onCreate","popper","onHide","isSubmenuOpened","onShow","forwardRef","onMouseEnter","CommandsList","MENU_ITEMS","EDITOR_OPTIONS","PARAGRAPH","description","TextP","setNode","BOLD","TextBold","toggleBold","ITALIC","TextItalic","toggleItalic","UNDERLINE","Underline","toggleUnderline","H1","TextH1","level","H2","TextH2","H3","TextH3","H4","TextH4","_ref8","H5","TextH5","_ref9","LIST_ORDERED","ListNumber","_ref0","toggleOrderedList","LIST_BULLETS","ListDot","_ref1","toggleBulletList","LINK","noop","NEETO_KB_ARTICLE","File","ATTACHMENTS","Attachment","TODO_LIST","Checkbox","_ref10","toggleTaskList","IMAGE_UPLOAD","ImageUpload","VIDEO_UPLOAD","Video","BLOCKQUOTE","Blockquote","_ref11","CODE_BLOCK","_ref12","toggleCodeBlock","EMOJI","Smiley","_ref13","DIVIDER","Minus","_ref14","setHorizontalRule","PASTE_UNFORMATTED","Notes","_ref15","TABLE","Column","_ref16","insertTable","rows","cols","withHeaderRow","CALLOUT","MessageSquare","_ref17","_ref18","_ref19","_ref20","_ref21","_ref22","NO_RESULT_MENU_ITEM","_ref23","imageCommand","setMediaUploader","assoc","videoCommand","linkCommand","setIsAddLinkActive","attachmentCommand","attachmentProps","handleUploadAttachments","neetoKbArticleCommand","setIsNeetoKbArticleActive","cursorPos","coordsAtPos","buildCommandItems","addonCommands","commandItems","permittedCommandItems","adddonCommandItems","CommandsPluginKey","filteredItems","role","highlightFocussedNode","resetFocussedNode","SpecialMentionPluginKey","renderLabel","_node$attrs$label","SpecialMentions","Mark","NodeSelection2","PluginKey2","Slice2","Fragment2","Selection2","Slice3","Fragment3","TextSelection2","TableView","PluginKey3","DecorationSet2","Decoration2","Fragment4","TextSelection3","Plugin2","updateColumns","Table","colgroup","table","cellMinWidth","totalWidth","fixedWidth","nextDOM","row","i","col","_row$child$attrs","child","colspan","colwidth","j","hasWidth","cssWidth","nextSibling","parentNode","removeChild","_ref$className","_ref$handleClick","controller","onclick","querySelectorAll","_tr$firstChild","nodeName","th","td","dom","alignmentSuffix","textAlign","alignmentClass","wrapper","buildController","insertColumn","insertRow","contentDOM","update","_node$attrs2","currentAlignmentClass","ignoreMutation","mutation","contains","TiptapTable","resizable","handleWidth","View","lastColumnResizable","allowTableNodeSelection","getAlignmentFromElement","dataAlign","priority","getAttrs","alignment","parentElement","parentAlignment","_this$options$cellMin","_this$options","colgroups","firstRow","cell","_cell$attrs","span","tableStyle","ModAltT","TodoListExtension","ModShift9","TodoItemExtension","splitListItem","sinkListItem","ShiftTab","liftListItem","nested","MAX_VARIABLE_NAME_DISPLAY_LENGTH","VariableComponent","_variableName$substr","extension","variableName","shouldTruncate","charOpen","disabled","substr","charClose","Variable","setVariable","VideoComponent","vidheight","vidwidth","maxVideoWidth","handleResize","controls","preload","EmbedComponent","allowFullScreen","getSharedAttributes","iframe","video","videoType","getUploadAttributes","getEmbedAttributes","DEFAULT_ASPECT_RATIO","frameBorder","allow","allowfullscreen","renderEmbedHTML","renderUploadHTML","handleVideoPaste","setSelection","TextSelection","validatedUrl","validateUrl","UnifiedVideoExtension","figure","videoEl","iframeEl","fontWeight","setVideo","_excluded2","end","setExternalVideo","PasteRule","COMBINED_REGEX","useCustomExtensions","extensions","variables","keyboardShortcuts","openLinkInNewTab","enableReactNodeViewOptimization","collaborationProvider","customExtensions","CharacterCount","Code","CustomCommands","FigCaption","HighlightInternal","SelectionDecoration","Focus","mode","ImageExtension","StarterKit","code","bulletList","listItem","blockquote","orderedList","italic","history","heading","levels","buildLevelsFromOptions","TableRow","TableHeader","TableCell","TEXT_COLOR","HIGHLIGHT","Color","Callout","SlashCommands","_collaborationProvide","Collaboration","CollaborationCursor","provider","ArticlesList","withT","_ref$articles","onSelectArticle","_ref$highlightedIndex","highlightedIndex","containerRef","NeetoUITypography","useArticleNavigation","articlesContainerRef","handleModalArticleSelect","setHighlightedIndex","container","highlightedItem","containerRect","getBoundingClientRect","itemRect","isItemAbove","top","isItemBelow","bottom","navigationHandlers","down","up","keyActions","Escape","shiftKey","handleKeyboardNavigation","action","ArticlePicker","_ref$mode","externalIsLoading","externalOptions","onArticleSelect","setSearchTerm","modalRef","isLoadingArticles","selectOptions","articleWithUrl","full_url","_useArticleNavigation","handleSelectChange","selectedValue","formikHelpers","_selectedOption$data","selectedOption","modal","modalRect","modalWidth","modalHeight","maxLeft","innerWidth","maxTop","innerHeight","adjustedLeft","left","adjustedTop","assign","transform","handleClickOutside","Search","onSearch","NeetoUISpinner","Select","isSearchable","ArticleSelector","deletedArticlesHook","handleArticleSelect","detailedArticle","linkText","isDeleted","linkMark","link","linkTextWithMark","shouldShowMergeCellToggler","CellSelection","_node$type","nodeRoleInTable","spec","tableRole","rowspan","setTableAlignment","tableNode","tablePos","_tableNode","currentAttrs","newAttrs","tableActions","_editor$state","tooltipLabel","addRowAfter","InsertRow","addColumnAfter","InsertColumn","deleteRow","DeleteRow","isVisible","deleteColumn","DeleteColumn","mergeOrSplit","MergeSplit","isHidden","toggleHeaderRow","ToggleHeaderRow","deleteTable","DeleteTable","alignmentIcons","LeftAlign","center","CenterAlign","right","RightAlign","TableActionMenu","_editor$view$domAtPos","DOMRect","nodeType","shouldShow","isFocused","BubbleMenu","tippyOptions","offset","popperOptions","modifiers","plugins","sticky","_action$items","closeOnSelect","iconPosition","iconSize","IconComponent","KbArticleDeletedModal","Header","Body","Footer","KbArticleEdit","linkAttributes","getCurrentTextContent","getCurrentArticleOption","handleKbArticleSubmit","isLoadingKbData","setIsEditing","initialValues","pageSelection","Form","formikProps","enableReinitialize","dirty","isSubmitting","setFieldValue","values","required","unlimitedChars","loading","KbArticleView","onEdit","onDeletedClick","currentText","Articles","Edit","LinkPopOver","initialTextContent","arrowPosition","setArrowPosition","popoverPosition","setPopoverPosition","isEditing","_useState7","_useState8","isLinkActive","setIsLinkActive","_useState9","_useState0","setLinkAttributes","_useState1","_useState10","showDeletedModal","setShowDeletedModal","popoverRef","isNeetoKbArticle","updatePopoverPosition","_getLinkPopoverPositi","getLinkPopoverPosition","parseInt","handleUnlink","extendMarkRange","unsetLink","removePopover","popoverStyle","display","handleSubmit","urlString","openInNewTab","formattedUrl","validateAndFormatUrl","equals","setLink","_editor$view","getMarkType","$to","getMarkRange","_ref5$from","_ref5$to","_editor$view2","_ref7$from","_ref7$to","_editor$view3","_ref8$from","_ref8$to","useOnClickOutside","currentLinkAttributes","currentArticleOption","_ref9$from","_ref9$to","renderEditingMode","validationSchema","LINK_VALIDATION_SCHEMA","checked","renderEditingModeForKbArticle","renderViewModeForKbArticle","renderViewMode","renderPopoverContent","createPortal","Editor","_ref$addonCommands","_ref$addons","addons","_ref$attachments","attachments","_ref$attachmentsConfi","attachmentsConfig","_ref$autoFocus","contentClassName","contentWrapperClassName","errorWrapperClassName","_ref$contentAttribute","contentAttributes","menuClassName","attachmentsClassName","_ref$isMenuIndependen","isMenuIndependent","_ref$defaults","defaults","DEFAULT_EDITOR_OPTIONS","_ref$editorSecrets","editorSecrets","_ref$error","_ref$extensions","_ref$hideSlashCommand","hideSlashCommands","_ref$initialValue","_ref$isCharacterCount","isCharacterCountActive","_ref$keyboardShortcut","_ref$label","_ref$mentions","_ref$menuType","menuType","_ref$required","_ref$rows","_ref$tooltips","tooltips","_ref$variables","_ref$disableTrimOnBlu","disableTrimOnBlur","_ref$onChange","_ref$onFocus","onFocus","_ref$onBlur","onBlur","_ref$onSubmit","_ref$onChangeAttachme","onChangeAttachments","_ref$openImageInNewTa","_ref$openLinkInNewTab","_ref$showAssetLibrary","showAssetLibrary","_ref$collaborationPro","_ref$enableReactNodeV","_ref$size","EDITOR_SIZES","SMALL","_ref$otherAttachmentP","otherAttachmentProps","otherProps","isAttachmentsUploading","setIsAttachmentsUploading","isArticleOptActive","isAttachmentsActive","isMediaUploaderActive","isFixedMenuActive","isBubbleMenuActive","isPlaceholderActive","isAddLinkActive","mediaUploader","neetoKbArticleState","setNeetoKbArticleState","addAttachmentsRef","_addAttachmentsRef$cu","isDisabled","debouncedOnChangeHandler","useFuncDebounce","handleBlur","trimmedContent","removeEmptyTags","editorClasses","LARGE","MEDIUM","ariaAttributes","useEditor","injectCSS","immediatelyRender","shouldRerenderOnTransaction","autofocus","editorProps","getEditorStyles","clipboardTextParser","transformPastedHTML","parseOptions","preserveWhitespace","setInitialPosition","useEditorState","selector","useImperativeHandle","_editor$commands$focu","EditorView","docView","updateStateInner","Label","slugify","isIndependant","MenuDynamicVariables","standalone","EditorContent","MediaUploader","Attachments","dragDropRef","isIndependent","setIsUploading","LinkAddPopOver","displayName"],"mappings":"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","x_google_ignoreList":[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,65,69,76,83,84,92,93,96,111,112,113,116,117]}