Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/text.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'js/editor-rich.js.map')
-rw-r--r--js/editor-rich.js.map2
1 files changed, 1 insertions, 1 deletions
diff --git a/js/editor-rich.js.map b/js/editor-rich.js.map
index 6a73c7273..1b8149336 100644
--- a/js/editor-rich.js.map
+++ b/js/editor-rich.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///./src/helpers/files.js","webpack:///./src/views/RichWorkspace.vue","webpack:///./src/views/RichWorkspace.vue?8fdc","webpack:///./src/views/RichWorkspace.vue?509e","webpack:///./src/components/MenuBar.vue?c014","webpack:///src/components/MenuBar.vue","webpack:///./src/components/MenuBubble.vue?7a05","webpack:///src/components/MenuBubble.vue","webpack:///./src/views/RichWorkspace.vue?d0bc","webpack:///src/views/RichWorkspace.vue","webpack:///./src/components/MenuBar.vue?c0b3","webpack:///./src/components/MenuBubble.vue?8e64","webpack:///./src/views/RichWorkspace.vue?c383","webpack:///./src/helpers/mime.js","webpack:///./src/components/MenuBar.vue","webpack:///./src/mixins/menubar.js","webpack:///./src/components/MenuBar.vue?8286","webpack:///./src/components/MenuBar.vue?1ca4","webpack:///./src/components/MenuBubble.vue","webpack:///./src/components/MenuBubble.vue?c62f","webpack:///./src/components/MenuBubble.vue?5826","webpack:///./src/components/MenuBar.vue?6c6d","webpack:///./src/components/MenuBubble.vue?4b31","webpack:///./src/views/RichWorkspace.vue?01b3"],"names":["from","to","current","split","target","pop","shift","relativePath","fill","concat","absolutePath","length","join","newFileMenuPlugin","attach","menu","fileList","id","addMenuEntry","displayName","t","templateName","iconClass","fileType","actionHandler","name","createFile","then","status","data","fileInfoModel","OCA","Files","FileInfoModel","Viewer","fileActions","triggerAction","OC","Plugins","register","mime","sharingToken","document","getElementById","value","dir","ViewerRoot","createElement","body","appendChild","i","openMimetypes","PERMISSION_UPDATE","PERMISSION_READ","imagePath","filename","file","window","FileList","findFile","Promise","all","imports","path","getCurrentDirectory","Vue","default","prototype","n","Editor","render","h","props","fileId","active","shareToken","mimeType","mimetype","$mount","setDefault","FilesWorkspacePlugin","el","this","registerHeader","bind","priority","module","vm","extend","RichWorkspace","propsData","$el","on","toString","component","exports","___CSS_LOADER_API_IMPORT___","push","content","__esModule","locals","add","_vm","_h","$createElement","_c","_self","class","loaded","ready","focus","darkTheme","canCreate","attrs","staticClass","createNew","_v","_s","_e","directives","rawName","expression","key","autofocus","$event","unfocus","reset","staticRenderFns","openMimetypesMarkdown","openMimetypesPlainText","label","isActive","action","command","undo","redo","strong","em","strike","visible","children","heading","level","bullet_list","bullet_list_item","ordered_list","todo_item","blockquote","code_block","editor","scopedSlots","_u","fn","ref","commands","focused","autohide","_l","icon","$index","iconCount","getIconClasses","clickIcon","hideChildMenu","childIconClasses","preventDefault","toggleChildMenu","open","isChildMenuVisible","childPopoverMenu","isHiddenInMenu","_t","hideLinkMenu","getMarkAttrs","style","setLinkUrl","link","linkUrl","domProps","type","indexOf","_k","keyCode","composing","showLinkMenu","selectFile"],"mappings":"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AQIC,EAAY,YACd,UACA,IACA,KACA,EACA,KACA,WACA,MAIa,UAAAA,E,0CCnBf,O,qBCEAC,EADkC,EAAQ,GAChCC,EAA4B,IAE9BC,KAAK,CAACX,EAAOpC,EAAI,0wEAA2wE,KAEpyEoC,EAAOS,QAAUA,G,iCCNjB,yHAAuL,YAAG,G,mGC0E1L,aACA,YACA,YACA,SAEA,YACA,YACA,YACA,YACA,S,80CAEA,CACA,eACA,YACA,8BACA,uBACA,sBACA,mBAEA,YACA,kBACA,wBAEA,OACA,QACA,YACA,YACA,cAEA,cACA,aACA,YAEA,UACA,aACA,YAEA,UACA,aACA,YAEA,UACA,YACA,YACA,aAGA,gBACA,OACA,cACA,eACA,iBACA,qBACA,mBACA,qBAGA,UACA,eADA,WACA,WACA,6CAEA,eAJA,WAKA,qBACA,OACA,2BAGA,OADA,cACA,IAGA,mBAbA,WAaA,WACA,mBACA,0GAGA,SAlBA,WAkBA,WACA,qBACA,WAEA,0BACA,+BACA,mBACA,sBAEA,mBACA,gCAIA,iBAhCA,WAgCA,WACA,yBACA,SADA,WAEA,GACA,QACA,gBACA,gBACA,kBACA,eACA,oBAEA,2BARA,oBAWA,WAGA,iBAjDA,WAiDA,WACA,qBACA,uBACA,+BAGA,UAvDA,WAwDA,qBACA,gBACA,WACA,iBACA,SAGA,cAGA,UAlEA,WAmEA,oBACA,iBACA,gGACA,iCACA,UAEA,UAzEA,WA0EA,2BACA,iDAGA,QA5HA,WA4HA,WACA,sDACA,2CACA,qDACA,mBACA,kBAEA,oBACA,iCAEA,MAEA,cAxIA,WAyIA,0DAEA,SACA,cADA,WACA,WACA,2BACA,mBACA,uBAGA,UAPA,SAOA,KACA,oBAEA,eAVA,SAUA,GACA,uDAEA,gBAbA,SAaA,GACA,yDAEA,cAhBA,SAgBA,GACA,8CAEA,gBAnBA,SAmBA,GACA,8GACA,8CAEA,gBAvBA,SAuBA,cAEA,IADA,sBACA,CAGA,QACA,+DACA,qBACA,mCACA,uBAGA,OACA,oBACA,yBAGA,GADA,kEACA,6CACA,kIACA,qDAEA,GACA,MACA,mBAGA,iCAEA,eAnDA,SAmDA,cAEA,GADA,oBACA,CAGA,QACA,mDACA,qBACA,mCACA,sBACA,IACA,EADA,sDACA,6CACA,uCAEA,GACA,eAGA,gCAEA,cAvEA,SAuEA,GACA,mBACA,oCACA,yBACA,YACA,GAEA,eA9EA,SA8EA,GACA,+BACA,eAEA,IADA,QACA,aACA,UACA,UAEA,2C,8CCtTA,yHAA0L,YAAG,G,mGCgE7L,I,EAAA,SACA,G,EAAA,S,2BACA,S,MAEA,CACA,kBACA,YACA,qCAEA,YACA,mBAEA,OACA,QACA,YACA,YACA,cAEA,UACA,YACA,YACA,aAGA,gBACA,OACA,aACA,sBAGA,SACA,aADA,SACA,cACA,oBACA,yBACA,2BACA,8BAGA,aARA,WASA,kBACA,0BAEA,WAZA,SAYA,cAEA,GADA,oBACA,CAGA,qDACA,sEACA,qBACA,mCACA,IACA,GADA,kEACA,6CACA,+CACA,uBAEA,oBAEA,WA5BA,SA4BA,KAUA,IARA,CACA,cACA,MACA,YACA,WACA,aACA,MAEA,yCACA,gBAEA,YACA,uB,6CCxIA,wHAA6L,YAAG,G,kGCgDhM,I,EAAA,G,EAAA,Q,2BACA,QACA,Q,yHAEA,4CACA,mE,EAEA,CACA,qBACA,YACA,0GAEA,OACA,MACA,YACA,cAGA,KAXA,WAYA,OACA,SACA,YACA,UACA,UACA,SACA,aACA,8DACA,wCAGA,UACA,WADA,WAEA,mGAEA,UAJA,WAKA,qEAEA,mBAPA,WAQA,kEAGA,OACA,KADA,WAEA,oBAEA,MAJA,SAIA,GACA,GACA,kDAIA,QA5CA,WA4CA,I,EAAA,c,EAAA,sHACA,WACA,iBAEA,qDACA,aACA,oBAEA,qDACA,gBATA,0C,kLAYA,SACA,QADA,aAIA,MAJA,WAIA,WACA,eACA,cACA,2BACA,cACA,oBAGA,YAZA,WAYA,WACA,eACA,kBACA,cACA,uBAIA,OAHA,IACA,8BAEA,8CACA,sBAKA,OAJA,wBACA,cACA,aACA,aACA,KACA,mBAUA,OATA,qDACA,yCAEA,cAEA,YACA,YACA,WACA,eACA,MAGA,UAxCA,WAwCA,WACA,gBAGA,iBACA,qCACA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","file":"editor-rich.js?v=2a9934cc686be7b90267","sourcesContent":["/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { openMimetypes } from './mime'\nimport RichWorkspace from '../views/RichWorkspace'\nimport { imagePath } from '@nextcloud/router'\n\nconst FILE_ACTION_IDENTIFIER = 'Edit with text app'\n\nconst optimalPath = function(from, to) {\n\tconst current = from.split('/')\n\tconst target = to.split('/')\n\tcurrent.pop() // ignore filename\n\twhile (current[0] === target[0]) {\n\t\tcurrent.shift()\n\t\ttarget.shift()\n\t}\n\tconst relativePath = current.fill('..').concat(target)\n\tconst absolutePath = to.split('/')\n\treturn relativePath.length < absolutePath.length\n\t\t? relativePath.join('/')\n\t\t: to\n}\n\nconst registerFileCreate = () => {\n\tconst newFileMenuPlugin = {\n\t\tattach(menu) {\n\t\t\tconst fileList = menu.fileList\n\n\t\t\t// only attach to main file list, public view is not supported yet\n\t\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// register the new menu entry\n\t\t\tmenu.addMenuEntry({\n\t\t\t\tid: 'file',\n\t\t\t\tdisplayName: t('text', 'New text document'),\n\t\t\t\ttemplateName: t('text', 'New text document') + '.md',\n\t\t\t\ticonClass: 'icon-filetype-text',\n\t\t\t\tfileType: 'file',\n\t\t\t\tactionHandler(name) {\n\t\t\t\t\tfileList.createFile(name).then(function(status, data) {\n\t\t\t\t\t\tconst fileInfoModel = new OCA.Files.FileInfoModel(data)\n\t\t\t\t\t\tif (typeof OCA.Viewer !== 'undefined') {\n\t\t\t\t\t\t\tOCA.Files.fileActions.triggerAction('view', fileInfoModel, fileList)\n\t\t\t\t\t\t} else if (typeof OCA.Viewer === 'undefined') {\n\t\t\t\t\t\t\tOCA.Files.fileActions.triggerAction(FILE_ACTION_IDENTIFIER, fileInfoModel, fileList)\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}\n\tOC.Plugins.register('OCA.Files.NewFileMenu', newFileMenuPlugin)\n}\n\nconst registerFileActionFallback = () => {\n\tconst sharingToken = document.getElementById('sharingToken') ? document.getElementById('sharingToken').value : null\n\tconst dir = document.getElementById('dir').value\n\n\tif (!sharingToken || dir !== '') {\n\t\tconst ViewerRoot = document.createElement('div')\n\t\tViewerRoot.id = 'text-viewer-fallback'\n\t\tdocument.body.appendChild(ViewerRoot)\n\t\tconst registerAction = (mime) => OCA.Files.fileActions.register(\n\t\t\tmime,\n\t\t\tFILE_ACTION_IDENTIFIER,\n\t\t\tOC.PERMISSION_UPDATE | OC.PERMISSION_READ,\n\t\t\timagePath('core', 'actions/rename'),\n\t\t\t(filename) => {\n\t\t\t\tconst file = window.FileList.findFile(filename)\n\t\t\t\tPromise.all([\n\t\t\t\t\timport('vue'),\n\t\t\t\t\timport(/* webpackChunkName: \"files-modal\" */'./../components/PublicFilesEditor'),\n\t\t\t\t]).then((imports) => {\n\t\t\t\t\tconst path = window.FileList.getCurrentDirectory() + '/' + filename\n\t\t\t\t\tconst Vue = imports[0].default\n\t\t\t\t\tVue.prototype.t = window.t\n\t\t\t\t\tVue.prototype.n = window.n\n\t\t\t\t\tVue.prototype.OCA = window.OCA\n\t\t\t\t\tconst Editor = imports[1].default\n\t\t\t\t\tconst vm = new Vue({\n\t\t\t\t\t\trender: h => h(Editor, {\n\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\tfileId: file ? file.id : null,\n\t\t\t\t\t\t\t\tactive: true,\n\t\t\t\t\t\t\t\tshareToken: sharingToken,\n\t\t\t\t\t\t\t\trelativePath: path,\n\t\t\t\t\t\t\t\tmimeType: file.mimetype,\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\tvm.$mount(ViewerRoot)\n\t\t\t\t})\n\t\t\t},\n\t\t\tt('text', 'Edit')\n\t\t)\n\n\t\tfor (let i = 0; i < openMimetypes.length; i++) {\n\t\t\tregisterAction(openMimetypes[i])\n\t\t\tOCA.Files.fileActions.setDefault(openMimetypes[i], FILE_ACTION_IDENTIFIER)\n\t\t}\n\t}\n\n}\n\nconst FilesWorkspacePlugin = {\n\n\tel: null,\n\n\tattach(fileList) {\n\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\treturn\n\t\t}\n\n\t\tthis.el = document.createElement('div')\n\t\tfileList.registerHeader({\n\t\t\tid: 'workspace',\n\t\t\tel: this.el,\n\t\t\trender: this.render.bind(this),\n\t\t\tpriority: 10,\n\t\t})\n\t},\n\n\trender(fileList) {\n\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\treturn\n\t\t}\n\n\t\timport('vue').then((module) => {\n\t\t\tconst Vue = module.default\n\t\t\tthis.el.id = 'files-workspace-wrapper'\n\t\t\tVue.prototype.t = window.t\n\t\t\tVue.prototype.n = window.n\n\t\t\tVue.prototype.OCA = window.OCA\n\t\t\tconst View = Vue.extend(RichWorkspace)\n\t\t\tconst vm = new View({\n\t\t\t\tpropsData: {\n\t\t\t\t\tpath: fileList.getCurrentDirectory(),\n\t\t\t\t},\n\t\t\t}).$mount(this.el)\n\n\t\t\tfileList.$el.on('urlChanged', data => {\n\t\t\t\tvm.path = data.dir.toString()\n\t\t\t})\n\t\t\tfileList.$el.on('changeDirectory', data => {\n\t\t\t\tvm.path = data.dir.toString()\n\t\t\t})\n\t\t})\n\t},\n}\n\nexport {\n\toptimalPath,\n\tregisterFileActionFallback,\n\tregisterFileCreate,\n\tFilesWorkspacePlugin,\n\tFILE_ACTION_IDENTIFIER,\n}\n","import { render, staticRenderFns } from \"./RichWorkspace.vue?vue&type=template&id=01f36cf5&scoped=true&\"\nimport script from \"./RichWorkspace.vue?vue&type=script&lang=js&\"\nexport * from \"./RichWorkspace.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RichWorkspace.vue?vue&type=style&index=0&id=01f36cf5&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"01f36cf5\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichWorkspace.vue?vue&type=style&index=0&id=01f36cf5&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"#rich-workspace[data-v-01f36cf5]{padding:0 60px;margin-bottom:-24px;text-align:left;max-height:0;transition:max-height 0.5s cubic-bezier(0, 1, 0, 1)}#rich-workspace.creatable[data-v-01f36cf5]{min-height:90px}#rich-workspace[data-v-01f36cf5]:only-child{margin-bottom:0}.empty-workspace[data-v-01f36cf5]{padding-top:43px;color:var(--color-text-maxcontrast);height:0}#rich-workspace[data-v-01f36cf5] div[contenteditable=false]{width:100%;padding:0px;background-color:var(--color-main-background);opacity:1;border:none}#rich-workspace[data-v-01f36cf5] #editor-container{height:100%;position:unset !important;top:auto !important}#rich-workspace[data-v-01f36cf5] #editor-wrapper{position:unset !important;overflow:visible}#rich-workspace[data-v-01f36cf5] #editor{overflow:scroll !important;max-height:50vh}#rich-workspace[data-v-01f36cf5] #editor-wrapper .ProseMirror{padding:0px;margin:0}#rich-workspace[data-v-01f36cf5] .menubar{z-index:50;margin-bottom:-10px}#rich-workspace[data-v-01f36cf5] .menubar .menubar-icons{margin-left:0}#rich-workspace[data-v-01f36cf5] .editor__content{margin:0}#rich-workspace.focus[data-v-01f36cf5]{max-height:50vh}#rich-workspace[data-v-01f36cf5]:not(.focus){max-height:30vh;position:relative;overflow:hidden}#rich-workspace[data-v-01f36cf5]:not(.focus):not(.icon-loading):after{content:'';position:absolute;z-index:1;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(to bottom, rgba(255,255,255,0), var(--color-main-background));width:100%;height:4em}#rich-workspace.dark[data-v-01f36cf5]:not(.focus):not(.icon-loading):after{background-image:linear-gradient(to bottom, rgba(0,0,0,0), var(--color-main-background))}@media only screen and (max-width: 1024px){#rich-workspace[data-v-01f36cf5]:not(.focus){max-height:30vh}}html.ie #rich-workspace[data-v-01f36cf5] #editor-container{position:initial}html.ie #rich-workspace[data-v-01f36cf5] #editor-wrapper{position:relative !important;top:auto !important}html.ie #rich-workspace[data-v-01f36cf5] #editor{display:flex;flex-direction:column;overflow:hidden !important}html.ie #rich-workspace[data-v-01f36cf5] .menubar{position:relative;overflow:hidden;flex-shrink:0;height:44px;top:auto}html.ie #rich-workspace[data-v-01f36cf5] #editor>div:nth-child(2){min-height:44px;overflow-x:hidden;overflow-y:auto;flex-shrink:1}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBar.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<EditorMenuBar v-slot=\"{ commands, isActive, focused }\" :editor=\"editor\">\n\t\t<div class=\"menubar\" :class=\"{ 'is-focused': focused, 'autohide': autohide }\">\n\t\t\t<div v-if=\"isRichEditor\" ref=\"menubar\" class=\"menubar-icons\">\n\t\t\t\t<template v-for=\"(icon, $index) in allIcons\">\n\t\t\t\t\t<button v-if=\"icon.class\"\n\t\t\t\t\t\tv-show=\"$index < iconCount\"\n\t\t\t\t\t\t:key=\"icon.label\"\n\t\t\t\t\t\t:title=\"icon.label\"\n\t\t\t\t\t\t:class=\"getIconClasses(isActive, icon)\"\n\t\t\t\t\t\t@click=\"clickIcon(commands, icon)\" />\n\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t<div v-show=\"$index < iconCount || !icon.class\"\n\t\t\t\t\t\t\t:key=\"icon.label\"\n\t\t\t\t\t\t\tv-click-outside=\"() => hideChildMenu(icon)\"\n\t\t\t\t\t\t\tclass=\"submenu\">\n\t\t\t\t\t\t\t<button :class=\"childIconClasses(isActive, icon.children, )\"\n\t\t\t\t\t\t\t\t:title=\"icon.label\"\n\t\t\t\t\t\t\t\t@click.prevent=\"toggleChildMenu(icon)\" />\n\t\t\t\t\t\t\t<div :class=\"{open: isChildMenuVisible(icon)}\" class=\"popovermenu menu-center\">\n\t\t\t\t\t\t\t\t<PopoverMenu :menu=\"childPopoverMenu(isActive, commands, icon.children, icon)\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</template>\n\t\t\t\t<Actions>\n\t\t\t\t\t<template v-for=\"(icon, $index) in allIcons\">\n\t\t\t\t\t\t<ActionButton v-if=\"icon.class && isHiddenInMenu($index)\"\n\t\t\t\t\t\t\t:key=\"icon.class\"\n\t\t\t\t\t\t\t:icon=\"icon.class\"\n\t\t\t\t\t\t\t@click=\"clickIcon(commands, icon)\">\n\t\t\t\t\t\t\t{{ icon.label }}\n\t\t\t\t\t\t</ActionButton>\n\t\t\t\t\t\t<!--<template v-else-if=\"!icon.class && isHiddenInMenu($index)\">\n\t\t\t\t\t\t\t<ActionButton v-for=\"childIcon in icon.children\"\n\t\t\t\t\t\t\t\t:key=\"childIcon.class\"\n\t\t\t\t\t\t\t\t:icon=\"childIcon.class\"\n\t\t\t\t\t\t\t\t@click=\"clickIcon(commands, childIcon)\">\n\t\t\t\t\t\t\t\t{{ childIcon.label }}\n\t\t\t\t\t\t\t</ActionButton>\n\t\t\t\t\t\t</template>-->\n\t\t\t\t\t</template>\n\t\t\t\t</Actions>\n\t\t\t</div>\n\t\t\t<slot>\n\t\t\t\tLeft side\n\t\t\t</slot>\n\t\t</div>\n\t</EditorMenuBar>\n</template>\n\n<script>\nimport { EditorMenuBar } from 'tiptap'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\nimport menuBarIcons from './../mixins/menubar'\nimport { optimalPath } from './../helpers/files'\n\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport PopoverMenu from '@nextcloud/vue/dist/Components/PopoverMenu'\nimport ClickOutside from 'vue-click-outside'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nexport default {\n\tname: 'MenuBar',\n\tcomponents: {\n\t\tEditorMenuBar,\n\t\tActionButton,\n\t\tPopoverMenu,\n\t\tActions,\n\t},\n\tdirectives: {\n\t\tTooltip,\n\t\tClickOutside,\n\t},\n\tprops: {\n\t\teditor: {\n\t\t\ttype: Object,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t\tisRichEditor: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tautohide: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisPublic: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tfilePath: {\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata: () => {\n\t\treturn {\n\t\t\twindowWidth: 0,\n\t\t\twindowHeight: 0,\n\t\t\tforceRecompute: 0,\n\t\t\tsubmenuVisibility: {},\n\t\t\tlastImagePath: null,\n\t\t\ticons: [...menuBarIcons],\n\t\t}\n\t},\n\tcomputed: {\n\t\tisHiddenInMenu() {\n\t\t\treturn ($index) => $index - this.iconCount >= 0\n\t\t},\n\t\tgetIconClasses() {\n\t\t\treturn (isActive, icon) => {\n\t\t\t\tconst classes = {\n\t\t\t\t\t'is-active': icon.isActive(isActive),\n\t\t\t\t}\n\t\t\t\tclasses[icon.class] = true\n\t\t\t\treturn classes\n\t\t\t}\n\t\t},\n\t\tisChildMenuVisible() {\n\t\t\treturn (icon) => {\n\t\t\t\treturn Object.prototype.hasOwnProperty.call(this.submenuVisibility, icon.label) ? this.submenuVisibility[icon.label] : false\n\t\t\t}\n\t\t},\n\t\tallIcons() {\n\t\t\tif (this.isPublic) {\n\t\t\t\treturn this.icons\n\t\t\t}\n\t\t\treturn [...this.icons, {\n\t\t\t\tlabel: t('text', 'Insert image'),\n\t\t\t\tclass: 'icon-image',\n\t\t\t\tisActive: () => {\n\t\t\t\t},\n\t\t\t\taction: (commands) => {\n\t\t\t\t\tthis.showImagePrompt(commands.image)\n\t\t\t\t},\n\t\t\t}]\n\t\t},\n\t\tchildPopoverMenu() {\n\t\t\treturn (isActive, commands, icons, parent) => {\n\t\t\t\tconst popoverMenuItems = []\n\t\t\t\tfor (const index in icons) {\n\t\t\t\t\tpopoverMenuItems.push({\n\t\t\t\t\t\ttext: icons[index].label,\n\t\t\t\t\t\ticon: icons[index].class,\n\t\t\t\t\t\taction: () => {\n\t\t\t\t\t\t\ticons[index].action(commands)\n\t\t\t\t\t\t\tthis.hideChildMenu(parent)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tactive: icons[index].isActive(isActive),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn popoverMenuItems\n\t\t\t}\n\t\t},\n\t\tchildIconClasses() {\n\t\t\treturn (isActive, icons) => {\n\t\t\t\tconst icon = this.childIcon(isActive, icons)\n\t\t\t\treturn this.getIconClasses(isActive, icon)\n\t\t\t}\n\t\t},\n\t\tchildIcon() {\n\t\t\treturn (isActive, icons) => {\n\t\t\t\tfor (const index in icons) {\n\t\t\t\t\tconst icon = icons[index]\n\t\t\t\t\tif (icon.isActive(isActive)) {\n\t\t\t\t\t\treturn icon\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn icons[0]\n\t\t\t}\n\t\t},\n\t\ticonCount() {\n\t\t\tthis.forceRecompute // eslint-disable-line\n\t\t\tthis.windowWidth // eslint-disable-line\n\t\t\tconst menuBarWidth = this.$refs.menubar && this.$refs.menubar.clientWidth > 200 ? this.$refs.menubar.clientWidth : 200\n\t\t\tconst iconCount = Math.max((Math.floor(menuBarWidth / 44) - 2), 0)\n\t\t\treturn iconCount\n\t\t},\n\t\timagePath() {\n\t\t\treturn this.lastImagePath\n\t\t\t\t|| this.filePath.split('/').slice(0, -1).join('/')\n\t\t},\n\t},\n\tmounted() {\n\t\twindow.addEventListener('resize', this.getWindowWidth)\n\t\tthis.checkInterval = setInterval(() => {\n\t\t\tconst isWidthAvailable = (this.$refs.menubar && this.$refs.menubar.clientWidth > 0)\n\t\t\tif (this.isRichEditor && isWidthAvailable) {\n\t\t\t\tthis.redrawMenuBar()\n\t\t\t}\n\t\t\tif (!this.isRichEditor || isWidthAvailable) {\n\t\t\t\tclearInterval(this.checkInterval)\n\t\t\t}\n\t\t}, 100)\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this.getWindowWidth)\n\t},\n\tmethods: {\n\t\tredrawMenuBar() {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.getWindowWidth()\n\t\t\t\tthis.forceRecompute++\n\t\t\t})\n\t\t},\n\t\tclickIcon(commands, icon) {\n\t\t\treturn icon.action(commands)\n\t\t},\n\t\tgetWindowWidth(event) {\n\t\t\tthis.windowWidth = document.documentElement.clientWidth\n\t\t},\n\t\tgetWindowHeight(event) {\n\t\t\tthis.windowHeight = document.documentElement.clientHeight\n\t\t},\n\t\thideChildMenu(icon) {\n\t\t\tthis.$set(this.submenuVisibility, icon.label, false)\n\t\t},\n\t\ttoggleChildMenu(icon) {\n\t\t\tconst lastValue = Object.prototype.hasOwnProperty.call(this.submenuVisibility, icon.label) ? this.submenuVisibility[icon.label] : false\n\t\t\tthis.$set(this.submenuVisibility, icon.label, !lastValue)\n\t\t},\n\t\tshowImagePrompt(command) {\n\t\t\tconst currentUser = getCurrentUser()\n\t\t\tif (!currentUser) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst _command = command\n\t\t\tOC.dialogs.filepicker(t('text', 'Insert an image'), (file) => {\n\t\t\t\tconst client = OC.Files.getClient()\n\t\t\t\tclient.getFileInfo(file).then((_status, fileInfo) => {\n\t\t\t\t\tthis.lastImagePath = fileInfo.path\n\n\t\t\t\t\t// dirty but works so we have the information stored in markdown\n\t\t\t\t\tconst appendMeta = {\n\t\t\t\t\t\tmimetype: fileInfo.mimetype,\n\t\t\t\t\t\thasPreview: fileInfo.hasPreview,\n\t\t\t\t\t}\n\t\t\t\t\tconst path = optimalPath(this.filePath, `${fileInfo.path}/${fileInfo.name}`)\n\t\t\t\t\tconst encodedPath = path.split('/').map(encodeURIComponent).join('/')\n\t\t\t\t\tconst meta = Object.entries(appendMeta).map(([key, val]) => `${key}=${encodeURIComponent(val)}`).join('&')\n\t\t\t\t\tconst src = `${encodedPath}?fileId=${fileInfo.id}#${meta}`\n\n\t\t\t\t\t_command({\n\t\t\t\t\t\tsrc,\n\t\t\t\t\t\talt: fileInfo.name,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t}, false, [], true, undefined, this.imagePath)\n\t\t},\n\t\tshowLinkPrompt(command) {\n\t\t\tconst currentUser = OC.getCurrentUser()\n\t\t\tif (!currentUser) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst _command = command\n\t\t\tOC.dialogs.filepicker('Insert a link', (file) => {\n\t\t\t\tconst client = OC.Files.getClient()\n\t\t\t\tclient.getFileInfo(file).then((_status, fileInfo) => {\n\t\t\t\t\tthis.lastLinkPath = fileInfo.path\n\t\t\t\t\tconst path = this.optimalPathTo(`${fileInfo.path}/${fileInfo.name}`)\n\t\t\t\t\tconst encodedPath = path.split('/').map(encodeURIComponent).join('/')\n\t\t\t\t\tconst href = `${encodedPath}?fileId=${fileInfo.id}`\n\n\t\t\t\t\t_command({\n\t\t\t\t\t\thref,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t}, false, [], true, undefined, this.linkPath)\n\t\t},\n\t\toptimalPathTo(targetFile) {\n\t\t\tconst absolutePath = targetFile.split('/')\n\t\t\tconst relativePath = this.relativePathTo(targetFile).split('/')\n\t\t\treturn relativePath.length < absolutePath.length\n\t\t\t\t? relativePath.join('/')\n\t\t\t\t: targetFile\n\t\t},\n\t\trelativePathTo(targetFile) {\n\t\t\tconst current = this.filePath.split('/')\n\t\t\tconst target = targetFile.split('/')\n\t\t\tcurrent.pop() // ignore filename\n\t\t\twhile (current[0] === target[0]) {\n\t\t\t\tcurrent.shift()\n\t\t\t\ttarget.shift()\n\t\t\t}\n\t\t\treturn current.fill('..').concat(target).join('/')\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.menubar {\n\t\tposition: fixed;\n\t\tposition: -webkit-sticky;\n\t\tposition: sticky;\n\t\ttop: 0;\n\t\tdisplay: flex;\n\t\tz-index: 10010; // above modal-header so buttons are clickable\n\t\tbackground-color: var(--color-main-background-translucent);\n\t\theight: 44px;\n\n\t\t&.autohide {\n\t\t\tvisibility: hidden;\n\t\t\topacity: 0;\n\t\t\ttransition: visibility 0.2s 0.4s, opacity 0.2s 0.4s;\n\t\t\t&.is-focused {\n\t\t\t\tvisibility: visible;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t\t.menubar-icons {\n\t\t\tflex-grow: 1;\n\t\t\tmargin-left: calc((100% - 660px) / 2);\n\t\t}\n\t\t@media (max-width: 660px) {\n\t\t\t.menubar-icons {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t}\n\t\t&::v-deep .action-item__menu ul {\n\t\t\tmax-height: calc(100vh - 88px);\n\t\t\toverflow: scroll;\n\t\t}\n\t}\n\n\t.menubar button {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tbackground-size: 16px;\n\t\tborder: 0;\n\t\tbackground-color: transparent;\n\t\topacity: .5;\n\t\tcolor: var(--color-main-text);\n\t\tbackground-position: center center;\n\t\tvertical-align: top;\n\t\t&:hover, &:focus, &:active {\n\t\t\tbackground-color: var(--color-background-dark);\n\t\t}\n\t\t&.is-active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\topacity: 1;\n\t\t}\n\n\t\t&.icon-undo, &.icon-redo {\n\t\t\topacity: .4;\n\t\t}\n\t}\n\n\t.menubar .submenu {\n\t\tdisplay: inline-block;\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tposition: relative;\n\t\tvertical-align: top;\n\t}\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBubble.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBubble.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<EditorMenuBubble v-slot=\"{ commands, isActive, getMarkAttrs, menu }\"\n\t\tclass=\"menububble\"\n\t\t:editor=\"editor\"\n\t\t@hide=\"hideLinkMenu\">\n\t\t<div class=\"menububble\" :class=\"{ 'is-active': menu.isActive }\" :style=\"`left: ${menu.left}px; bottom: ${menu.bottom}px;`\">\n\t\t\t<form v-if=\"linkMenuIsActive\" class=\"menububble__form\" @submit.prevent=\"setLinkUrl(commands.link, linkUrl)\">\n\t\t\t\t<input ref=\"linkInput\"\n\t\t\t\t\tv-model=\"linkUrl\"\n\t\t\t\t\tclass=\"menububble__input\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tplaceholder=\"https://\"\n\t\t\t\t\t@keydown.esc=\"hideLinkMenu\">\n\t\t\t\t<button class=\"menububble__button icon-confirm\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t@click=\"setLinkUrl(commands.link, linkUrl)\" />\n\t\t\t</form>\n\n\t\t\t<template v-else>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"menububble__button\"\n\t\t\t\t\t:class=\"{ 'is-active': isActive.link() }\"\n\t\t\t\t\t@click=\"showLinkMenu(getMarkAttrs('link'))\">\n\t\t\t\t\t<span v-tooltip=\"t('text', isActive.link() ? 'Update Link' : 'Add Link')\" class=\"icon-link\" />\n\t\t\t\t\t<span class=\"menububble__buttontext\">\n\t\t\t\t\t\t{{ t('text', isActive.link() ? 'Update Link' : 'Add Link') }}\n\t\t\t\t\t</span>\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"menububble__button\"\n\t\t\t\t\t:class=\"{ 'is-active': isActive.link() }\"\n\t\t\t\t\t@click=\"selectFile(commands.link)\">\n\t\t\t\t\t<span v-tooltip=\"t('text', 'Link file')\" class=\"icon-file\" />\n\t\t\t\t\t<span class=\"menububble__buttontext\">{{ t('text', 'Link file') }}</span>\n\t\t\t\t</button>\n\t\t\t</template>\n\t\t</div>\n\t</EditorMenuBubble>\n</template>\n\n<script>\nimport { EditorMenuBubble } from 'tiptap'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\nimport { optimalPath } from './../helpers/files'\n\nexport default {\n\tname: 'MenuBubble',\n\tcomponents: {\n\t\tEditorMenuBubble,\n\t},\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\tprops: {\n\t\teditor: {\n\t\t\ttype: Object,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t\tfilePath: {\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata: () => {\n\t\treturn {\n\t\t\tlinkUrl: null,\n\t\t\tlinkMenuIsActive: false,\n\t\t}\n\t},\n\tmethods: {\n\t\tshowLinkMenu(attrs) {\n\t\t\tthis.linkUrl = attrs.href\n\t\t\tthis.linkMenuIsActive = true\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.linkInput.focus()\n\t\t\t})\n\t\t},\n\t\thideLinkMenu() {\n\t\t\tthis.linkUrl = null\n\t\t\tthis.linkMenuIsActive = false\n\t\t},\n\t\tselectFile(command) {\n\t\t\tconst currentUser = OC.getCurrentUser()\n\t\t\tif (!currentUser) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst startPath = this.filePath.split('/').slice(0, -1).join('/')\n\t\t\tOC.dialogs.filepicker(t('text', 'Select file to link to'), (file) => {\n\t\t\t\tconst client = OC.Files.getClient()\n\t\t\t\tclient.getFileInfo(file).then((_status, fileInfo) => {\n\t\t\t\t\tconst path = optimalPath(this.filePath, `${fileInfo.path}/${fileInfo.name}`)\n\t\t\t\t\tconst encodedPath = path.split('/').map(encodeURIComponent).join('/')\n\t\t\t\t\tcommand({ href: `${encodedPath}?fileId=${fileInfo.id}` })\n\t\t\t\t\tthis.hideLinkMenu()\n\t\t\t\t})\n\t\t\t}, false, [], true, undefined, startPath)\n\t\t},\n\t\tsetLinkUrl(command, url) {\n\t\t\t// Heuristics for determining if we need a https:// prefix.\n\t\t\tconst noPrefixes = [\n\t\t\t\t/^[a-zA-Z]+:/, // url with protocol (\"mailTo:email@domain.tld\")\n\t\t\t\t/^\\//, // absolute path\n\t\t\t\t/\\?fileId=/, // relative link with fileId\n\t\t\t\t/^\\.\\.?\\//, // relative link starting with ./ or ../\n\t\t\t\t/^[^.]*[/$]/, // no dots before first '/' - not a domain name\n\t\t\t\t/^#/, // url fragment\n\t\t\t]\n\t\t\tif (url && !noPrefixes.find(regex => url.match(regex))) {\n\t\t\t\turl = 'https://' + url\n\t\t\t}\n\t\t\tcommand({ href: url })\n\t\t\tthis.hideLinkMenu()\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.menububble {\n\t\tposition: absolute;\n\t\tdisplay: flex;\n\t\tz-index: 10020;\n\t\tbackground: var(--color-main-background-translucent);\n\t\tbox-shadow: 0 1px 5px var(--color-box-shadow);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: 0;\n\t\tmargin-bottom: 0.4rem;\n\t\tvisibility: hidden;\n\t\topacity: 0;\n\t\ttransform: translateX(-50%);\n\t\ttransition: opacity 0.2s, visibility 0.2s;\n\n\t\t&.is-active {\n\t\t\topacity: 1;\n\t\t\tvisibility: visible;\n\t\t}\n\n\t\t&__button {\n\t\t\tdisplay: block;\n\t\t\tborder: 0;\n\t\t\tpadding: 0.3rem 0.7rem;\n\t\t\tmargin: 0;\n\t\t\tmargin-right: 0.2rem;\n\t\t\tborder-radius: var(--border-radius);\n\t\t\tcursor: pointer;\n\n\t\t\t&:last-child {\n\t\t\t\tmargin-right: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__buttontext {\n\t\t\tpadding: 0.4rem;\n\t\t\tpadding-right: 0;\n\t\t}\n\n\t\t&__form {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t}\n\n\t\t&__input {\n\t\t\tfont: inherit;\n\t\t\tborder: none;\n\t\t\tbackground: transparent;\n\t\t\tmin-width: 150px;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichWorkspace.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichWorkspace.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div v-if=\"enabled\" id=\"rich-workspace\" :class=\"{'icon-loading': !loaded || !ready, 'focus': focus, 'dark': darkTheme, 'creatable': canCreate}\">\n\t\t<div v-if=\"showEmptyWorkspace\" class=\"empty-workspace\" @click=\"createNew\">\n\t\t\t<p class=\"placeholder\">\n\t\t\t\t{{ t('text', 'Add notes, lists or links …') }}\n\t\t\t</p>\n\t\t</div>\n\n\t\t<EditorWrapper v-if=\"file\"\n\t\t\tv-show=\"ready\"\n\t\t\t:key=\"file.id\"\n\t\t\t:file-id=\"file.id\"\n\t\t\t:relative-path=\"file.path\"\n\t\t\t:share-token=\"shareToken\"\n\t\t\t:active=\"true\"\n\t\t\t:autohide=\"true\"\n\t\t\t:mime=\"file.mimetype\"\n\t\t\t:autofocus=\"autofocus\"\n\t\t\t@ready=\"ready=true\"\n\t\t\t@focus=\"focus=true\"\n\t\t\t@blur=\"unfocus\"\n\t\t\t@error=\"reset\" />\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { subscribe } from '@nextcloud/event-bus'\n\nconst IS_PUBLIC = !!(document.getElementById('isPublic'))\nconst WORKSPACE_URL = generateOcsUrl('apps/text' + (IS_PUBLIC ? '/public' : ''), 2) + 'workspace'\n\nexport default {\n\tname: 'RichWorkspace',\n\tcomponents: {\n\t\tEditorWrapper: () => import(/* webpackChunkName: \"editor\" */'./../components/EditorWrapper'),\n\t},\n\tprops: {\n\t\tpath: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tfocus: false,\n\t\t\tfolder: null,\n\t\t\tfile: null,\n\t\t\tloaded: false,\n\t\t\tready: false,\n\t\t\tautofocus: false,\n\t\t\tdarkTheme: OCA.Accessibility && OCA.Accessibility.theme === 'dark',\n\t\t\tenabled: OCA.Text.RichWorkspaceEnabled,\n\t\t}\n\t},\n\tcomputed: {\n\t\tshareToken() {\n\t\t\treturn document.getElementById('sharingToken') ? document.getElementById('sharingToken').value : null\n\t\t},\n\t\tcanCreate() {\n\t\t\treturn !!(this.folder && (this.folder.permissions & OC.PERMISSION_CREATE))\n\t\t},\n\t\tshowEmptyWorkspace() {\n\t\t\treturn (!this.file || (this.autofocus && !this.ready)) && this.canCreate\n\t\t},\n\t},\n\twatch: {\n\t\tpath() {\n\t\t\tthis.getFileInfo()\n\t\t},\n\t\tfocus(newValue) {\n\t\t\tif (!newValue) {\n\t\t\t\tdocument.querySelector('#editor').scrollTo(0, 0)\n\t\t\t}\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (this.enabled) {\n\t\t\tthis.getFileInfo()\n\t\t}\n\t\tsubscribe('Text::showRichWorkspace', () => {\n\t\t\tthis.enabled = true\n\t\t\tthis.getFileInfo()\n\t\t})\n\t\tsubscribe('Text::hideRichWorkspace', () => {\n\t\t\tthis.enabled = false\n\t\t})\n\t},\n\tmethods: {\n\t\tunfocus() {\n\t\t\t// setTimeout(() => this.focus = false, 2000)\n\t\t},\n\t\treset() {\n\t\t\tthis.file = null\n\t\t\tthis.focus = false\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.creating = false\n\t\t\t\tthis.getFileInfo()\n\t\t\t})\n\t\t},\n\t\tgetFileInfo() {\n\t\t\tthis.loaded = false\n\t\t\tthis.autofocus = false\n\t\t\tthis.ready = false\n\t\t\tconst params = { path: this.path }\n\t\t\tif (IS_PUBLIC) {\n\t\t\t\tparams.shareToken = this.shareToken\n\t\t\t}\n\t\t\treturn axios.get(WORKSPACE_URL, { params }).then((response) => {\n\t\t\t\tconst data = response.data.ocs.data\n\t\t\t\tthis.folder = data.folder || null\n\t\t\t\tthis.file = data.file\n\t\t\t\tthis.editing = true\n\t\t\t\tthis.loaded = true\n\t\t\t\treturn true\n\t\t\t}).catch((error) => {\n\t\t\t\tif (error.response.data.ocs && error.response.data.ocs.data.folder) {\n\t\t\t\t\tthis.folder = error.response.data.ocs.data.folder\n\t\t\t\t} else {\n\t\t\t\t\tthis.folder = null\n\t\t\t\t}\n\t\t\t\tthis.file = null\n\t\t\t\tthis.loaded = true\n\t\t\t\tthis.ready = true\n\t\t\t\tthis.creating = false\n\t\t\t\treturn false\n\t\t\t})\n\t\t},\n\t\tcreateNew() {\n\t\t\tif (this.creating) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.creating = true\n\t\t\tthis.getFileInfo().then((workspaceFileExists) => {\n\t\t\t\tthis.autofocus = true\n\t\t\t\tif (!workspaceFileExists) {\n\t\t\t\t\twindow.FileList.createFile('Readme.md', { scrollTo: false, animate: false }).then((status, data) => {\n\t\t\t\t\t\tthis.getFileInfo()\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t#rich-workspace {\n\t\tpadding: 0 60px;\n\t\t/* Slightly reduce vertical space */\n\t\tmargin-bottom: -24px;\n\t\ttext-align: left;\n\t\tmax-height: 0;\n\t\ttransition: max-height 0.5s cubic-bezier(0, 1, 0, 1);\n\t\t&.creatable {\n\t\t\tmin-height: 90px;\n\t\t}\n\t}\n\n\t/* For subfolders, where there are no Recommendations */\n\t#rich-workspace:only-child {\n\t\tmargin-bottom: 0;\n\t}\n\n\t.empty-workspace {\n\t\tpadding-top: 43px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\theight: 0;\n\t}\n\n\t#rich-workspace::v-deep div[contenteditable=false] {\n\t\twidth: 100%;\n\t\tpadding: 0px;\n\t\tbackground-color: var(--color-main-background);\n\t\topacity: 1;\n\t\tborder: none;\n\t}\n\n\t#rich-workspace::v-deep #editor-container {\n\t\theight: 100%;\n\t\tposition: unset !important;\n\t\ttop: auto !important;\n\t}\n\n\t#rich-workspace::v-deep #editor-wrapper {\n\t\tposition: unset !important;\n\t\toverflow: visible;\n\t}\n\n\t#rich-workspace::v-deep #editor {\n\t\toverflow: scroll !important;\n\t\tmax-height: 50vh;\n\t}\n\n\t#rich-workspace::v-deep #editor-wrapper .ProseMirror {\n\t\tpadding: 0px;\n\t\tmargin: 0;\n\t}\n\n\t#rich-workspace::v-deep .menubar {\n\t\tz-index: 50;\n\t\t/* Slightly reduce vertical space */\n\t\tmargin-bottom: -10px;\n\t}\n\n\t#rich-workspace::v-deep .menubar .menubar-icons {\n\t\tmargin-left: 0;\n\t}\n\n\t#rich-workspace::v-deep .editor__content {\n\t\tmargin: 0;\n\t}\n\n\t#rich-workspace.focus {\n\t\tmax-height: 50vh;\n\t}\n\n\t#rich-workspace:not(.focus) {\n\t\tmax-height: 30vh;\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t}\n\n\t#rich-workspace:not(.focus):not(.icon-loading):after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tz-index: 1;\n\t\tbottom: 0;\n\t\tleft: 0;\n\t\tpointer-events: none;\n\t\tbackground-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--color-main-background));\n\t\twidth: 100%;\n\t\theight: 4em;\n\t}\n\n\t#rich-workspace.dark:not(.focus):not(.icon-loading):after {\n\t\tbackground-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), var(--color-main-background));\n\t}\n\n\t@media only screen and (max-width: 1024px) {\n\t\t#rich-workspace:not(.focus) {\n\t\t\tmax-height: 30vh;\n\t\t}\n\t}\n\n\thtml.ie {\n\t\t#rich-workspace::v-deep {\n\t\t\t#editor-container {\n\t\t\t\tposition: initial;\n\t\t\t}\n\n\t\t\t#editor-wrapper {\n\t\t\t\tposition: relative !important;\n\t\t\t\ttop: auto !important;\n\t\t\t}\n\n\t\t\t#editor {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\toverflow: hidden !important;\n\t\t\t}\n\n\t\t\t.menubar {\n\t\t\t\tposition: relative;\n\t\t\t\toverflow: hidden;\n\t\t\t\tflex-shrink: 0;\n\t\t\t\theight: 44px;\n\t\t\t\ttop: auto;\n\t\t\t}\n\n\t\t\t#editor > div:nth-child(2) {\n\t\t\t\tmin-height: 44px;\n\t\t\t\toverflow-x: hidden;\n\t\t\t\toverflow-y: auto;\n\t\t\t\tflex-shrink: 1;\n\t\t\t}\n\t\t}\n\t}\n\n</style>\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBar.vue?vue&type=style&index=0&id=0d0204aa&scoped=true&lang=scss&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"36b499c6\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBubble.vue?vue&type=style&index=0&id=66ed9266&scoped=true&lang=scss&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"8904371c\", content, true, {});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.enabled)?_c('div',{class:{'icon-loading': !_vm.loaded || !_vm.ready, 'focus': _vm.focus, 'dark': _vm.darkTheme, 'creatable': _vm.canCreate},attrs:{\"id\":\"rich-workspace\"}},[(_vm.showEmptyWorkspace)?_c('div',{staticClass:\"empty-workspace\",on:{\"click\":_vm.createNew}},[_c('p',{staticClass:\"placeholder\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('text', 'Add notes, lists or links …'))+\"\\n\\t\\t\")])]):_vm._e(),_vm._v(\" \"),(_vm.file)?_c('EditorWrapper',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.ready),expression:\"ready\"}],key:_vm.file.id,attrs:{\"file-id\":_vm.file.id,\"relative-path\":_vm.file.path,\"share-token\":_vm.shareToken,\"active\":true,\"autohide\":true,\"mime\":_vm.file.mimetype,\"autofocus\":_vm.autofocus},on:{\"ready\":function($event){_vm.ready=true},\"focus\":function($event){_vm.focus=true},\"blur\":_vm.unfocus,\"error\":_vm.reset}}):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst openMimetypesMarkdown = [\n\t'text/markdown',\n]\n\nconst openMimetypesPlainText = [\n\t'text/plain',\n\t'application/cmd',\n\t'application/x-empty',\n\t'application/x-msdos-program',\n\t'application/javascript',\n\t'application/json',\n\t'application/x-perl',\n\t'application/x-php',\n\t'application/x-tex',\n\t'application/xml',\n\t'application/yaml',\n\t'text/css',\n\t'text/csv',\n\t'text/html',\n\t'text/x-c',\n\t'text/x-c++src',\n\t'text/x-h',\n\t'text/x-java-source',\n\t'text/x-ldif',\n\t'text/x-python',\n\t'text/x-shellscript',\n]\n\nconst openMimetypes = [...openMimetypesMarkdown, ...openMimetypesPlainText]\n\nexport {\n\topenMimetypes,\n\topenMimetypesMarkdown,\n\topenMimetypesPlainText,\n}\n","import { render, staticRenderFns } from \"./MenuBar.vue?vue&type=template&id=0d0204aa&scoped=true&\"\nimport script from \"./MenuBar.vue?vue&type=script&lang=js&\"\nexport * from \"./MenuBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MenuBar.vue?vue&type=style&index=0&id=0d0204aa&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0d0204aa\",\n null\n \n)\n\nexport default component.exports","/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default [\n\t{\n\t\tlabel: t('text', 'Undo'),\n\t\tclass: 'icon-undo',\n\t\tisActive: (isActive) => {},\n\t\taction: (command) => command.undo(),\n\t},\n\t{\n\t\tlabel: t('text', 'Redo'),\n\t\tclass: 'icon-redo',\n\t\tisActive: (isActive) => {},\n\t\taction: (command) => command.redo(),\n\t},\n\t{\n\t\tlabel: t('text', 'Bold'),\n\t\tclass: 'icon-bold',\n\t\tisActive: (isActive) => isActive.strong(),\n\t\taction: (command) => {\n\t\t\treturn command.strong()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Italic'),\n\t\tclass: 'icon-italic',\n\t\tisActive: (isActive) => isActive.em(),\n\t\taction: (command) => {\n\t\t\treturn command.em()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Strikethrough'),\n\t\tclass: 'icon-strike',\n\t\tisActive: (isActive) => isActive.strike(),\n\t\taction: (command) => {\n\t\t\treturn command.strike()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Headings'),\n\t\tvisible: false,\n\t\tchildren: [\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 1'),\n\t\t\t\tclass: 'icon-h1',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 1 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 1 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 2'),\n\t\t\t\tclass: 'icon-h2',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 2 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 2 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 3'),\n\t\t\t\tclass: 'icon-h3',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 3 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 3 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 4'),\n\t\t\t\tclass: 'icon-h4',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 4 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 4 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 5'),\n\t\t\t\tclass: 'icon-h5',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 5 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 5 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 6'),\n\t\t\t\tclass: 'icon-h6',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 6 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 6 })\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tlabel: t('text', 'Unordered list'),\n\t\tclass: 'icon-ul',\n\t\tisActive: (isActive) => isActive.bullet_list(),\n\t\taction: (command) => {\n\t\t\treturn command.bullet_list_item()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Ordered list'),\n\t\tclass: 'icon-ol',\n\t\tisActive: (isActive) => isActive.ordered_list(),\n\t\taction: (command) => {\n\t\t\treturn command.ordered_list()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'ToDo list'),\n\t\tclass: 'icon-checkmark',\n\t\tisActive: (isActive) => false,\n\t\taction: (command) => command.todo_item(),\n\t},\n\t{\n\t\tlabel: t('text', 'Blockquote'),\n\t\tclass: 'icon-quote',\n\t\tisActive: (isActive) => isActive.blockquote(),\n\t\taction: (command) => {\n\t\t\treturn command.blockquote()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Code block'),\n\t\tclass: 'icon-code',\n\t\tisActive: (isActive) => isActive.code_block(),\n\t\taction: (command) => {\n\t\t\treturn command.code_block()\n\t\t},\n\t},\n]\n","export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBar.vue?vue&type=style&index=0&id=0d0204aa&scoped=true&lang=scss&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".menubar[data-v-0d0204aa]{position:fixed;position:-webkit-sticky;position:sticky;top:0;display:flex;z-index:10010;background-color:var(--color-main-background-translucent);height:44px}.menubar.autohide[data-v-0d0204aa]{visibility:hidden;opacity:0;transition:visibility 0.2s 0.4s, opacity 0.2s 0.4s}.menubar.autohide.is-focused[data-v-0d0204aa]{visibility:visible;opacity:1}.menubar .menubar-icons[data-v-0d0204aa]{flex-grow:1;margin-left:calc((100% - 660px) / 2)}@media (max-width: 660px){.menubar .menubar-icons[data-v-0d0204aa]{margin-left:0}}.menubar[data-v-0d0204aa] .action-item__menu ul{max-height:calc(100vh - 88px);overflow:scroll}.menubar button[data-v-0d0204aa]{width:44px;height:44px;margin:0;background-size:16px;border:0;background-color:transparent;opacity:.5;color:var(--color-main-text);background-position:center center;vertical-align:top}.menubar button[data-v-0d0204aa]:hover,.menubar button[data-v-0d0204aa]:focus,.menubar button[data-v-0d0204aa]:active{background-color:var(--color-background-dark)}.menubar button.is-active[data-v-0d0204aa],.menubar button[data-v-0d0204aa]:hover,.menubar button[data-v-0d0204aa]:focus{opacity:1}.menubar button.icon-undo[data-v-0d0204aa],.menubar button.icon-redo[data-v-0d0204aa]{opacity:.4}.menubar .submenu[data-v-0d0204aa]{display:inline-block;width:44px;height:44px;position:relative;vertical-align:top}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import { render, staticRenderFns } from \"./MenuBubble.vue?vue&type=template&id=66ed9266&scoped=true&\"\nimport script from \"./MenuBubble.vue?vue&type=script&lang=js&\"\nexport * from \"./MenuBubble.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MenuBubble.vue?vue&type=style&index=0&id=66ed9266&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"66ed9266\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBubble.vue?vue&type=style&index=0&id=66ed9266&scoped=true&lang=scss&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".menububble[data-v-66ed9266]{position:absolute;display:flex;z-index:10020;background:var(--color-main-background-translucent);box-shadow:0 1px 5px var(--color-box-shadow);border-radius:var(--border-radius);padding:0;margin-bottom:0.4rem;visibility:hidden;opacity:0;transform:translateX(-50%);transition:opacity 0.2s, visibility 0.2s}.menububble.is-active[data-v-66ed9266]{opacity:1;visibility:visible}.menububble__button[data-v-66ed9266]{display:block;border:0;padding:0.3rem 0.7rem;margin:0;margin-right:0.2rem;border-radius:var(--border-radius);cursor:pointer}.menububble__button[data-v-66ed9266]:last-child{margin-right:0}.menububble__buttontext[data-v-66ed9266]{padding:0.4rem;padding-right:0}.menububble__form[data-v-66ed9266]{display:flex;align-items:center}.menububble__input[data-v-66ed9266]{font:inherit;border:none;background:transparent;min-width:150px}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('EditorMenuBar',{attrs:{\"editor\":_vm.editor},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar commands = ref.commands;\nvar isActive = ref.isActive;\nvar focused = ref.focused;\nreturn [_c('div',{staticClass:\"menubar\",class:{ 'is-focused': focused, 'autohide': _vm.autohide }},[(_vm.isRichEditor)?_c('div',{ref:\"menubar\",staticClass:\"menubar-icons\"},[_vm._l((_vm.allIcons),function(icon,$index){return [(icon.class)?_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:($index < _vm.iconCount),expression:\"$index < iconCount\"}],key:icon.label,class:_vm.getIconClasses(isActive, icon),attrs:{\"title\":icon.label},on:{\"click\":function($event){return _vm.clickIcon(commands, icon)}}}):[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:($index < _vm.iconCount || !icon.class),expression:\"$index < iconCount || !icon.class\"},{name:\"click-outside\",rawName:\"v-click-outside\",value:(function () { return _vm.hideChildMenu(icon); }),expression:\"() => hideChildMenu(icon)\"}],key:icon.label,staticClass:\"submenu\"},[_c('button',{class:_vm.childIconClasses(isActive, icon.children ),attrs:{\"title\":icon.label},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleChildMenu(icon)}}}),_vm._v(\" \"),_c('div',{staticClass:\"popovermenu menu-center\",class:{open: _vm.isChildMenuVisible(icon)}},[_c('PopoverMenu',{attrs:{\"menu\":_vm.childPopoverMenu(isActive, commands, icon.children, icon)}})],1)])]]}),_vm._v(\" \"),_c('Actions',[_vm._l((_vm.allIcons),function(icon,$index){return [(icon.class && _vm.isHiddenInMenu($index))?_c('ActionButton',{key:icon.class,attrs:{\"icon\":icon.class},on:{\"click\":function($event){return _vm.clickIcon(commands, icon)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(icon.label)+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()]})],2)],2):_vm._e(),_vm._v(\" \"),_vm._t(\"default\",[_vm._v(\"\\n\\t\\t\\tLeft side\\n\\t\\t\")])],2)]}}],null,true)})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('EditorMenuBubble',{staticClass:\"menububble\",attrs:{\"editor\":_vm.editor},on:{\"hide\":_vm.hideLinkMenu},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar commands = ref.commands;\nvar isActive = ref.isActive;\nvar getMarkAttrs = ref.getMarkAttrs;\nvar menu = ref.menu;\nreturn [_c('div',{staticClass:\"menububble\",class:{ 'is-active': menu.isActive },style:((\"left: \" + (menu.left) + \"px; bottom: \" + (menu.bottom) + \"px;\"))},[(_vm.linkMenuIsActive)?_c('form',{staticClass:\"menububble__form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.setLinkUrl(commands.link, _vm.linkUrl)}}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.linkUrl),expression:\"linkUrl\"}],ref:\"linkInput\",staticClass:\"menububble__input\",attrs:{\"type\":\"text\",\"placeholder\":\"https://\"},domProps:{\"value\":(_vm.linkUrl)},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.hideLinkMenu($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.linkUrl=$event.target.value}}}),_vm._v(\" \"),_c('button',{staticClass:\"menububble__button icon-confirm\",attrs:{\"type\":\"button\",\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.setLinkUrl(commands.link, _vm.linkUrl)}}})]):[_c('button',{staticClass:\"menububble__button\",class:{ 'is-active': isActive.link() },on:{\"click\":function($event){_vm.showLinkMenu(getMarkAttrs('link'))}}},[_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.t('text', isActive.link() ? 'Update Link' : 'Add Link')),expression:\"t('text', isActive.link() ? 'Update Link' : 'Add Link')\"}],staticClass:\"icon-link\"}),_vm._v(\" \"),_c('span',{staticClass:\"menububble__buttontext\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('text', isActive.link() ? 'Update Link' : 'Add Link'))+\"\\n\\t\\t\\t\\t\")])]),_vm._v(\" \"),_c('button',{staticClass:\"menububble__button\",class:{ 'is-active': isActive.link() },on:{\"click\":function($event){return _vm.selectFile(commands.link)}}},[_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.t('text', 'Link file')),expression:\"t('text', 'Link file')\"}],staticClass:\"icon-file\"}),_vm._v(\" \"),_c('span',{staticClass:\"menububble__buttontext\"},[_vm._v(_vm._s(_vm.t('text', 'Link file')))])])]],2)]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichWorkspace.vue?vue&type=style&index=0&id=01f36cf5&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"55d37b72\", content, true, {});"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"sources":["webpack:///./src/helpers/files.js","webpack:///./src/views/RichWorkspace.vue","webpack:///./src/views/RichWorkspace.vue?8fdc","webpack:///./src/views/RichWorkspace.vue?509e","webpack:///./src/components/MenuBar.vue?c014","webpack:///src/components/MenuBar.vue","webpack:///./src/components/MenuBubble.vue?7a05","webpack:///src/components/MenuBubble.vue","webpack:///./src/views/RichWorkspace.vue?d0bc","webpack:///src/views/RichWorkspace.vue","webpack:///./src/components/MenuBar.vue?4721","webpack:///./src/components/MenuBubble.vue?8e64","webpack:///./src/views/RichWorkspace.vue?c383","webpack:///./src/helpers/mime.js","webpack:///./src/components/MenuBar.vue","webpack:///./src/mixins/menubar.js","webpack:///./src/components/MenuBar.vue?5971","webpack:///./src/components/MenuBar.vue?6fa2","webpack:///./src/components/MenuBubble.vue","webpack:///./src/components/MenuBubble.vue?c62f","webpack:///./src/components/MenuBubble.vue?5826","webpack:///./src/components/MenuBar.vue?0f70","webpack:///./src/components/MenuBubble.vue?4b31","webpack:///./src/views/RichWorkspace.vue?01b3"],"names":["from","to","current","split","target","pop","shift","relativePath","fill","concat","absolutePath","length","join","newFileMenuPlugin","attach","menu","fileList","id","addMenuEntry","displayName","t","templateName","iconClass","fileType","actionHandler","name","createFile","then","status","data","fileInfoModel","OCA","Files","FileInfoModel","Viewer","fileActions","triggerAction","OC","Plugins","register","mime","sharingToken","document","getElementById","value","dir","ViewerRoot","createElement","body","appendChild","i","openMimetypes","PERMISSION_UPDATE","PERMISSION_READ","imagePath","filename","file","window","FileList","findFile","Promise","all","imports","path","getCurrentDirectory","Vue","default","prototype","n","Editor","render","h","props","fileId","active","shareToken","mimeType","mimetype","$mount","setDefault","FilesWorkspacePlugin","el","this","registerHeader","bind","priority","module","vm","extend","RichWorkspace","propsData","$el","on","toString","component","exports","___CSS_LOADER_API_IMPORT___","push","content","__esModule","locals","add","_vm","_h","$createElement","_c","_self","class","loaded","ready","focus","darkTheme","canCreate","attrs","staticClass","createNew","_v","_s","_e","directives","rawName","expression","key","autofocus","$event","unfocus","reset","staticRenderFns","openMimetypesMarkdown","openMimetypesPlainText","label","isActive","action","command","undo","redo","strong","em","strike","visible","children","heading","level","bullet_list","bullet_list_item","ordered_list","todo_item","blockquote","code_block","editor","scopedSlots","_u","fn","ref","commands","focused","autohide","_l","icon","$index","iconCount","getIconClasses","clickIcon","hideChildMenu","childIconClasses","preventDefault","toggleChildMenu","open","isChildMenuVisible","childPopoverMenu","isHiddenInMenu","_t","hideLinkMenu","getMarkAttrs","style","setLinkUrl","link","linkUrl","domProps","type","indexOf","_k","keyCode","composing","showLinkMenu","selectFile"],"mappings":"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AQIC,EAAY,YACd,UACA,IACA,KACA,EACA,KACA,WACA,MAIa,UAAAA,E,0CCnBf,O,qBCEAC,EADkC,EAAQ,GAChCC,EAA4B,IAE9BC,KAAK,CAACX,EAAOpC,EAAI,0wEAA2wE,KAEpyEoC,EAAOS,QAAUA,G,iCCNjB,yHAAuL,YAAG,G,mGC0E1L,aACA,YACA,YACA,SAEA,YACA,YACA,YACA,YACA,S,80CAEA,CACA,eACA,YACA,8BACA,uBACA,sBACA,mBAEA,YACA,kBACA,wBAEA,OACA,QACA,YACA,YACA,cAEA,cACA,aACA,YAEA,UACA,aACA,YAEA,UACA,aACA,YAEA,UACA,YACA,YACA,aAGA,gBACA,OACA,cACA,eACA,iBACA,qBACA,mBACA,qBAGA,UACA,eADA,WACA,WACA,6CAEA,eAJA,WAKA,qBACA,OACA,2BAGA,OADA,cACA,IAGA,mBAbA,WAaA,WACA,mBACA,0GAGA,SAlBA,WAkBA,WACA,qBACA,WAEA,0BACA,+BACA,mBACA,sBAEA,mBACA,gCAIA,iBAhCA,WAgCA,WACA,yBACA,SADA,WAEA,GACA,QACA,gBACA,gBACA,kBACA,eACA,oBAEA,2BARA,oBAWA,WAGA,iBAjDA,WAiDA,WACA,qBACA,uBACA,+BAGA,UAvDA,WAwDA,qBACA,gBACA,WACA,iBACA,SAGA,cAGA,UAlEA,WAmEA,oBACA,iBACA,gGACA,iCACA,UAEA,UAzEA,WA0EA,2BACA,iDAGA,QA5HA,WA4HA,WACA,sDACA,2CACA,qDACA,mBACA,kBAEA,oBACA,iCAEA,MAEA,cAxIA,WAyIA,0DAEA,SACA,cADA,WACA,WACA,2BACA,mBACA,uBAGA,UAPA,SAOA,KACA,oBAEA,eAVA,SAUA,GACA,uDAEA,gBAbA,SAaA,GACA,yDAEA,cAhBA,SAgBA,GACA,8CAEA,gBAnBA,SAmBA,GACA,8GACA,8CAEA,gBAvBA,SAuBA,cAEA,IADA,sBACA,CAGA,QACA,+DACA,qBACA,mCACA,uBAGA,OACA,oBACA,yBAGA,GADA,kEACA,6CACA,kIACA,qDAEA,GACA,MACA,mBAGA,iCAEA,eAnDA,SAmDA,cAEA,GADA,oBACA,CAGA,QACA,mDACA,qBACA,mCACA,sBACA,IACA,EADA,sDACA,6CACA,uCAEA,GACA,eAGA,gCAEA,cAvEA,SAuEA,GACA,mBACA,oCACA,yBACA,YACA,GAEA,eA9EA,SA8EA,GACA,+BACA,eAEA,IADA,QACA,aACA,UACA,UAEA,2C,8CCtTA,yHAA0L,YAAG,G,mGCgE7L,I,EAAA,SACA,G,EAAA,S,2BACA,S,MAEA,CACA,kBACA,YACA,qCAEA,YACA,mBAEA,OACA,QACA,YACA,YACA,cAEA,UACA,YACA,YACA,aAGA,gBACA,OACA,aACA,sBAGA,SACA,aADA,SACA,cACA,oBACA,yBACA,2BACA,8BAGA,aARA,WASA,kBACA,0BAEA,WAZA,SAYA,cAEA,GADA,oBACA,CAGA,qDACA,sEACA,qBACA,mCACA,IACA,GADA,kEACA,6CACA,+CACA,uBAEA,oBAEA,WA5BA,SA4BA,KAUA,IARA,CACA,cACA,MACA,YACA,WACA,aACA,MAEA,yCACA,gBAEA,YACA,uB,6CCxIA,wHAA6L,YAAG,G,kGCgDhM,I,EAAA,G,EAAA,Q,2BACA,QACA,Q,yHAEA,4CACA,mE,EAEA,CACA,qBACA,YACA,0GAEA,OACA,MACA,YACA,cAGA,KAXA,WAYA,OACA,SACA,YACA,UACA,UACA,SACA,aACA,8DACA,wCAGA,UACA,WADA,WAEA,mGAEA,UAJA,WAKA,qEAEA,mBAPA,WAQA,kEAGA,OACA,KADA,WAEA,oBAEA,MAJA,SAIA,GACA,GACA,kDAIA,QA5CA,WA4CA,I,EAAA,c,EAAA,sHACA,WACA,iBAEA,qDACA,aACA,oBAEA,qDACA,gBATA,0C,kLAYA,SACA,QADA,aAIA,MAJA,WAIA,WACA,eACA,cACA,2BACA,cACA,oBAGA,YAZA,WAYA,WACA,eACA,kBACA,cACA,uBAIA,OAHA,IACA,8BAEA,8CACA,sBAKA,OAJA,wBACA,cACA,aACA,aACA,KACA,mBAUA,OATA,qDACA,yCAEA,cAEA,YACA,YACA,WACA,eACA,MAGA,UAxCA,WAwCA,WACA,gBAGA,iBACA,qCACA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","file":"editor-rich.js?v=ead886c7567f0211e509","sourcesContent":["/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { openMimetypes } from './mime'\nimport RichWorkspace from '../views/RichWorkspace'\nimport { imagePath } from '@nextcloud/router'\n\nconst FILE_ACTION_IDENTIFIER = 'Edit with text app'\n\nconst optimalPath = function(from, to) {\n\tconst current = from.split('/')\n\tconst target = to.split('/')\n\tcurrent.pop() // ignore filename\n\twhile (current[0] === target[0]) {\n\t\tcurrent.shift()\n\t\ttarget.shift()\n\t}\n\tconst relativePath = current.fill('..').concat(target)\n\tconst absolutePath = to.split('/')\n\treturn relativePath.length < absolutePath.length\n\t\t? relativePath.join('/')\n\t\t: to\n}\n\nconst registerFileCreate = () => {\n\tconst newFileMenuPlugin = {\n\t\tattach(menu) {\n\t\t\tconst fileList = menu.fileList\n\n\t\t\t// only attach to main file list, public view is not supported yet\n\t\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// register the new menu entry\n\t\t\tmenu.addMenuEntry({\n\t\t\t\tid: 'file',\n\t\t\t\tdisplayName: t('text', 'New text document'),\n\t\t\t\ttemplateName: t('text', 'New text document') + '.md',\n\t\t\t\ticonClass: 'icon-filetype-text',\n\t\t\t\tfileType: 'file',\n\t\t\t\tactionHandler(name) {\n\t\t\t\t\tfileList.createFile(name).then(function(status, data) {\n\t\t\t\t\t\tconst fileInfoModel = new OCA.Files.FileInfoModel(data)\n\t\t\t\t\t\tif (typeof OCA.Viewer !== 'undefined') {\n\t\t\t\t\t\t\tOCA.Files.fileActions.triggerAction('view', fileInfoModel, fileList)\n\t\t\t\t\t\t} else if (typeof OCA.Viewer === 'undefined') {\n\t\t\t\t\t\t\tOCA.Files.fileActions.triggerAction(FILE_ACTION_IDENTIFIER, fileInfoModel, fileList)\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}\n\tOC.Plugins.register('OCA.Files.NewFileMenu', newFileMenuPlugin)\n}\n\nconst registerFileActionFallback = () => {\n\tconst sharingToken = document.getElementById('sharingToken') ? document.getElementById('sharingToken').value : null\n\tconst dir = document.getElementById('dir').value\n\n\tif (!sharingToken || dir !== '') {\n\t\tconst ViewerRoot = document.createElement('div')\n\t\tViewerRoot.id = 'text-viewer-fallback'\n\t\tdocument.body.appendChild(ViewerRoot)\n\t\tconst registerAction = (mime) => OCA.Files.fileActions.register(\n\t\t\tmime,\n\t\t\tFILE_ACTION_IDENTIFIER,\n\t\t\tOC.PERMISSION_UPDATE | OC.PERMISSION_READ,\n\t\t\timagePath('core', 'actions/rename'),\n\t\t\t(filename) => {\n\t\t\t\tconst file = window.FileList.findFile(filename)\n\t\t\t\tPromise.all([\n\t\t\t\t\timport('vue'),\n\t\t\t\t\timport(/* webpackChunkName: \"files-modal\" */'./../components/PublicFilesEditor'),\n\t\t\t\t]).then((imports) => {\n\t\t\t\t\tconst path = window.FileList.getCurrentDirectory() + '/' + filename\n\t\t\t\t\tconst Vue = imports[0].default\n\t\t\t\t\tVue.prototype.t = window.t\n\t\t\t\t\tVue.prototype.n = window.n\n\t\t\t\t\tVue.prototype.OCA = window.OCA\n\t\t\t\t\tconst Editor = imports[1].default\n\t\t\t\t\tconst vm = new Vue({\n\t\t\t\t\t\trender: h => h(Editor, {\n\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\tfileId: file ? file.id : null,\n\t\t\t\t\t\t\t\tactive: true,\n\t\t\t\t\t\t\t\tshareToken: sharingToken,\n\t\t\t\t\t\t\t\trelativePath: path,\n\t\t\t\t\t\t\t\tmimeType: file.mimetype,\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\tvm.$mount(ViewerRoot)\n\t\t\t\t})\n\t\t\t},\n\t\t\tt('text', 'Edit')\n\t\t)\n\n\t\tfor (let i = 0; i < openMimetypes.length; i++) {\n\t\t\tregisterAction(openMimetypes[i])\n\t\t\tOCA.Files.fileActions.setDefault(openMimetypes[i], FILE_ACTION_IDENTIFIER)\n\t\t}\n\t}\n\n}\n\nconst FilesWorkspacePlugin = {\n\n\tel: null,\n\n\tattach(fileList) {\n\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\treturn\n\t\t}\n\n\t\tthis.el = document.createElement('div')\n\t\tfileList.registerHeader({\n\t\t\tid: 'workspace',\n\t\t\tel: this.el,\n\t\t\trender: this.render.bind(this),\n\t\t\tpriority: 10,\n\t\t})\n\t},\n\n\trender(fileList) {\n\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\treturn\n\t\t}\n\n\t\timport('vue').then((module) => {\n\t\t\tconst Vue = module.default\n\t\t\tthis.el.id = 'files-workspace-wrapper'\n\t\t\tVue.prototype.t = window.t\n\t\t\tVue.prototype.n = window.n\n\t\t\tVue.prototype.OCA = window.OCA\n\t\t\tconst View = Vue.extend(RichWorkspace)\n\t\t\tconst vm = new View({\n\t\t\t\tpropsData: {\n\t\t\t\t\tpath: fileList.getCurrentDirectory(),\n\t\t\t\t},\n\t\t\t}).$mount(this.el)\n\n\t\t\tfileList.$el.on('urlChanged', data => {\n\t\t\t\tvm.path = data.dir.toString()\n\t\t\t})\n\t\t\tfileList.$el.on('changeDirectory', data => {\n\t\t\t\tvm.path = data.dir.toString()\n\t\t\t})\n\t\t})\n\t},\n}\n\nexport {\n\toptimalPath,\n\tregisterFileActionFallback,\n\tregisterFileCreate,\n\tFilesWorkspacePlugin,\n\tFILE_ACTION_IDENTIFIER,\n}\n","import { render, staticRenderFns } from \"./RichWorkspace.vue?vue&type=template&id=01f36cf5&scoped=true&\"\nimport script from \"./RichWorkspace.vue?vue&type=script&lang=js&\"\nexport * from \"./RichWorkspace.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RichWorkspace.vue?vue&type=style&index=0&id=01f36cf5&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"01f36cf5\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichWorkspace.vue?vue&type=style&index=0&id=01f36cf5&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"#rich-workspace[data-v-01f36cf5]{padding:0 60px;margin-bottom:-24px;text-align:left;max-height:0;transition:max-height 0.5s cubic-bezier(0, 1, 0, 1)}#rich-workspace.creatable[data-v-01f36cf5]{min-height:90px}#rich-workspace[data-v-01f36cf5]:only-child{margin-bottom:0}.empty-workspace[data-v-01f36cf5]{padding-top:43px;color:var(--color-text-maxcontrast);height:0}#rich-workspace[data-v-01f36cf5] div[contenteditable=false]{width:100%;padding:0px;background-color:var(--color-main-background);opacity:1;border:none}#rich-workspace[data-v-01f36cf5] #editor-container{height:100%;position:unset !important;top:auto !important}#rich-workspace[data-v-01f36cf5] #editor-wrapper{position:unset !important;overflow:visible}#rich-workspace[data-v-01f36cf5] #editor{overflow:scroll !important;max-height:50vh}#rich-workspace[data-v-01f36cf5] #editor-wrapper .ProseMirror{padding:0px;margin:0}#rich-workspace[data-v-01f36cf5] .menubar{z-index:50;margin-bottom:-10px}#rich-workspace[data-v-01f36cf5] .menubar .menubar-icons{margin-left:0}#rich-workspace[data-v-01f36cf5] .editor__content{margin:0}#rich-workspace.focus[data-v-01f36cf5]{max-height:50vh}#rich-workspace[data-v-01f36cf5]:not(.focus){max-height:30vh;position:relative;overflow:hidden}#rich-workspace[data-v-01f36cf5]:not(.focus):not(.icon-loading):after{content:'';position:absolute;z-index:1;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(to bottom, rgba(255,255,255,0), var(--color-main-background));width:100%;height:4em}#rich-workspace.dark[data-v-01f36cf5]:not(.focus):not(.icon-loading):after{background-image:linear-gradient(to bottom, rgba(0,0,0,0), var(--color-main-background))}@media only screen and (max-width: 1024px){#rich-workspace[data-v-01f36cf5]:not(.focus){max-height:30vh}}html.ie #rich-workspace[data-v-01f36cf5] #editor-container{position:initial}html.ie #rich-workspace[data-v-01f36cf5] #editor-wrapper{position:relative !important;top:auto !important}html.ie #rich-workspace[data-v-01f36cf5] #editor{display:flex;flex-direction:column;overflow:hidden !important}html.ie #rich-workspace[data-v-01f36cf5] .menubar{position:relative;overflow:hidden;flex-shrink:0;height:44px;top:auto}html.ie #rich-workspace[data-v-01f36cf5] #editor>div:nth-child(2){min-height:44px;overflow-x:hidden;overflow-y:auto;flex-shrink:1}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBar.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<EditorMenuBar v-slot=\"{ commands, isActive, focused }\" :editor=\"editor\">\n\t\t<div class=\"menubar\" :class=\"{ 'is-focused': focused, 'autohide': autohide }\">\n\t\t\t<div v-if=\"isRichEditor\" ref=\"menubar\" class=\"menubar-icons\">\n\t\t\t\t<template v-for=\"(icon, $index) in allIcons\">\n\t\t\t\t\t<button v-if=\"icon.class\"\n\t\t\t\t\t\tv-show=\"$index < iconCount\"\n\t\t\t\t\t\t:key=\"icon.label\"\n\t\t\t\t\t\t:title=\"icon.label\"\n\t\t\t\t\t\t:class=\"getIconClasses(isActive, icon)\"\n\t\t\t\t\t\t@click=\"clickIcon(commands, icon)\" />\n\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t<div v-show=\"$index < iconCount || !icon.class\"\n\t\t\t\t\t\t\t:key=\"icon.label\"\n\t\t\t\t\t\t\tv-click-outside=\"() => hideChildMenu(icon)\"\n\t\t\t\t\t\t\tclass=\"submenu\">\n\t\t\t\t\t\t\t<button :class=\"childIconClasses(isActive, icon.children, )\"\n\t\t\t\t\t\t\t\t:title=\"icon.label\"\n\t\t\t\t\t\t\t\t@click.prevent=\"toggleChildMenu(icon)\" />\n\t\t\t\t\t\t\t<div :class=\"{open: isChildMenuVisible(icon)}\" class=\"popovermenu menu-center\">\n\t\t\t\t\t\t\t\t<PopoverMenu :menu=\"childPopoverMenu(isActive, commands, icon.children, icon)\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</template>\n\t\t\t\t<Actions>\n\t\t\t\t\t<template v-for=\"(icon, $index) in allIcons\">\n\t\t\t\t\t\t<ActionButton v-if=\"icon.class && isHiddenInMenu($index)\"\n\t\t\t\t\t\t\t:key=\"icon.class\"\n\t\t\t\t\t\t\t:icon=\"icon.class\"\n\t\t\t\t\t\t\t@click=\"clickIcon(commands, icon)\">\n\t\t\t\t\t\t\t{{ icon.label }}\n\t\t\t\t\t\t</ActionButton>\n\t\t\t\t\t\t<!--<template v-else-if=\"!icon.class && isHiddenInMenu($index)\">\n\t\t\t\t\t\t\t<ActionButton v-for=\"childIcon in icon.children\"\n\t\t\t\t\t\t\t\t:key=\"childIcon.class\"\n\t\t\t\t\t\t\t\t:icon=\"childIcon.class\"\n\t\t\t\t\t\t\t\t@click=\"clickIcon(commands, childIcon)\">\n\t\t\t\t\t\t\t\t{{ childIcon.label }}\n\t\t\t\t\t\t\t</ActionButton>\n\t\t\t\t\t\t</template>-->\n\t\t\t\t\t</template>\n\t\t\t\t</Actions>\n\t\t\t</div>\n\t\t\t<slot>\n\t\t\t\tLeft side\n\t\t\t</slot>\n\t\t</div>\n\t</EditorMenuBar>\n</template>\n\n<script>\nimport { EditorMenuBar } from 'tiptap'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\nimport menuBarIcons from './../mixins/menubar'\nimport { optimalPath } from './../helpers/files'\n\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport PopoverMenu from '@nextcloud/vue/dist/Components/PopoverMenu'\nimport ClickOutside from 'vue-click-outside'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nexport default {\n\tname: 'MenuBar',\n\tcomponents: {\n\t\tEditorMenuBar,\n\t\tActionButton,\n\t\tPopoverMenu,\n\t\tActions,\n\t},\n\tdirectives: {\n\t\tTooltip,\n\t\tClickOutside,\n\t},\n\tprops: {\n\t\teditor: {\n\t\t\ttype: Object,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t\tisRichEditor: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tautohide: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisPublic: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tfilePath: {\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata: () => {\n\t\treturn {\n\t\t\twindowWidth: 0,\n\t\t\twindowHeight: 0,\n\t\t\tforceRecompute: 0,\n\t\t\tsubmenuVisibility: {},\n\t\t\tlastImagePath: null,\n\t\t\ticons: [...menuBarIcons],\n\t\t}\n\t},\n\tcomputed: {\n\t\tisHiddenInMenu() {\n\t\t\treturn ($index) => $index - this.iconCount >= 0\n\t\t},\n\t\tgetIconClasses() {\n\t\t\treturn (isActive, icon) => {\n\t\t\t\tconst classes = {\n\t\t\t\t\t'is-active': icon.isActive(isActive),\n\t\t\t\t}\n\t\t\t\tclasses[icon.class] = true\n\t\t\t\treturn classes\n\t\t\t}\n\t\t},\n\t\tisChildMenuVisible() {\n\t\t\treturn (icon) => {\n\t\t\t\treturn Object.prototype.hasOwnProperty.call(this.submenuVisibility, icon.label) ? this.submenuVisibility[icon.label] : false\n\t\t\t}\n\t\t},\n\t\tallIcons() {\n\t\t\tif (this.isPublic) {\n\t\t\t\treturn this.icons\n\t\t\t}\n\t\t\treturn [...this.icons, {\n\t\t\t\tlabel: t('text', 'Insert image'),\n\t\t\t\tclass: 'icon-image',\n\t\t\t\tisActive: () => {\n\t\t\t\t},\n\t\t\t\taction: (commands) => {\n\t\t\t\t\tthis.showImagePrompt(commands.image)\n\t\t\t\t},\n\t\t\t}]\n\t\t},\n\t\tchildPopoverMenu() {\n\t\t\treturn (isActive, commands, icons, parent) => {\n\t\t\t\tconst popoverMenuItems = []\n\t\t\t\tfor (const index in icons) {\n\t\t\t\t\tpopoverMenuItems.push({\n\t\t\t\t\t\ttext: icons[index].label,\n\t\t\t\t\t\ticon: icons[index].class,\n\t\t\t\t\t\taction: () => {\n\t\t\t\t\t\t\ticons[index].action(commands)\n\t\t\t\t\t\t\tthis.hideChildMenu(parent)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tactive: icons[index].isActive(isActive),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn popoverMenuItems\n\t\t\t}\n\t\t},\n\t\tchildIconClasses() {\n\t\t\treturn (isActive, icons) => {\n\t\t\t\tconst icon = this.childIcon(isActive, icons)\n\t\t\t\treturn this.getIconClasses(isActive, icon)\n\t\t\t}\n\t\t},\n\t\tchildIcon() {\n\t\t\treturn (isActive, icons) => {\n\t\t\t\tfor (const index in icons) {\n\t\t\t\t\tconst icon = icons[index]\n\t\t\t\t\tif (icon.isActive(isActive)) {\n\t\t\t\t\t\treturn icon\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn icons[0]\n\t\t\t}\n\t\t},\n\t\ticonCount() {\n\t\t\tthis.forceRecompute // eslint-disable-line\n\t\t\tthis.windowWidth // eslint-disable-line\n\t\t\tconst menuBarWidth = this.$refs.menubar && this.$refs.menubar.clientWidth > 200 ? this.$refs.menubar.clientWidth : 200\n\t\t\tconst iconCount = Math.max((Math.floor(menuBarWidth / 44) - 2), 0)\n\t\t\treturn iconCount\n\t\t},\n\t\timagePath() {\n\t\t\treturn this.lastImagePath\n\t\t\t\t|| this.filePath.split('/').slice(0, -1).join('/')\n\t\t},\n\t},\n\tmounted() {\n\t\twindow.addEventListener('resize', this.getWindowWidth)\n\t\tthis.checkInterval = setInterval(() => {\n\t\t\tconst isWidthAvailable = (this.$refs.menubar && this.$refs.menubar.clientWidth > 0)\n\t\t\tif (this.isRichEditor && isWidthAvailable) {\n\t\t\t\tthis.redrawMenuBar()\n\t\t\t}\n\t\t\tif (!this.isRichEditor || isWidthAvailable) {\n\t\t\t\tclearInterval(this.checkInterval)\n\t\t\t}\n\t\t}, 100)\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this.getWindowWidth)\n\t},\n\tmethods: {\n\t\tredrawMenuBar() {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.getWindowWidth()\n\t\t\t\tthis.forceRecompute++\n\t\t\t})\n\t\t},\n\t\tclickIcon(commands, icon) {\n\t\t\treturn icon.action(commands)\n\t\t},\n\t\tgetWindowWidth(event) {\n\t\t\tthis.windowWidth = document.documentElement.clientWidth\n\t\t},\n\t\tgetWindowHeight(event) {\n\t\t\tthis.windowHeight = document.documentElement.clientHeight\n\t\t},\n\t\thideChildMenu(icon) {\n\t\t\tthis.$set(this.submenuVisibility, icon.label, false)\n\t\t},\n\t\ttoggleChildMenu(icon) {\n\t\t\tconst lastValue = Object.prototype.hasOwnProperty.call(this.submenuVisibility, icon.label) ? this.submenuVisibility[icon.label] : false\n\t\t\tthis.$set(this.submenuVisibility, icon.label, !lastValue)\n\t\t},\n\t\tshowImagePrompt(command) {\n\t\t\tconst currentUser = getCurrentUser()\n\t\t\tif (!currentUser) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst _command = command\n\t\t\tOC.dialogs.filepicker(t('text', 'Insert an image'), (file) => {\n\t\t\t\tconst client = OC.Files.getClient()\n\t\t\t\tclient.getFileInfo(file).then((_status, fileInfo) => {\n\t\t\t\t\tthis.lastImagePath = fileInfo.path\n\n\t\t\t\t\t// dirty but works so we have the information stored in markdown\n\t\t\t\t\tconst appendMeta = {\n\t\t\t\t\t\tmimetype: fileInfo.mimetype,\n\t\t\t\t\t\thasPreview: fileInfo.hasPreview,\n\t\t\t\t\t}\n\t\t\t\t\tconst path = optimalPath(this.filePath, `${fileInfo.path}/${fileInfo.name}`)\n\t\t\t\t\tconst encodedPath = path.split('/').map(encodeURIComponent).join('/')\n\t\t\t\t\tconst meta = Object.entries(appendMeta).map(([key, val]) => `${key}=${encodeURIComponent(val)}`).join('&')\n\t\t\t\t\tconst src = `${encodedPath}?fileId=${fileInfo.id}#${meta}`\n\n\t\t\t\t\t_command({\n\t\t\t\t\t\tsrc,\n\t\t\t\t\t\talt: fileInfo.name,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t}, false, [], true, undefined, this.imagePath)\n\t\t},\n\t\tshowLinkPrompt(command) {\n\t\t\tconst currentUser = OC.getCurrentUser()\n\t\t\tif (!currentUser) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst _command = command\n\t\t\tOC.dialogs.filepicker('Insert a link', (file) => {\n\t\t\t\tconst client = OC.Files.getClient()\n\t\t\t\tclient.getFileInfo(file).then((_status, fileInfo) => {\n\t\t\t\t\tthis.lastLinkPath = fileInfo.path\n\t\t\t\t\tconst path = this.optimalPathTo(`${fileInfo.path}/${fileInfo.name}`)\n\t\t\t\t\tconst encodedPath = path.split('/').map(encodeURIComponent).join('/')\n\t\t\t\t\tconst href = `${encodedPath}?fileId=${fileInfo.id}`\n\n\t\t\t\t\t_command({\n\t\t\t\t\t\thref,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t}, false, [], true, undefined, this.linkPath)\n\t\t},\n\t\toptimalPathTo(targetFile) {\n\t\t\tconst absolutePath = targetFile.split('/')\n\t\t\tconst relativePath = this.relativePathTo(targetFile).split('/')\n\t\t\treturn relativePath.length < absolutePath.length\n\t\t\t\t? relativePath.join('/')\n\t\t\t\t: targetFile\n\t\t},\n\t\trelativePathTo(targetFile) {\n\t\t\tconst current = this.filePath.split('/')\n\t\t\tconst target = targetFile.split('/')\n\t\t\tcurrent.pop() // ignore filename\n\t\t\twhile (current[0] === target[0]) {\n\t\t\t\tcurrent.shift()\n\t\t\t\ttarget.shift()\n\t\t\t}\n\t\t\treturn current.fill('..').concat(target).join('/')\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.menubar {\n\t\tposition: fixed;\n\t\tposition: -webkit-sticky;\n\t\tposition: sticky;\n\t\ttop: 0;\n\t\tdisplay: flex;\n\t\tjustify-content: flex-end;\n\t\tz-index: 10010; // above modal-header so buttons are clickable\n\t\tbackground-color: var(--color-main-background-translucent);\n\t\theight: 44px;\n\n\t\t&.autohide {\n\t\t\tvisibility: hidden;\n\t\t\topacity: 0;\n\t\t\ttransition: visibility 0.2s 0.4s, opacity 0.2s 0.4s;\n\t\t\t&.is-focused {\n\t\t\t\tvisibility: visible;\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t\t.menubar-icons {\n\t\t\tflex-grow: 1;\n\t\t\tmargin-left: calc((100% - 660px) / 2);\n\t\t}\n\t\t@media (max-width: 660px) {\n\t\t\t.menubar-icons {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t}\n\t\t&::v-deep .action-item__menu ul {\n\t\t\tmax-height: calc(100vh - 88px);\n\t\t\toverflow: scroll;\n\t\t}\n\t}\n\n\t.menubar button {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tbackground-size: 16px;\n\t\tborder: 0;\n\t\tbackground-color: transparent;\n\t\topacity: .5;\n\t\tcolor: var(--color-main-text);\n\t\tbackground-position: center center;\n\t\tvertical-align: top;\n\t\t&:hover, &:focus, &:active {\n\t\t\tbackground-color: var(--color-background-dark);\n\t\t}\n\t\t&.is-active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\topacity: 1;\n\t\t}\n\n\t\t&.icon-undo, &.icon-redo {\n\t\t\topacity: .4;\n\t\t}\n\t}\n\n\t.menubar .submenu {\n\t\tdisplay: inline-block;\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tposition: relative;\n\t\tvertical-align: top;\n\t}\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBubble.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBubble.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<EditorMenuBubble v-slot=\"{ commands, isActive, getMarkAttrs, menu }\"\n\t\tclass=\"menububble\"\n\t\t:editor=\"editor\"\n\t\t@hide=\"hideLinkMenu\">\n\t\t<div class=\"menububble\" :class=\"{ 'is-active': menu.isActive }\" :style=\"`left: ${menu.left}px; bottom: ${menu.bottom}px;`\">\n\t\t\t<form v-if=\"linkMenuIsActive\" class=\"menububble__form\" @submit.prevent=\"setLinkUrl(commands.link, linkUrl)\">\n\t\t\t\t<input ref=\"linkInput\"\n\t\t\t\t\tv-model=\"linkUrl\"\n\t\t\t\t\tclass=\"menububble__input\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tplaceholder=\"https://\"\n\t\t\t\t\t@keydown.esc=\"hideLinkMenu\">\n\t\t\t\t<button class=\"menububble__button icon-confirm\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t@click=\"setLinkUrl(commands.link, linkUrl)\" />\n\t\t\t</form>\n\n\t\t\t<template v-else>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"menububble__button\"\n\t\t\t\t\t:class=\"{ 'is-active': isActive.link() }\"\n\t\t\t\t\t@click=\"showLinkMenu(getMarkAttrs('link'))\">\n\t\t\t\t\t<span v-tooltip=\"t('text', isActive.link() ? 'Update Link' : 'Add Link')\" class=\"icon-link\" />\n\t\t\t\t\t<span class=\"menububble__buttontext\">\n\t\t\t\t\t\t{{ t('text', isActive.link() ? 'Update Link' : 'Add Link') }}\n\t\t\t\t\t</span>\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\tclass=\"menububble__button\"\n\t\t\t\t\t:class=\"{ 'is-active': isActive.link() }\"\n\t\t\t\t\t@click=\"selectFile(commands.link)\">\n\t\t\t\t\t<span v-tooltip=\"t('text', 'Link file')\" class=\"icon-file\" />\n\t\t\t\t\t<span class=\"menububble__buttontext\">{{ t('text', 'Link file') }}</span>\n\t\t\t\t</button>\n\t\t\t</template>\n\t\t</div>\n\t</EditorMenuBubble>\n</template>\n\n<script>\nimport { EditorMenuBubble } from 'tiptap'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\nimport { optimalPath } from './../helpers/files'\n\nexport default {\n\tname: 'MenuBubble',\n\tcomponents: {\n\t\tEditorMenuBubble,\n\t},\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\tprops: {\n\t\teditor: {\n\t\t\ttype: Object,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t\tfilePath: {\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata: () => {\n\t\treturn {\n\t\t\tlinkUrl: null,\n\t\t\tlinkMenuIsActive: false,\n\t\t}\n\t},\n\tmethods: {\n\t\tshowLinkMenu(attrs) {\n\t\t\tthis.linkUrl = attrs.href\n\t\t\tthis.linkMenuIsActive = true\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.linkInput.focus()\n\t\t\t})\n\t\t},\n\t\thideLinkMenu() {\n\t\t\tthis.linkUrl = null\n\t\t\tthis.linkMenuIsActive = false\n\t\t},\n\t\tselectFile(command) {\n\t\t\tconst currentUser = OC.getCurrentUser()\n\t\t\tif (!currentUser) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst startPath = this.filePath.split('/').slice(0, -1).join('/')\n\t\t\tOC.dialogs.filepicker(t('text', 'Select file to link to'), (file) => {\n\t\t\t\tconst client = OC.Files.getClient()\n\t\t\t\tclient.getFileInfo(file).then((_status, fileInfo) => {\n\t\t\t\t\tconst path = optimalPath(this.filePath, `${fileInfo.path}/${fileInfo.name}`)\n\t\t\t\t\tconst encodedPath = path.split('/').map(encodeURIComponent).join('/')\n\t\t\t\t\tcommand({ href: `${encodedPath}?fileId=${fileInfo.id}` })\n\t\t\t\t\tthis.hideLinkMenu()\n\t\t\t\t})\n\t\t\t}, false, [], true, undefined, startPath)\n\t\t},\n\t\tsetLinkUrl(command, url) {\n\t\t\t// Heuristics for determining if we need a https:// prefix.\n\t\t\tconst noPrefixes = [\n\t\t\t\t/^[a-zA-Z]+:/, // url with protocol (\"mailTo:email@domain.tld\")\n\t\t\t\t/^\\//, // absolute path\n\t\t\t\t/\\?fileId=/, // relative link with fileId\n\t\t\t\t/^\\.\\.?\\//, // relative link starting with ./ or ../\n\t\t\t\t/^[^.]*[/$]/, // no dots before first '/' - not a domain name\n\t\t\t\t/^#/, // url fragment\n\t\t\t]\n\t\t\tif (url && !noPrefixes.find(regex => url.match(regex))) {\n\t\t\t\turl = 'https://' + url\n\t\t\t}\n\t\t\tcommand({ href: url })\n\t\t\tthis.hideLinkMenu()\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.menububble {\n\t\tposition: absolute;\n\t\tdisplay: flex;\n\t\tz-index: 10020;\n\t\tbackground: var(--color-main-background-translucent);\n\t\tbox-shadow: 0 1px 5px var(--color-box-shadow);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: 0;\n\t\tmargin-bottom: 0.4rem;\n\t\tvisibility: hidden;\n\t\topacity: 0;\n\t\ttransform: translateX(-50%);\n\t\ttransition: opacity 0.2s, visibility 0.2s;\n\n\t\t&.is-active {\n\t\t\topacity: 1;\n\t\t\tvisibility: visible;\n\t\t}\n\n\t\t&__button {\n\t\t\tdisplay: block;\n\t\t\tborder: 0;\n\t\t\tpadding: 0.3rem 0.7rem;\n\t\t\tmargin: 0;\n\t\t\tmargin-right: 0.2rem;\n\t\t\tborder-radius: var(--border-radius);\n\t\t\tcursor: pointer;\n\n\t\t\t&:last-child {\n\t\t\t\tmargin-right: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__buttontext {\n\t\t\tpadding: 0.4rem;\n\t\t\tpadding-right: 0;\n\t\t}\n\n\t\t&__form {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t}\n\n\t\t&__input {\n\t\t\tfont: inherit;\n\t\t\tborder: none;\n\t\t\tbackground: transparent;\n\t\t\tmin-width: 150px;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichWorkspace.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichWorkspace.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div v-if=\"enabled\" id=\"rich-workspace\" :class=\"{'icon-loading': !loaded || !ready, 'focus': focus, 'dark': darkTheme, 'creatable': canCreate}\">\n\t\t<div v-if=\"showEmptyWorkspace\" class=\"empty-workspace\" @click=\"createNew\">\n\t\t\t<p class=\"placeholder\">\n\t\t\t\t{{ t('text', 'Add notes, lists or links …') }}\n\t\t\t</p>\n\t\t</div>\n\n\t\t<EditorWrapper v-if=\"file\"\n\t\t\tv-show=\"ready\"\n\t\t\t:key=\"file.id\"\n\t\t\t:file-id=\"file.id\"\n\t\t\t:relative-path=\"file.path\"\n\t\t\t:share-token=\"shareToken\"\n\t\t\t:active=\"true\"\n\t\t\t:autohide=\"true\"\n\t\t\t:mime=\"file.mimetype\"\n\t\t\t:autofocus=\"autofocus\"\n\t\t\t@ready=\"ready=true\"\n\t\t\t@focus=\"focus=true\"\n\t\t\t@blur=\"unfocus\"\n\t\t\t@error=\"reset\" />\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { subscribe } from '@nextcloud/event-bus'\n\nconst IS_PUBLIC = !!(document.getElementById('isPublic'))\nconst WORKSPACE_URL = generateOcsUrl('apps/text' + (IS_PUBLIC ? '/public' : ''), 2) + 'workspace'\n\nexport default {\n\tname: 'RichWorkspace',\n\tcomponents: {\n\t\tEditorWrapper: () => import(/* webpackChunkName: \"editor\" */'./../components/EditorWrapper'),\n\t},\n\tprops: {\n\t\tpath: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tfocus: false,\n\t\t\tfolder: null,\n\t\t\tfile: null,\n\t\t\tloaded: false,\n\t\t\tready: false,\n\t\t\tautofocus: false,\n\t\t\tdarkTheme: OCA.Accessibility && OCA.Accessibility.theme === 'dark',\n\t\t\tenabled: OCA.Text.RichWorkspaceEnabled,\n\t\t}\n\t},\n\tcomputed: {\n\t\tshareToken() {\n\t\t\treturn document.getElementById('sharingToken') ? document.getElementById('sharingToken').value : null\n\t\t},\n\t\tcanCreate() {\n\t\t\treturn !!(this.folder && (this.folder.permissions & OC.PERMISSION_CREATE))\n\t\t},\n\t\tshowEmptyWorkspace() {\n\t\t\treturn (!this.file || (this.autofocus && !this.ready)) && this.canCreate\n\t\t},\n\t},\n\twatch: {\n\t\tpath() {\n\t\t\tthis.getFileInfo()\n\t\t},\n\t\tfocus(newValue) {\n\t\t\tif (!newValue) {\n\t\t\t\tdocument.querySelector('#editor').scrollTo(0, 0)\n\t\t\t}\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (this.enabled) {\n\t\t\tthis.getFileInfo()\n\t\t}\n\t\tsubscribe('Text::showRichWorkspace', () => {\n\t\t\tthis.enabled = true\n\t\t\tthis.getFileInfo()\n\t\t})\n\t\tsubscribe('Text::hideRichWorkspace', () => {\n\t\t\tthis.enabled = false\n\t\t})\n\t},\n\tmethods: {\n\t\tunfocus() {\n\t\t\t// setTimeout(() => this.focus = false, 2000)\n\t\t},\n\t\treset() {\n\t\t\tthis.file = null\n\t\t\tthis.focus = false\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.creating = false\n\t\t\t\tthis.getFileInfo()\n\t\t\t})\n\t\t},\n\t\tgetFileInfo() {\n\t\t\tthis.loaded = false\n\t\t\tthis.autofocus = false\n\t\t\tthis.ready = false\n\t\t\tconst params = { path: this.path }\n\t\t\tif (IS_PUBLIC) {\n\t\t\t\tparams.shareToken = this.shareToken\n\t\t\t}\n\t\t\treturn axios.get(WORKSPACE_URL, { params }).then((response) => {\n\t\t\t\tconst data = response.data.ocs.data\n\t\t\t\tthis.folder = data.folder || null\n\t\t\t\tthis.file = data.file\n\t\t\t\tthis.editing = true\n\t\t\t\tthis.loaded = true\n\t\t\t\treturn true\n\t\t\t}).catch((error) => {\n\t\t\t\tif (error.response.data.ocs && error.response.data.ocs.data.folder) {\n\t\t\t\t\tthis.folder = error.response.data.ocs.data.folder\n\t\t\t\t} else {\n\t\t\t\t\tthis.folder = null\n\t\t\t\t}\n\t\t\t\tthis.file = null\n\t\t\t\tthis.loaded = true\n\t\t\t\tthis.ready = true\n\t\t\t\tthis.creating = false\n\t\t\t\treturn false\n\t\t\t})\n\t\t},\n\t\tcreateNew() {\n\t\t\tif (this.creating) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.creating = true\n\t\t\tthis.getFileInfo().then((workspaceFileExists) => {\n\t\t\t\tthis.autofocus = true\n\t\t\t\tif (!workspaceFileExists) {\n\t\t\t\t\twindow.FileList.createFile('Readme.md', { scrollTo: false, animate: false }).then((status, data) => {\n\t\t\t\t\t\tthis.getFileInfo()\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t#rich-workspace {\n\t\tpadding: 0 60px;\n\t\t/* Slightly reduce vertical space */\n\t\tmargin-bottom: -24px;\n\t\ttext-align: left;\n\t\tmax-height: 0;\n\t\ttransition: max-height 0.5s cubic-bezier(0, 1, 0, 1);\n\t\t&.creatable {\n\t\t\tmin-height: 90px;\n\t\t}\n\t}\n\n\t/* For subfolders, where there are no Recommendations */\n\t#rich-workspace:only-child {\n\t\tmargin-bottom: 0;\n\t}\n\n\t.empty-workspace {\n\t\tpadding-top: 43px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\theight: 0;\n\t}\n\n\t#rich-workspace::v-deep div[contenteditable=false] {\n\t\twidth: 100%;\n\t\tpadding: 0px;\n\t\tbackground-color: var(--color-main-background);\n\t\topacity: 1;\n\t\tborder: none;\n\t}\n\n\t#rich-workspace::v-deep #editor-container {\n\t\theight: 100%;\n\t\tposition: unset !important;\n\t\ttop: auto !important;\n\t}\n\n\t#rich-workspace::v-deep #editor-wrapper {\n\t\tposition: unset !important;\n\t\toverflow: visible;\n\t}\n\n\t#rich-workspace::v-deep #editor {\n\t\toverflow: scroll !important;\n\t\tmax-height: 50vh;\n\t}\n\n\t#rich-workspace::v-deep #editor-wrapper .ProseMirror {\n\t\tpadding: 0px;\n\t\tmargin: 0;\n\t}\n\n\t#rich-workspace::v-deep .menubar {\n\t\tz-index: 50;\n\t\t/* Slightly reduce vertical space */\n\t\tmargin-bottom: -10px;\n\t}\n\n\t#rich-workspace::v-deep .menubar .menubar-icons {\n\t\tmargin-left: 0;\n\t}\n\n\t#rich-workspace::v-deep .editor__content {\n\t\tmargin: 0;\n\t}\n\n\t#rich-workspace.focus {\n\t\tmax-height: 50vh;\n\t}\n\n\t#rich-workspace:not(.focus) {\n\t\tmax-height: 30vh;\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t}\n\n\t#rich-workspace:not(.focus):not(.icon-loading):after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tz-index: 1;\n\t\tbottom: 0;\n\t\tleft: 0;\n\t\tpointer-events: none;\n\t\tbackground-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), var(--color-main-background));\n\t\twidth: 100%;\n\t\theight: 4em;\n\t}\n\n\t#rich-workspace.dark:not(.focus):not(.icon-loading):after {\n\t\tbackground-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), var(--color-main-background));\n\t}\n\n\t@media only screen and (max-width: 1024px) {\n\t\t#rich-workspace:not(.focus) {\n\t\t\tmax-height: 30vh;\n\t\t}\n\t}\n\n\thtml.ie {\n\t\t#rich-workspace::v-deep {\n\t\t\t#editor-container {\n\t\t\t\tposition: initial;\n\t\t\t}\n\n\t\t\t#editor-wrapper {\n\t\t\t\tposition: relative !important;\n\t\t\t\ttop: auto !important;\n\t\t\t}\n\n\t\t\t#editor {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\toverflow: hidden !important;\n\t\t\t}\n\n\t\t\t.menubar {\n\t\t\t\tposition: relative;\n\t\t\t\toverflow: hidden;\n\t\t\t\tflex-shrink: 0;\n\t\t\t\theight: 44px;\n\t\t\t\ttop: auto;\n\t\t\t}\n\n\t\t\t#editor > div:nth-child(2) {\n\t\t\t\tmin-height: 44px;\n\t\t\t\toverflow-x: hidden;\n\t\t\t\toverflow-y: auto;\n\t\t\t\tflex-shrink: 1;\n\t\t\t}\n\t\t}\n\t}\n\n</style>\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBar.vue?vue&type=style&index=0&id=1af234ae&scoped=true&lang=scss&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7023bae6\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBubble.vue?vue&type=style&index=0&id=66ed9266&scoped=true&lang=scss&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"8904371c\", content, true, {});","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.enabled)?_c('div',{class:{'icon-loading': !_vm.loaded || !_vm.ready, 'focus': _vm.focus, 'dark': _vm.darkTheme, 'creatable': _vm.canCreate},attrs:{\"id\":\"rich-workspace\"}},[(_vm.showEmptyWorkspace)?_c('div',{staticClass:\"empty-workspace\",on:{\"click\":_vm.createNew}},[_c('p',{staticClass:\"placeholder\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('text', 'Add notes, lists or links …'))+\"\\n\\t\\t\")])]):_vm._e(),_vm._v(\" \"),(_vm.file)?_c('EditorWrapper',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.ready),expression:\"ready\"}],key:_vm.file.id,attrs:{\"file-id\":_vm.file.id,\"relative-path\":_vm.file.path,\"share-token\":_vm.shareToken,\"active\":true,\"autohide\":true,\"mime\":_vm.file.mimetype,\"autofocus\":_vm.autofocus},on:{\"ready\":function($event){_vm.ready=true},\"focus\":function($event){_vm.focus=true},\"blur\":_vm.unfocus,\"error\":_vm.reset}}):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst openMimetypesMarkdown = [\n\t'text/markdown',\n]\n\nconst openMimetypesPlainText = [\n\t'text/plain',\n\t'application/cmd',\n\t'application/x-empty',\n\t'application/x-msdos-program',\n\t'application/javascript',\n\t'application/json',\n\t'application/x-perl',\n\t'application/x-php',\n\t'application/x-tex',\n\t'application/xml',\n\t'application/yaml',\n\t'text/css',\n\t'text/csv',\n\t'text/html',\n\t'text/x-c',\n\t'text/x-c++src',\n\t'text/x-h',\n\t'text/x-java-source',\n\t'text/x-ldif',\n\t'text/x-python',\n\t'text/x-shellscript',\n]\n\nconst openMimetypes = [...openMimetypesMarkdown, ...openMimetypesPlainText]\n\nexport {\n\topenMimetypes,\n\topenMimetypesMarkdown,\n\topenMimetypesPlainText,\n}\n","import { render, staticRenderFns } from \"./MenuBar.vue?vue&type=template&id=1af234ae&scoped=true&\"\nimport script from \"./MenuBar.vue?vue&type=script&lang=js&\"\nexport * from \"./MenuBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MenuBar.vue?vue&type=style&index=0&id=1af234ae&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1af234ae\",\n null\n \n)\n\nexport default component.exports","/*\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default [\n\t{\n\t\tlabel: t('text', 'Undo'),\n\t\tclass: 'icon-undo',\n\t\tisActive: (isActive) => {},\n\t\taction: (command) => command.undo(),\n\t},\n\t{\n\t\tlabel: t('text', 'Redo'),\n\t\tclass: 'icon-redo',\n\t\tisActive: (isActive) => {},\n\t\taction: (command) => command.redo(),\n\t},\n\t{\n\t\tlabel: t('text', 'Bold'),\n\t\tclass: 'icon-bold',\n\t\tisActive: (isActive) => isActive.strong(),\n\t\taction: (command) => {\n\t\t\treturn command.strong()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Italic'),\n\t\tclass: 'icon-italic',\n\t\tisActive: (isActive) => isActive.em(),\n\t\taction: (command) => {\n\t\t\treturn command.em()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Strikethrough'),\n\t\tclass: 'icon-strike',\n\t\tisActive: (isActive) => isActive.strike(),\n\t\taction: (command) => {\n\t\t\treturn command.strike()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Headings'),\n\t\tvisible: false,\n\t\tchildren: [\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 1'),\n\t\t\t\tclass: 'icon-h1',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 1 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 1 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 2'),\n\t\t\t\tclass: 'icon-h2',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 2 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 2 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 3'),\n\t\t\t\tclass: 'icon-h3',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 3 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 3 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 4'),\n\t\t\t\tclass: 'icon-h4',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 4 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 4 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 5'),\n\t\t\t\tclass: 'icon-h5',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 5 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 5 })\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t('text', 'Heading 6'),\n\t\t\t\tclass: 'icon-h6',\n\t\t\t\tisActive: (isActive) => isActive.heading({ level: 6 }),\n\t\t\t\taction: (command) => {\n\t\t\t\t\treturn command.heading({ level: 6 })\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tlabel: t('text', 'Unordered list'),\n\t\tclass: 'icon-ul',\n\t\tisActive: (isActive) => isActive.bullet_list(),\n\t\taction: (command) => {\n\t\t\treturn command.bullet_list_item()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Ordered list'),\n\t\tclass: 'icon-ol',\n\t\tisActive: (isActive) => isActive.ordered_list(),\n\t\taction: (command) => {\n\t\t\treturn command.ordered_list()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'ToDo list'),\n\t\tclass: 'icon-checkmark',\n\t\tisActive: (isActive) => false,\n\t\taction: (command) => command.todo_item(),\n\t},\n\t{\n\t\tlabel: t('text', 'Blockquote'),\n\t\tclass: 'icon-quote',\n\t\tisActive: (isActive) => isActive.blockquote(),\n\t\taction: (command) => {\n\t\t\treturn command.blockquote()\n\t\t},\n\t},\n\t{\n\t\tlabel: t('text', 'Code block'),\n\t\tclass: 'icon-code',\n\t\tisActive: (isActive) => isActive.code_block(),\n\t\taction: (command) => {\n\t\t\treturn command.code_block()\n\t\t},\n\t},\n]\n","export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBar.vue?vue&type=style&index=0&id=1af234ae&scoped=true&lang=scss&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".menubar[data-v-1af234ae]{position:fixed;position:-webkit-sticky;position:sticky;top:0;display:flex;justify-content:flex-end;z-index:10010;background-color:var(--color-main-background-translucent);height:44px}.menubar.autohide[data-v-1af234ae]{visibility:hidden;opacity:0;transition:visibility 0.2s 0.4s, opacity 0.2s 0.4s}.menubar.autohide.is-focused[data-v-1af234ae]{visibility:visible;opacity:1}.menubar .menubar-icons[data-v-1af234ae]{flex-grow:1;margin-left:calc((100% - 660px) / 2)}@media (max-width: 660px){.menubar .menubar-icons[data-v-1af234ae]{margin-left:0}}.menubar[data-v-1af234ae] .action-item__menu ul{max-height:calc(100vh - 88px);overflow:scroll}.menubar button[data-v-1af234ae]{width:44px;height:44px;margin:0;background-size:16px;border:0;background-color:transparent;opacity:.5;color:var(--color-main-text);background-position:center center;vertical-align:top}.menubar button[data-v-1af234ae]:hover,.menubar button[data-v-1af234ae]:focus,.menubar button[data-v-1af234ae]:active{background-color:var(--color-background-dark)}.menubar button.is-active[data-v-1af234ae],.menubar button[data-v-1af234ae]:hover,.menubar button[data-v-1af234ae]:focus{opacity:1}.menubar button.icon-undo[data-v-1af234ae],.menubar button.icon-redo[data-v-1af234ae]{opacity:.4}.menubar .submenu[data-v-1af234ae]{display:inline-block;width:44px;height:44px;position:relative;vertical-align:top}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import { render, staticRenderFns } from \"./MenuBubble.vue?vue&type=template&id=66ed9266&scoped=true&\"\nimport script from \"./MenuBubble.vue?vue&type=script&lang=js&\"\nexport * from \"./MenuBubble.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MenuBubble.vue?vue&type=style&index=0&id=66ed9266&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"66ed9266\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MenuBubble.vue?vue&type=style&index=0&id=66ed9266&scoped=true&lang=scss&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".menububble[data-v-66ed9266]{position:absolute;display:flex;z-index:10020;background:var(--color-main-background-translucent);box-shadow:0 1px 5px var(--color-box-shadow);border-radius:var(--border-radius);padding:0;margin-bottom:0.4rem;visibility:hidden;opacity:0;transform:translateX(-50%);transition:opacity 0.2s, visibility 0.2s}.menububble.is-active[data-v-66ed9266]{opacity:1;visibility:visible}.menububble__button[data-v-66ed9266]{display:block;border:0;padding:0.3rem 0.7rem;margin:0;margin-right:0.2rem;border-radius:var(--border-radius);cursor:pointer}.menububble__button[data-v-66ed9266]:last-child{margin-right:0}.menububble__buttontext[data-v-66ed9266]{padding:0.4rem;padding-right:0}.menububble__form[data-v-66ed9266]{display:flex;align-items:center}.menububble__input[data-v-66ed9266]{font:inherit;border:none;background:transparent;min-width:150px}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('EditorMenuBar',{attrs:{\"editor\":_vm.editor},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar commands = ref.commands;\nvar isActive = ref.isActive;\nvar focused = ref.focused;\nreturn [_c('div',{staticClass:\"menubar\",class:{ 'is-focused': focused, 'autohide': _vm.autohide }},[(_vm.isRichEditor)?_c('div',{ref:\"menubar\",staticClass:\"menubar-icons\"},[_vm._l((_vm.allIcons),function(icon,$index){return [(icon.class)?_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:($index < _vm.iconCount),expression:\"$index < iconCount\"}],key:icon.label,class:_vm.getIconClasses(isActive, icon),attrs:{\"title\":icon.label},on:{\"click\":function($event){return _vm.clickIcon(commands, icon)}}}):[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:($index < _vm.iconCount || !icon.class),expression:\"$index < iconCount || !icon.class\"},{name:\"click-outside\",rawName:\"v-click-outside\",value:(function () { return _vm.hideChildMenu(icon); }),expression:\"() => hideChildMenu(icon)\"}],key:icon.label,staticClass:\"submenu\"},[_c('button',{class:_vm.childIconClasses(isActive, icon.children ),attrs:{\"title\":icon.label},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleChildMenu(icon)}}}),_vm._v(\" \"),_c('div',{staticClass:\"popovermenu menu-center\",class:{open: _vm.isChildMenuVisible(icon)}},[_c('PopoverMenu',{attrs:{\"menu\":_vm.childPopoverMenu(isActive, commands, icon.children, icon)}})],1)])]]}),_vm._v(\" \"),_c('Actions',[_vm._l((_vm.allIcons),function(icon,$index){return [(icon.class && _vm.isHiddenInMenu($index))?_c('ActionButton',{key:icon.class,attrs:{\"icon\":icon.class},on:{\"click\":function($event){return _vm.clickIcon(commands, icon)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(icon.label)+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()]})],2)],2):_vm._e(),_vm._v(\" \"),_vm._t(\"default\",[_vm._v(\"\\n\\t\\t\\tLeft side\\n\\t\\t\")])],2)]}}],null,true)})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('EditorMenuBubble',{staticClass:\"menububble\",attrs:{\"editor\":_vm.editor},on:{\"hide\":_vm.hideLinkMenu},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar commands = ref.commands;\nvar isActive = ref.isActive;\nvar getMarkAttrs = ref.getMarkAttrs;\nvar menu = ref.menu;\nreturn [_c('div',{staticClass:\"menububble\",class:{ 'is-active': menu.isActive },style:((\"left: \" + (menu.left) + \"px; bottom: \" + (menu.bottom) + \"px;\"))},[(_vm.linkMenuIsActive)?_c('form',{staticClass:\"menububble__form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.setLinkUrl(commands.link, _vm.linkUrl)}}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.linkUrl),expression:\"linkUrl\"}],ref:\"linkInput\",staticClass:\"menububble__input\",attrs:{\"type\":\"text\",\"placeholder\":\"https://\"},domProps:{\"value\":(_vm.linkUrl)},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.hideLinkMenu($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.linkUrl=$event.target.value}}}),_vm._v(\" \"),_c('button',{staticClass:\"menububble__button icon-confirm\",attrs:{\"type\":\"button\",\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.setLinkUrl(commands.link, _vm.linkUrl)}}})]):[_c('button',{staticClass:\"menububble__button\",class:{ 'is-active': isActive.link() },on:{\"click\":function($event){_vm.showLinkMenu(getMarkAttrs('link'))}}},[_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.t('text', isActive.link() ? 'Update Link' : 'Add Link')),expression:\"t('text', isActive.link() ? 'Update Link' : 'Add Link')\"}],staticClass:\"icon-link\"}),_vm._v(\" \"),_c('span',{staticClass:\"menububble__buttontext\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('text', isActive.link() ? 'Update Link' : 'Add Link'))+\"\\n\\t\\t\\t\\t\")])]),_vm._v(\" \"),_c('button',{staticClass:\"menububble__button\",class:{ 'is-active': isActive.link() },on:{\"click\":function($event){return _vm.selectFile(commands.link)}}},[_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.t('text', 'Link file')),expression:\"t('text', 'Link file')\"}],staticClass:\"icon-file\"}),_vm._v(\" \"),_c('span',{staticClass:\"menububble__buttontext\"},[_vm._v(_vm._s(_vm.t('text', 'Link file')))])])]],2)]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichWorkspace.vue?vue&type=style&index=0&id=01f36cf5&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"55d37b72\", content, true, {});"],"sourceRoot":""} \ No newline at end of file