{"version":3,"mappings":"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","names":["encodeAttachmentFilename","filename","c","apiVersion","TextEditorEmbed","#vm","#data","vm","data","#registerDebug","#getEditorComponent","component","onCreateCallback","content","onLoadedCallback","onUpdateCallback","onSearchCallback","subscribe","onTocToggleCallback","onTocPinCallback","onAttachmentsUpdatedCallback","el","element","query","matchAll","editor","value","emit","pageId","oldName","newName","oldSrc","newSrc","view","state","doc","schema","tr","modified","node","pos","name","src","yjsData","fileId","useSession","filePath","shareToken","readOnly","autofocus","readonlyBar","menubarLinkCustomAction","noLazyImages","onCreate","markdown","onLoaded","onUpdate","onTocToggle","visible","onOutlineToggle","onTocPin","keep","onFileInsert","onMentionSearch","onMentionInsert","openLinkHandler","onSearch","onAttachmentsUpdated","attachmentSrcs","MarkdownContentEditor","defineAsyncComponent","__vitePreload","Editor","n","Vue","sessionEditor","ACTION_ATTACHMENT_PROMPT","EDITOR_UPLOAD","HOOK_MENTION_SEARCH","HOOK_MENTION_INSERT","OPEN_LINK_HANDLER","openLink","ATTACHMENT_RESOLVER","preferRaw","HOOK_MENUBAR_LINK_CUSTOM_ACTION","h","scopedSlots","PlainTableContentEditor"],"ignoreList":[],"sources":["../src/helpers/attachmentFilename.ts","../src/editor.js"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Encode filename the same way as at `insertAttachment` in MediaHandler.vue\n *\n * @param filename - The filename to encode\n */\nexport function encodeAttachmentFilename(filename: string) {\n\treturn encodeURIComponent(filename).replace(/[!'()*]/g, (c) => {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase()\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { emit, subscribe } from '@nextcloud/event-bus'\nimport Vue, { defineAsyncComponent } from 'vue'\nimport {\n\tATTACHMENT_RESOLVER,\n\tEDITOR_UPLOAD,\n\tHOOK_MENTION_INSERT,\n\tHOOK_MENTION_SEARCH,\n\tHOOK_MENUBAR_LINK_CUSTOM_ACTION,\n} from './components/Editor.provider.ts'\nimport { ACTION_ATTACHMENT_PROMPT } from './components/Editor/MediaHandler.provider.js'\nimport { OPEN_LINK_HANDLER } from './composables/useOpenLinkHandler.ts'\nimport { encodeAttachmentFilename } from './helpers/attachmentFilename.ts'\nimport { openLink } from './helpers/links.js'\n// eslint-disable-next-line import/no-unresolved, n/no-missing-import\nimport 'vite/modulepreload-polyfill'\n\nconst apiVersion = '1.4'\n\nwindow.OCA.Text = {\n\t...window.OCA.Text,\n}\n\nclass TextEditorEmbed {\n\t#vm\n\t#data\n\tconstructor(vm, data) {\n\t\tthis.#vm = vm\n\t\tthis.#data = data\n\t\tthis.#registerDebug()\n\t\treturn this\n\t}\n\n\t#getEditorComponent() {\n\t\tlet component = this.#vm.$children[0]\n\t\t// For session editors, there's an extra wrapper component before Editor.vue\n\t\tif (component && !('editor' in component)) {\n\t\t\tcomponent = component.$children[0]\n\t\t}\n\t\treturn component\n\t}\n\n\tonCreate(onCreateCallback = () => {}) {\n\t\tthis.#vm.$on('create:content', (content) => {\n\t\t\tonCreateCallback(content)\n\t\t})\n\t\treturn this\n\t}\n\n\tonLoaded(onLoadedCallback = () => {}) {\n\t\tthis.#vm.$on('ready', () => {\n\t\t\tonLoadedCallback()\n\t\t})\n\t\treturn this\n\t}\n\n\tonUpdate(onUpdateCallback = () => {}) {\n\t\tthis.#vm.$on('update:content', (content) => {\n\t\t\tonUpdateCallback(content)\n\t\t})\n\t\treturn this\n\t}\n\n\tonSearch(onSearchCallback = () => {}) {\n\t\tsubscribe('text:editor:search-results', onSearchCallback)\n\t\treturn this\n\t}\n\n\tonTocToggle(onTocToggleCallback = () => {}) {\n\t\tsubscribe('text:toc:toggled', onTocToggleCallback)\n\t\treturn this\n\t}\n\n\tonTocPin(onTocPinCallback = () => {}) {\n\t\tsubscribe('text:toc:pin', onTocPinCallback)\n\t\treturn this\n\t}\n\n\tonAttachmentsUpdated(onAttachmentsUpdatedCallback = () => {}) {\n\t\tsubscribe('text:editor:attachments:updated', onAttachmentsUpdatedCallback)\n\t\treturn this\n\t}\n\n\trender(el) {\n\t\tel.innerHTML = ''\n\t\tconst element = document.createElement('div')\n\t\tel.appendChild(element)\n\t\tthis.#vm.$mount(element)\n\t\treturn this\n\t}\n\n\tdestroy() {\n\t\tthis.#vm.$destroy()\n\t\tthis.#vm.$el.innerHTML = ''\n\t}\n\n\tsetContent(content) {\n\t\t// Update reactive prop for MarkdownContentEditor\n\t\tthis.#vm.$set(this.#data, 'content', content)\n\t\t// Call setContent for file based Editor\n\t\tthis.#getEditorComponent()?.setContent?.(content)\n\t\treturn this\n\t}\n\n\tgetHTML() {\n\t\tconst editor = this.#getEditorComponent()?.editor\n\t\treturn editor?.getHTML()\n\t}\n\n\tsetSearchQuery(query, matchAll) {\n\t\tconst editor = this.#getEditorComponent()?.editor\n\t\tif (typeof editor?.commands.setSearchQuery === 'function') {\n\t\t\teditor?.commands.setSearchQuery(query, matchAll)\n\t\t}\n\t}\n\n\tsearchNext() {\n\t\tconst editor = this.#getEditorComponent()?.editor\n\t\tif (typeof editor?.commands.nextMatch === 'function') {\n\t\t\teditor?.commands.nextMatch()\n\t\t}\n\t}\n\n\tsearchPrevious() {\n\t\tconst editor = this.#getEditorComponent()?.editor\n\t\tif (typeof editor?.commands.previousMatch === 'function') {\n\t\t\teditor?.commands.previousMatch()\n\t\t}\n\t}\n\n\tasync save() {\n\t\treturn this.#getEditorComponent().save?.()\n\t}\n\n\tsetShowOutline(value) {\n\t\temit('text:toc:toggle', { visible: value })\n\t\treturn this\n\t}\n\n\tsetReadOnly(value) {\n\t\tthis.#vm.$set(this.#data, 'readOnly', value)\n\t\treturn this\n\t}\n\n\tupdateReadonlyBarProps(value) {\n\t\tthis.#vm.$set(this.#data, 'readonlyBarProps', value)\n\t\treturn this\n\t}\n\n\tinsertAtCursor(content) {\n\t\tthis.#getEditorComponent()\n\t\t\t.editor?.chain()\n\t\t\t.insertContent(content)\n\t\t\t.focus()\n\t\t\t.run()\n\t}\n\n\treplaceAttachmentFilename(pageId, oldName, newName) {\n\t\tconst oldSrc =\n\t\t\t'.attachments.' + pageId + '/' + encodeAttachmentFilename(oldName)\n\t\tconst newSrc =\n\t\t\t'.attachments.' + pageId + '/' + encodeAttachmentFilename(newName)\n\t\tconst { view, state } = this.#getEditorComponent().editor\n\t\tconst { doc, schema, tr } = state\n\t\tlet modified = false\n\n\t\tdoc.descendants((node, pos) => {\n\t\t\tif (!node.type === schema.nodes.image || node.attrs.src !== oldSrc) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttr.setNodeMarkup(pos, undefined, {\n\t\t\t\t...node.attrs,\n\t\t\t\tsrc: newSrc,\n\t\t\t\talt: node.attrs.alt.replace(oldName, newName),\n\t\t\t})\n\t\t\tmodified = true\n\t\t})\n\n\t\tif (modified) {\n\t\t\tview.dispatch(tr)\n\t\t\tthis.save()\n\t\t}\n\t}\n\n\tremoveAttachmentReferences(pageId, name) {\n\t\tconst src = '.attachments.' + pageId + '/' + encodeAttachmentFilename(name)\n\t\tconst { view, state } = this.#getEditorComponent().editor\n\t\tconst { doc, schema, tr } = state\n\t\tlet modified = false\n\n\t\tdoc.descendants((node, pos) => {\n\t\t\tif (!node.type === schema.nodes.image || node.attrs.src !== src) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttr.delete(pos, pos + node.nodeSize)\n\t\t\tmodified = true\n\t\t})\n\n\t\tif (modified) {\n\t\t\tview.dispatch(tr)\n\t\t\tthis.save()\n\t\t}\n\t}\n\n\tfocus() {\n\t\tthis.#getEditorComponent().editor?.commands.focus()\n\t}\n\n\tdebugYjs() {\n\t\tconst yjsData = this.#getEditorComponent().debugYjsData()\n\n\t\tconst intro =\n\t\t\t'Editor Yjs debug data. Copy the object below that starts with \"clientId\".'\n\t\tconst introChrome = '- In Chrome, select \"Copy\" at the end of the line.'\n\t\tconst introFirefox =\n\t\t\t'- In Firefox, right-click on the object and select \"Copy object\".'\n\t\tconst styleBold = 'font-weight: bold;'\n\t\tconst styleItalic = 'font-weight: normal; font-style: italic;'\n\t\tconsole.warn(JSON.stringify(yjsData, null, ' '))\n\t\tconsole.warn(\n\t\t\t'%c%s\\n%c%s\\n%s',\n\t\t\tstyleBold,\n\t\t\tintro,\n\t\t\tstyleItalic,\n\t\t\tintroChrome,\n\t\t\tintroFirefox,\n\t\t)\n\t}\n\n\t#registerDebug() {\n\t\tif (window?._oc_debug) {\n\t\t\tthis.vm = this.#vm\n\t\t\twindow.OCA.Text._debug = [...(window.OCA.Text._debug ?? []), this]\n\t\t}\n\t}\n}\n\nwindow.OCA.Text.apiVersion = apiVersion\nwindow.OCA.Text.createEditor = async function ({\n\t// Element to render the editor to\n\tel,\n\n\t// Session editor with file mode is enabled by setting the fileId and useSession.\n\t// Otherwise, content needs to be provided.\n\tfileId = undefined,\n\tuseSession = true,\n\tfilePath = undefined,\n\tshareToken = null,\n\n\tcontent = '',\n\n\treadOnly = false,\n\tautofocus = true,\n\treadonlyBar = {\n\t\tcomponent: null,\n\t\tprops: null,\n\t},\n\tmenubarLinkCustomAction = undefined,\n\tnoLazyImages = false,\n\n\tonCreate = ({ markdown }) => {},\n\tonLoaded = () => {},\n\tonUpdate = ({ markdown }) => {},\n\tonTocToggle = (visible) => {},\n\tonOutlineToggle = (visible) => {}, // deprecated, use `onTocToggle`\n\tonTocPin = (fileId, keep) => {},\n\tonFileInsert = undefined,\n\tonMentionSearch = undefined, // (query) => Promise<{ [id]: label }>\n\tonMentionInsert = undefined,\n\topenLinkHandler = undefined,\n\tonSearch = undefined,\n\tonAttachmentsUpdated = ({ attachmentSrcs }) => {},\n}) {\n\tconst MarkdownContentEditor = defineAsyncComponent(\n\t\t() => import('./components/Editor/MarkdownContentEditor.vue'),\n\t)\n\tconst Editor = defineAsyncComponent(() => import('./components/Editor.js'))\n\n\tconst data = Vue.observable({\n\t\treadonlyBarProps: readonlyBar.props,\n\t\treadOnly,\n\t\tcontent,\n\t})\n\n\tconst sessionEditor = fileId && useSession\n\n\tconst vm = new Vue({\n\t\tprovide() {\n\t\t\treturn {\n\t\t\t\t[ACTION_ATTACHMENT_PROMPT]: onFileInsert,\n\t\t\t\t[EDITOR_UPLOAD]: !!sessionEditor,\n\t\t\t\t[HOOK_MENTION_SEARCH]: onMentionSearch,\n\t\t\t\t[HOOK_MENTION_INSERT]: onMentionInsert,\n\t\t\t\t[OPEN_LINK_HANDLER]: {\n\t\t\t\t\topenLink: openLinkHandler || openLink,\n\t\t\t\t},\n\t\t\t\t[ATTACHMENT_RESOLVER]: {\n\t\t\t\t\tresolve(src, preferRaw) {\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'image',\n\t\t\t\t\t\t\t\turl: src,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t[HOOK_MENUBAR_LINK_CUSTOM_ACTION]: menubarLinkCustomAction,\n\t\t\t}\n\t\t},\n\t\tdata() {\n\t\t\treturn data\n\t\t},\n\t\trender: (h) => {\n\t\t\tconst scopedSlots = readonlyBar?.component\n\t\t\t\t? {\n\t\t\t\t\t\treadonlyBar: () => {\n\t\t\t\t\t\t\treturn h(readonlyBar.component, {\n\t\t\t\t\t\t\t\tprops: data.readonlyBarProps,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t: {}\n\n\t\t\treturn sessionEditor\n\t\t\t\t? h(Editor, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tfileId,\n\t\t\t\t\t\t\trelativePath: filePath,\n\t\t\t\t\t\t\tshareToken,\n\t\t\t\t\t\t\tmime: 'text/markdown',\n\t\t\t\t\t\t\tactive: true,\n\t\t\t\t\t\t\tautofocus,\n\t\t\t\t\t\t\tnoLazyImages,\n\t\t\t\t\t\t},\n\t\t\t\t\t\ton: {\n\t\t\t\t\t\t\tready: () => vm.$emit('ready'),\n\t\t\t\t\t\t\t'create:content': (content) =>\n\t\t\t\t\t\t\t\tvm.$emit('create:content', content),\n\t\t\t\t\t\t\t'update:content': (content) =>\n\t\t\t\t\t\t\t\tvm.$emit('update:content', content),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tscopedSlots,\n\t\t\t\t\t})\n\t\t\t\t: h(MarkdownContentEditor, {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tfileId,\n\t\t\t\t\t\t\tcontent: data.content,\n\t\t\t\t\t\t\trelativePath: filePath,\n\t\t\t\t\t\t\tshareToken,\n\t\t\t\t\t\t\treadOnly: data.readOnly,\n\t\t\t\t\t\t\tnoLazyImages,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tscopedSlots,\n\t\t\t\t\t})\n\t\t},\n\t})\n\n\treturn new TextEditorEmbed(vm, data)\n\t\t.onCreate(onCreate)\n\t\t.onLoaded(onLoaded)\n\t\t.onUpdate(onUpdate)\n\t\t.onSearch(onSearch)\n\t\t.onTocToggle(onOutlineToggle)\n\t\t.onTocToggle(onTocToggle)\n\t\t.onTocPin(onTocPin)\n\t\t.onAttachmentsUpdated(onAttachmentsUpdated)\n\t\t.render(el)\n}\n\nwindow.OCA.Text.createTable = async function ({\n\t// Element to render the editor to\n\tel,\n\n\tcontent = '',\n\n\treadOnly = false,\n\tautofocus = true,\n\n\tonCreate = ({ markdown }) => {},\n\tonLoaded = () => {},\n\tonUpdate = ({ markdown }) => {},\n}) {\n\tconst PlainTableContentEditor = defineAsyncComponent(\n\t\t() => import('./components/Editor/PlainTableContentEditor.vue'),\n\t)\n\n\tconst data = Vue.observable({\n\t\treadOnly,\n\t\tcontent,\n\t})\n\n\tconst vm = new Vue({\n\t\tdata() {\n\t\t\treturn data\n\t\t},\n\t\trender: (h) => {\n\t\t\treturn h(PlainTableContentEditor, {\n\t\t\t\tprops: {\n\t\t\t\t\tcontent: data.content,\n\t\t\t\t\treadOnly: data.readOnly,\n\t\t\t\t},\n\t\t\t})\n\t\t},\n\t})\n\n\treturn new TextEditorEmbed(vm, data)\n\t\t.onCreate(onCreate)\n\t\t.onLoaded(onLoaded)\n\t\t.onUpdate(onUpdate)\n\t\t.render(el)\n}\n"],"file":"text-editor.mjs"}