{"version":3,"mappings":"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","names":["apiVersion","Vue","TextEditorEmbed","#vm","#data","vm","data","#registerDebug","#getEditorComponent","onCreateCallback","content","onLoadedCallback","onUpdateCallback","onOutlineToggleCallback","visible","onSearchCallback","subscribe","el","element","query","matchAll","value","yjsData","fileId","useSession","filePath","shareToken","readOnly","autofocus","readonlyBar","onCreate","markdown","onLoaded","onUpdate","onOutlineToggle","onFileInsert","onMentionSearch","onMentionInsert","openLinkHandler","onSearch","MarkdownContentEditor","Editor","__vitePreload","sessionEditor","ACTION_ATTACHMENT_PROMPT","EDITOR_UPLOAD","HOOK_MENTION_SEARCH","HOOK_MENTION_INSERT","OPEN_LINK_HANDLER","openLink","ATTACHMENT_RESOLVER","src","preferRaw","h","scopedSlots","store"],"ignoreList":[],"sources":["../src/editor.js"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Vue from 'vue'\nimport store from './store/index.js'\nimport { subscribe } from '@nextcloud/event-bus'\nimport { EDITOR_UPLOAD, HOOK_MENTION_SEARCH, HOOK_MENTION_INSERT, ATTACHMENT_RESOLVER, OPEN_LINK_HANDLER } from './components/Editor.provider.js'\nimport { ACTION_ATTACHMENT_PROMPT } from './components/Editor/MediaHandler.provider.js'\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.2'\n\nVue.prototype.t = window.t\nVue.prototype.n = window.n\nVue.prototype.OCA = window.OCA\n\nwindow.OCA.Text = {\n\t...window.OCA.Text,\n}\n\nclass TextEditorEmbed {\n\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\treturn this.#vm.$children[0]\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\tonOutlineToggle(onOutlineToggleCallback = () => {}) {\n\t\tthis.#vm.$on('outline-toggled', (visible) => {\n\t\t\tonOutlineToggleCallback(visible)\n\t\t})\n\t\treturn this\n\t}\n\n\tonSearch(onSearchCallback = () => {}) {\n\t  subscribe('text:editor:search-results', onSearchCallback)\n\t  return 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\tsetSearchQuery(query, matchAll) {\n\t\tconst editor = this.#getEditorComponent()?.$editor\n\t\teditor.commands.setSearchQuery(query, matchAll)\n\t}\n\n\tsearchNext() {\n\t\tconst editor = this.#getEditorComponent()?.$editor\n\t\teditor.commands.nextMatch()\n\t}\n\n\tsearchPrevious() {\n\t\tconst editor = this.#getEditorComponent()?.$editor\n\t\teditor.commands.previousMatch()\n\t}\n\n\tasync save() {\n\t\treturn this.#getEditorComponent().save?.()\n\t}\n\n\tsetShowOutline(value) {\n\t\tthis.#vm.$set(this.#data, 'showOutlineOutside', 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().$editor.chain().insertContent(content).focus().run()\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 = '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 = '- 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('%c%s\\n%c%s\\n%s', styleBold, intro, styleItalic, introChrome, introFirefox)\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 = [\n\t\t\t\t...(window.OCA.Text._debug ?? []),\n\t\t\t\tthis,\n\t\t\t]\n\t\t}\n\t}\n\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\n\tonCreate = ({ markdown }) => {},\n\tonLoaded = () => {},\n\tonUpdate = ({ markdown }) => {},\n\tonOutlineToggle = (visible) => {},\n\tonFileInsert = undefined,\n\tonMentionSearch = undefined,\n\tonMentionInsert = undefined,\n\topenLinkHandler = undefined,\n\tonSearch = undefined,\n}) {\n\tconst { default: MarkdownContentEditor } = await import(/* webpackChunkName: \"editor\" */'./components/Editor/MarkdownContentEditor.vue')\n\tconst { default: Editor } = await import(/* webpackChunkName: \"editor\" */'./components/Editor.vue')\n\n\tconst data = Vue.observable({\n\t\tshowOutlineOutside: false,\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]: sessionEditor ? true : onMentionSearch,\n\t\t\t\t[HOOK_MENTION_INSERT]: sessionEditor ? true : 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\ttype: 'image',\n\t\t\t\t\t\t\turl: src,\n\t\t\t\t\t\t}]\n\t\t\t\t\t},\n\t\t\t\t},\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\treadonlyBar: () => {\n\t\t\t\t\t\treturn h(readonlyBar.component, {\n\t\t\t\t\t\t\tprops: data.readonlyBarProps,\n\t\t\t\t\t\t})\n\t\t\t\t\t},\n\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\tprops: {\n\t\t\t\t\t\tfileId,\n\t\t\t\t\t\trelativePath: filePath,\n\t\t\t\t\t\tshareToken,\n\t\t\t\t\t\tmime: 'text/markdown',\n\t\t\t\t\t\tactive: true,\n\t\t\t\t\t\tautofocus,\n\t\t\t\t\t\tshowOutlineOutside: data.showOutlineOutside,\n\t\t\t\t\t},\n\t\t\t\t\tscopedSlots,\n\t\t\t\t})\n\t\t\t\t: h(MarkdownContentEditor, {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tfileId,\n\t\t\t\t\t\tcontent: data.content,\n\t\t\t\t\t\trelativePath: filePath,\n\t\t\t\t\t\tshareToken,\n\t\t\t\t\t\treadOnly: data.readOnly,\n\t\t\t\t\t\tshowOutlineOutside: data.showOutlineOutside,\n\t\t\t\t\t},\n\t\t\t\t\tscopedSlots,\n\t\t\t\t})\n\t\t},\n\t\tstore,\n\t})\n\treturn new TextEditorEmbed(vm, data)\n\t\t.onCreate(onCreate)\n\t\t.onLoaded(onLoaded)\n\t\t.onUpdate(onUpdate)\n\t\t.onOutlineToggle(onOutlineToggle)\n\t\t.onSearch(onSearch)\n\t\t.render(el)\n}\n"],"file":"js/text-editor.mjs"}