{"version":3,"mappings":"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","names":["TextSvg","FILE_ACTION_IDENTIFIER","registerFileActionFallback","sharingToken","getSharingToken","filesTable","ViewerRoot","registerAction","mime","imagePath","filename","file","__vitePreload","n","imports","path","Vue","Editor","h","self","i","openMimetypes","addMenuRichWorkspace","descriptionFile","loadState","addNewFileMenuEntry","NewMenuEntryCategory","context","Permission","content","node","showError","source","response","axios","fileid","File","getCurrentUser","showSuccess","emit","FilesHeaderRichWorkspaceView","FilesHeaderRichWorkspaceInstance","latestFolder","enabled","_","view","FilesWorkspaceHeader","Header","el","folder","hasRichWorkspace","store"],"ignoreList":[0],"sources":["../node_modules/@mdi/svg/svg/text.svg?raw","../src/helpers/files.js"],"sourcesContent":["export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"mdi-text\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M21,6V8H3V6H21M3,18H12V16H3V18M3,13H21V11H3V13Z\\\" /></svg>\"","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { emit } from '@nextcloud/event-bus'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getSharingToken } from '@nextcloud/sharing/public'\nimport { Header, addNewFileMenuEntry, Permission, File, NewMenuEntryCategory } from '@nextcloud/files'\nimport { imagePath } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport { showSuccess, showError } from '@nextcloud/dialogs'\nimport axios from '@nextcloud/axios'\n\nimport TextSvg from '@mdi/svg/svg/text.svg?raw'\n\nimport { openMimetypes } from './mime.js'\nimport store from '../store/index.js'\nimport Vue from 'vue'\n\nconst FILE_ACTION_IDENTIFIER = 'Edit with text app'\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 file'),\n\t\t\t\ttemplateName: t('text', 'New text file') + '.' + loadState('text', 'default_file_extension'),\n\t\t\t\ticonClass: 'icon-filetype-text',\n\t\t\t\tfileType: 'file',\n\t\t\t\tactionLabel: t('text', 'Create new text 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 = getSharingToken()\n\tconst filesTable = document.querySelector('#preview table.files-filestable')\n\tif (!sharingToken || !filesTable) {\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.vue'),\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: function(h) { // eslint-disable-line\n\t\t\t\t\t\t\tconst self = this\n\t\t\t\t\t\t\treturn h(Editor, {\n\t\t\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t\t\tfileId: file ? file.id : null,\n\t\t\t\t\t\t\t\t\tactive: true,\n\t\t\t\t\t\t\t\t\tshareToken: sharingToken,\n\t\t\t\t\t\t\t\t\trelativePath: path,\n\t\t\t\t\t\t\t\t\tmimeType: file.mimetype,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\ton: {\n\t\t\t\t\t\t\t\t\tclose: function() { // eslint-disable-line\n\t\t\t\t\t\t\t\t\t\tself.$destroy()\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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\nexport const addMenuRichWorkspace = () => {\n\tconst descriptionFile = t('text', 'Readme') + '.' + loadState('text', 'default_file_extension')\n\taddNewFileMenuEntry({\n\t\tid: 'rich-workspace-init',\n\t\tdisplayName: t('text', 'Add folder description'),\n\t\tcategory: NewMenuEntryCategory.Other,\n\t\tenabled(context) {\n\t\t\tif (Number(context.attributes['rich-workspace-file'])) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn (context.permissions & Permission.CREATE) !== 0\n\t\t},\n\t\ticonSvgInline: TextSvg,\n\t\tasync handler(context, content) {\n\t\t\tconst contentNames = content.map((node) => node.basename)\n\n\t\t\tif (contentNames.includes(descriptionFile)) {\n\t\t\t\tshowError(t('text', '\"{name}\" already exist!', { name: descriptionFile }))\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst source = context.encodedSource + '/' + encodeURIComponent(descriptionFile)\n\t\t\tconst response = await axios({\n\t\t\t\tmethod: 'PUT',\n\t\t\t\turl: source,\n\t\t\t\theaders: {\n\t\t\t\t\tOverwrite: 'F',\n\t\t\t\t},\n\t\t\t})\n\t\t\tconst fileid = parseInt(response.headers['oc-fileid'])\n\t\t\tconst file = new File({\n\t\t\t\tsource: context.source + '/' + descriptionFile,\n\t\t\t\tid: fileid,\n\t\t\t\tmtime: new Date(),\n\t\t\t\tmime: 'text/markdown',\n\t\t\t\towner: getCurrentUser()?.uid || null,\n\t\t\t\tpermissions: Permission.ALL,\n\t\t\t\troot: context?.root || '/files/' + getCurrentUser()?.uid,\n\t\t\t})\n\n\t\t\tshowSuccess(t('text', 'Created \"{name}\"', { name: descriptionFile }))\n\n\t\t\tcontext.attributes['rich-workspace-file'] = fileid\n\t\t\tcontext.attributes['rich-workspace'] = ''\n\n\t\t\temit('files:node:created', file)\n\t\t\temit('files:node:updated', context)\n\t\t},\n\t})\n}\n\nlet FilesHeaderRichWorkspaceView\nlet FilesHeaderRichWorkspaceInstance\nlet latestFolder\n\nfunction enabled(_, view) {\n\treturn ['files', 'favorites', 'public-share'].includes(view.id)\n}\n\nexport const FilesWorkspaceHeader = new Header({\n\tid: 'workspace',\n\torder: 10,\n\tenabled,\n\n\trender: async (el, folder) => {\n\t\tlatestFolder = folder\n\t\t// Import the RichWorkspace component only when needed\n\t\tif (!FilesHeaderRichWorkspaceView) {\n\t\t\tFilesHeaderRichWorkspaceView = (\n\t\t\t\tawait import('../views/RichWorkspace.vue')\n\t\t\t).default\n\t\t}\n\n\t\t// If an instance already exists, destroy it before creating a new one\n\t\tif (FilesHeaderRichWorkspaceInstance) {\n\t\t\tFilesHeaderRichWorkspaceInstance.$destroy()\n\t\t\tconsole.debug('Destroying existing FilesHeaderRichWorkspaceInstance')\n\t\t}\n\n\t\tconst hasRichWorkspace = !!latestFolder.attributes['rich-workspace-file']\n\t\tconst content = latestFolder.attributes['rich-workspace'] || ''\n\t\tconst path = latestFolder.path || ''\n\n\t\t// Create a new instance of the RichWorkspace component\n\t\tFilesHeaderRichWorkspaceInstance = new Vue({\n\t\t\textends: FilesHeaderRichWorkspaceView,\n\t\t\tpropsData: {\n\t\t\t\tcontent,\n\t\t\t\thasRichWorkspace,\n\t\t\t\tpath,\n\t\t\t},\n\t\t\tstore,\n\t\t}).$mount(el)\n\n\t\twindow.FilesHeaderRichWorkspaceInstance = FilesHeaderRichWorkspaceInstance\n\t},\n\n\tupdated(folder, view) {\n\t\tlatestFolder = folder\n\t\tif (!FilesHeaderRichWorkspaceInstance) {\n\t\t\tconsole.error('No vue instance found for FilesWorkspaceHeader')\n\t\t\treturn\n\t\t}\n\n\t\tconst hasRichWorkspace = !!folder.attributes['rich-workspace-file'] && enabled(folder, view)\n\t\tFilesHeaderRichWorkspaceInstance.hasRichWorkspace = hasRichWorkspace\n\t\tFilesHeaderRichWorkspaceInstance.content\n\t\t\t= folder.attributes['rich-workspace'] || ''\n\t\tFilesHeaderRichWorkspaceInstance.path = folder.path || ''\n\t},\n})\n\nexport {\n\tregisterFileActionFallback,\n\tregisterFileCreate,\n\tFILE_ACTION_IDENTIFIER,\n}\n"],"file":"js/files-C9yyb2pp.chunk.mjs"}