1 line
13 KiB
Plaintext
1 line
13 KiB
Plaintext
{"version":3,"mappings":"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","names":["apiVersion","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","n","Vue","sessionEditor","ACTION_ATTACHMENT_PROMPT","EDITOR_UPLOAD","HOOK_MENTION_SEARCH","HOOK_MENTION_INSERT","OPEN_LINK_HANDLER","openLink","ATTACHMENT_RESOLVER","src","preferRaw","h","scopedSlots","PlainTableContentEditor"],"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 { subscribe } from '@nextcloud/event-bus'\nimport Vue from 'vue'\nimport {\n\tATTACHMENT_RESOLVER,\n\tEDITOR_UPLOAD,\n\tHOOK_MENTION_INSERT,\n\tHOOK_MENTION_SEARCH,\n\tOPEN_LINK_HANDLER,\n} from './components/Editor.provider.ts'\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\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\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\tsubscribe('text:editor:search-results', onSearchCallback)\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\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()\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\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\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(\n\t\t/* webpackChunkName: \"editor\" */ './components/Editor/MarkdownContentEditor.vue'\n\t)\n\tconst { default: Editor } = await import(\n\t\t/* webpackChunkName: \"editor\" */ './components/Editor.vue'\n\t)\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\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}\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\tshowOutlineOutside: data.showOutlineOutside,\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\tshowOutlineOutside: data.showOutlineOutside,\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\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\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 { default: PlainTableContentEditor } = await import(\n\t\t'./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\tshowOutlineOutside: false,\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"} |