files_versions-files_versions.js.map 117 KB

1
  1. {"version":3,"file":"files_versions-files_versions.js?v=da7a1c9ed72f539454e0","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files/src/utils/fileUtils.ts","webpack:///nextcloud/apps/files_versions/src/utils/davClient.js","webpack:///nextcloud/apps/files_versions/src/utils/logger.js","webpack:///nextcloud/node_modules/vue-material-design-icons/BackupRestore.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/BackupRestore.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/BackupRestore.vue?6cf7","webpack:///nextcloud/node_modules/vue-material-design-icons/BackupRestore.vue?vue&type=template&id=25aaea72","webpack:///nextcloud/node_modules/vue-material-design-icons/Download.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Download.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Download.vue?b226","webpack:///nextcloud/node_modules/vue-material-design-icons/Download.vue?vue&type=template&id=b0ce3ea8","webpack:///nextcloud/node_modules/vue-material-design-icons/FileCompare.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/FileCompare.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/FileCompare.vue?5fdf","webpack:///nextcloud/node_modules/vue-material-design-icons/FileCompare.vue?vue&type=template&id=2810c319","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageOffOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageOffOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/ImageOffOutline.vue?e0b5","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageOffOutline.vue?vue&type=template&id=7d95c70e","webpack:///nextcloud/apps/files_sharing/src/lib/SharePermissionsToolBox.js","webpack:///nextcloud/apps/files_versions/src/components/Version.vue","webpack:///nextcloud/apps/files_versions/src/components/Version.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/files_versions/src/components/Version.vue?7b09","webpack://nextcloud/./apps/files_versions/src/components/Version.vue?0a31","webpack://nextcloud/./apps/files_versions/src/components/Version.vue?f787","webpack:///nextcloud/apps/files_versions/src/components/VirtualScrolling.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files_versions/src/components/VirtualScrolling.vue","webpack://nextcloud/./apps/files_versions/src/components/VirtualScrolling.vue?3e31","webpack://nextcloud/./apps/files_versions/src/components/VirtualScrolling.vue?fc23","webpack:///nextcloud/apps/files_versions/src/components/VersionLabelForm.vue","webpack:///nextcloud/apps/files_versions/src/components/VersionLabelForm.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files_versions/src/components/VersionLabelForm.vue?8728","webpack://nextcloud/./apps/files_versions/src/components/VersionLabelForm.vue?dbea","webpack:///nextcloud/apps/files_versions/src/views/VersionTab.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files_versions/src/views/VersionTab.vue","webpack:///nextcloud/apps/files_versions/src/utils/versions.ts","webpack:///nextcloud/apps/files_versions/src/utils/davRequest.js","webpack://nextcloud/./apps/files_versions/src/views/VersionTab.vue?492e","webpack://nextcloud/./apps/files_versions/src/views/VersionTab.vue?d7ee","webpack://nextcloud/./apps/files_versions/src/views/VersionTab.vue?4309","webpack:///nextcloud/apps/files_versions/src/files_versions_tab.js","webpack:///nextcloud/apps/files_versions/src/components/Version.vue?vue&type=style&index=0&id=24640189&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files_versions/src/components/VersionLabelForm.vue?vue&type=style&index=0&id=58311f0c&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files_versions/src/components/VirtualScrolling.vue?vue&type=style&index=0&id=11dbbae6&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files_versions/src/views/VersionTab.vue?vue&type=style&index=0&id=9f52be8e&prod&lang=scss","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\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 */\nimport { FileType } from '@nextcloud/files';\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n';\nexport const encodeFilePath = function (path) {\n const pathSections = (path.startsWith('/') ? path : `/${path}`).split('/');\n let relativePath = '';\n pathSections.forEach((section) => {\n if (section !== '') {\n relativePath += '/' + encodeURIComponent(section);\n }\n });\n return relativePath;\n};\n/**\n * Extract dir and name from file path\n *\n * @param {string} path the full path\n * @return {string[]} [dirPath, fileName]\n */\nexport const extractFilePaths = function (path) {\n const pathSections = path.split('/');\n const fileName = pathSections[pathSections.length - 1];\n const dirPath = pathSections.slice(0, pathSections.length - 1).join('/');\n return [dirPath, fileName];\n};\n/**\n * Generate a translated summary of an array of nodes\n * @param {Node[]} nodes the nodes to summarize\n * @return {string}\n */\nexport const getSummaryFor = (nodes) => {\n const fileCount = nodes.filter(node => node.type === FileType.File).length;\n const folderCount = nodes.filter(node => node.type === FileType.Folder).length;\n if (fileCount === 0) {\n return n('files', '{folderCount} folder', '{folderCount} folders', folderCount, { folderCount });\n }\n else if (folderCount === 0) {\n return n('files', '{fileCount} file', '{fileCount} files', fileCount, { fileCount });\n }\n if (fileCount === 1) {\n return n('files', '1 file and {folderCount} folder', '1 file and {folderCount} folders', folderCount, { folderCount });\n }\n if (folderCount === 1) {\n return n('files', '{fileCount} file and 1 folder', '{fileCount} files and 1 folder', fileCount, { fileCount });\n }\n return t('files', '{fileCount} files and {folderCount} folders', { fileCount, folderCount });\n};\n","/**\n * @copyright 2022 Louis Chemineau <mlouis@chmn.me>\n *\n * @author Louis Chemineau <mlouis@chmn.me>\n *\n * @license AGPL-3.0-or-later\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\nimport { createClient } from 'webdav'\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'\n\n// init webdav client\nconst rootPath = 'dav'\nconst remote = generateRemoteUrl(rootPath)\nconst client = createClient(remote)\n\n// set CSRF token header\nconst setHeaders = (token) => {\n client.setHeaders({\n // Add this so the server knows it is an request from the browser\n 'X-Requested-With': 'XMLHttpRequest',\n // Inject user auth\n requesttoken: token ?? '',\n })\n}\n\n// refresh headers when request token changes\nonRequestTokenUpdate(setHeaders)\nsetHeaders(getRequestToken())\n\nexport default client","/**\n * @copyright 2022 Louis Chemineau <mlouis@chmn.me>\n *\n * @author Louis Chemineau <mlouis@chmn.me>\n *\n * @license AGPL-3.0-or-later\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\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files_version')\n\t.detectUser()\n\t.build()\n","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon backup-restore-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"BackupRestoreIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./BackupRestore.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./BackupRestore.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./BackupRestore.vue?vue&type=template&id=25aaea72\"\nimport script from \"./BackupRestore.vue?vue&type=script&lang=js\"\nexport * from \"./BackupRestore.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon backup-restore-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Download.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Download.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon download-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"DownloadIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Download.vue?vue&type=template&id=b0ce3ea8\"\nimport script from \"./Download.vue?vue&type=script&lang=js\"\nexport * from \"./Download.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon download-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileCompare.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileCompare.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon file-compare-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M10,18H6V16H10V18M10,14H6V12H10V14M10,1V2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V23H12V1H10M20,8V20C20,21.11 19.11,22 18,22H14V20H18V11H14V9H18.5L14,4.5V2L20,8M16,14H14V12H16V14M16,18H14V16H16V18Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"FileCompareIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./FileCompare.vue?vue&type=template&id=2810c319\"\nimport script from \"./FileCompare.vue?vue&type=script&lang=js\"\nexport * from \"./FileCompare.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon file-compare-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,18H6V16H10V18M10,14H6V12H10V14M10,1V2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V23H12V1H10M20,8V20C20,21.11 19.11,22 18,22H14V20H18V11H14V9H18.5L14,4.5V2L20,8M16,14H14V12H16V14M16,18H14V16H16V18Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon image-off-outline-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M22 20.7L3.3 2L2 3.3L3 4.3V19C3 20.1 3.9 21 5 21H19.7L20.7 22L22 20.7M5 19V6.3L12.6 13.9L11.1 15.8L9 13.1L6 17H15.7L17.7 19H5M8.8 5L6.8 3H19C20.1 3 21 3.9 21 5V17.2L19 15.2V5H8.8\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ImageOffOutlineIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageOffOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageOffOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ImageOffOutline.vue?vue&type=template&id=7d95c70e\"\nimport script from \"./ImageOffOutline.vue?vue&type=script&lang=js\"\nexport * from \"./ImageOffOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon image-off-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M22 20.7L3.3 2L2 3.3L3 4.3V19C3 20.1 3.9 21 5 21H19.7L20.7 22L22 20.7M5 19V6.3L12.6 13.9L11.1 15.8L9 13.1L6 17H15.7L17.7 19H5M8.8 5L6.8 3H19C20.1 3 21 3.9 21 5V17.2L19 15.2V5H8.8\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\n *\n * @license AGPL-3.0-or-later\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 const ATOMIC_PERMISSIONS = {\n\tNONE: 0,\n\tREAD: 1,\n\tUPDATE: 2,\n\tCREATE: 4,\n\tDELETE: 8,\n\tSHARE: 16,\n}\n\nexport const BUNDLED_PERMISSIONS = {\n\tREAD_ONLY: ATOMIC_PERMISSIONS.READ,\n\tUPLOAD_AND_UPDATE: ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE,\n\tFILE_DROP: ATOMIC_PERMISSIONS.CREATE,\n\tALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE,\n\tALL_FILE: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.SHARE,\n}\n\n/**\n * Return whether a given permissions set contains some permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToCheck - the permissions to check.\n * @return {boolean}\n */\nexport function hasPermissions(initialPermissionSet, permissionsToCheck) {\n\treturn initialPermissionSet !== ATOMIC_PERMISSIONS.NONE && (initialPermissionSet & permissionsToCheck) === permissionsToCheck\n}\n\n/**\n * Return whether a given permissions set is valid.\n *\n * @param {number} permissionsSet - the permissions set.\n *\n * @return {boolean}\n */\nexport function permissionsSetIsValid(permissionsSet) {\n\t// Must have at least READ or CREATE permission.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && !hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.CREATE)) {\n\t\treturn false\n\t}\n\n\t// Must have READ permission if have UPDATE or DELETE.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && (\n\t\thasPermissions(permissionsSet, ATOMIC_PERMISSIONS.UPDATE) || hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.DELETE)\n\t)) {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n/**\n * Add some permissions to an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToAdd - the permissions to add.\n *\n * @return {number}\n */\nexport function addPermissions(initialPermissionSet, permissionsToAdd) {\n\treturn initialPermissionSet | permissionsToAdd\n}\n\n/**\n * Remove some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToSubtract - the permissions to remove.\n *\n * @return {number}\n */\nexport function subtractPermissions(initialPermissionSet, permissionsToSubtract) {\n\treturn initialPermissionSet & ~permissionsToSubtract\n}\n\n/**\n * Toggle some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {number}\n */\nexport function togglePermissions(initialPermissionSet, permissionsToToggle) {\n\tif (hasPermissions(initialPermissionSet, permissionsToToggle)) {\n\t\treturn subtractPermissions(initialPermissionSet, permissionsToToggle)\n\t} else {\n\t\treturn addPermissions(initialPermissionSet, permissionsToToggle)\n\t}\n}\n\n/**\n * Return whether some given permissions can be toggled from a permission set.\n *\n * @param {number} permissionSet - the initial permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {boolean}\n */\nexport function canTogglePermissions(permissionSet, permissionsToToggle) {\n\treturn permissionsSetIsValid(togglePermissions(permissionSet, permissionsToToggle))\n}\n","<!--\n - @copyright 2022 Carl Schwan <carl@carlschwan.eu>\n - @license AGPL-3.0-or-later\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<template>\n\t<NcListItem class=\"version\"\n\t\t:name=\"versionLabel\"\n\t\t:force-display-actions=\"true\"\n\t\t:data-files-versions-version=\"version.fileVersion\"\n\t\t@click=\"click\">\n\t\t<template #icon>\n\t\t\t<div v-if=\"!(loadPreview || previewLoaded)\" class=\"version__image\" />\n\t\t\t<img v-else-if=\"(isCurrent || version.hasPreview) && !previewErrored\"\n\t\t\t\t:src=\"version.previewUrl\"\n\t\t\t\talt=\"\"\n\t\t\t\tdecoding=\"async\"\n\t\t\t\tfetchpriority=\"low\"\n\t\t\t\tloading=\"lazy\"\n\t\t\t\tclass=\"version__image\"\n\t\t\t\t@load=\"previewLoaded = true\"\n\t\t\t\t@error=\"previewErrored = true\">\n\t\t\t<div v-else\n\t\t\t\tclass=\"version__image\">\n\t\t\t\t<ImageOffOutline :size=\"20\" />\n\t\t\t</div>\n\t\t</template>\n\t\t<template #subname>\n\t\t\t<div class=\"version__info\">\n\t\t\t\t<span :title=\"formattedDate\">{{ version.mtime | humanDateFromNow }}</span>\n\t\t\t\t<!-- Separate dot to improve alignement -->\n\t\t\t\t<span class=\"version__info__size\">•</span>\n\t\t\t\t<span class=\"version__info__size\">{{ version.size | humanReadableSize }}</span>\n\t\t\t</div>\n\t\t</template>\n\t\t<template #actions>\n\t\t\t<NcActionButton v-if=\"enableLabeling && hasUpdatePermissions\"\n\t\t\t\tdata-cy-files-versions-version-action=\"label\"\n\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t@click=\"labelUpdate\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Pencil :size=\"22\" />\n\t\t\t\t</template>\n\t\t\t\t{{ version.label === '' ? t('files_versions', 'Name this version') : t('files_versions', 'Edit version name') }}\n\t\t\t</NcActionButton>\n\t\t\t<NcActionButton v-if=\"!isCurrent && canView && canCompare\"\n\t\t\t\tdata-cy-files-versions-version-action=\"compare\"\n\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t@click=\"compareVersion\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<FileCompare :size=\"22\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('files_versions', 'Compare to current version') }}\n\t\t\t</NcActionButton>\n\t\t\t<NcActionButton v-if=\"!isCurrent && hasUpdatePermissions\"\n\t\t\t\tdata-cy-files-versions-version-action=\"restore\"\n\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t@click=\"restoreVersion\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<BackupRestore :size=\"22\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('files_versions', 'Restore version') }}\n\t\t\t</NcActionButton>\n\t\t\t<NcActionLink v-if=\"isDownloadable\"\n\t\t\t\tdata-cy-files-versions-version-action=\"download\"\n\t\t\t\t:href=\"downloadURL\"\n\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t:download=\"downloadURL\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Download :size=\"22\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('files_versions', 'Download version') }}\n\t\t\t</NcActionLink>\n\t\t\t<NcActionButton v-if=\"!isCurrent && enableDeletion && hasDeletePermissions\"\n\t\t\t\tdata-cy-files-versions-version-action=\"delete\"\n\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t@click=\"deleteVersion\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Delete :size=\"22\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('files_versions', 'Delete version') }}\n\t\t\t</NcActionButton>\n\t\t</template>\n\t</NcListItem>\n</template>\n\n<script>\nimport BackupRestore from 'vue-material-design-icons/BackupRestore.vue'\nimport Download from 'vue-material-design-icons/Download.vue'\nimport FileCompare from 'vue-material-design-icons/FileCompare.vue'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\nimport ImageOffOutline from 'vue-material-design-icons/ImageOffOutline.vue'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport NcListItem from '@nextcloud/vue/dist/Components/NcListItem.js'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip.js'\nimport moment from '@nextcloud/moment'\nimport { translate as t } from '@nextcloud/l10n'\nimport { joinPaths } from '@nextcloud/paths'\nimport { getRootUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport { Permission } from '@nextcloud/files'\n\nimport { hasPermissions } from '../../../files_sharing/src/lib/SharePermissionsToolBox.js'\n\nexport default {\n\tname: 'Version',\n\tcomponents: {\n\t\tNcActionLink,\n\t\tNcActionButton,\n\t\tNcListItem,\n\t\tBackupRestore,\n\t\tDownload,\n\t\tFileCompare,\n\t\tPencil,\n\t\tDelete,\n\t\tImageOffOutline,\n\t},\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\tfilters: {\n\t\t/**\n\t\t * @param {number} bytes\n\t\t * @return {string}\n\t\t */\n\t\thumanReadableSize(bytes) {\n\t\t\treturn OC.Util.humanFileSize(bytes)\n\t\t},\n\t\t/**\n\t\t * @param {number} timestamp\n\t\t * @return {string}\n\t\t */\n\t\thumanDateFromNow(timestamp) {\n\t\t\treturn moment(timestamp).fromNow()\n\t\t},\n\t},\n\tprops: {\n\t\t/** @type {Vue.PropOptions<import('../utils/versions.ts').Version>} */\n\t\tversion: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tisCurrent: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisFirstVersion: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tloadPreview: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tcanView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tcanCompare: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpreviewLoaded: false,\n\t\t\tpreviewErrored: false,\n\t\t\tcapabilities: loadState('core', 'capabilities', { files: { version_labeling: false, version_deletion: false } }),\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tversionLabel() {\n\t\t\tconst label = this.version.label ?? ''\n\n\t\t\tif (this.isCurrent) {\n\t\t\t\tif (label === '') {\n\t\t\t\t\treturn t('files_versions', 'Current version')\n\t\t\t\t} else {\n\t\t\t\t\treturn `${label} (${t('files_versions', 'Current version')})`\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.isFirstVersion && label === '') {\n\t\t\t\treturn t('files_versions', 'Initial version')\n\t\t\t}\n\n\t\t\treturn label\n\t\t},\n\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tdownloadURL() {\n\t\t\tif (this.isCurrent) {\n\t\t\t\treturn getRootUrl() + joinPaths('/remote.php/webdav', this.fileInfo.path, this.fileInfo.name)\n\t\t\t} else {\n\t\t\t\treturn getRootUrl() + this.version.url\n\t\t\t}\n\t\t},\n\n\t\t/** @return {string} */\n\t\tformattedDate() {\n\t\t\treturn moment(this.version.mtime).format('LLL')\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\tenableLabeling() {\n\t\t\treturn this.capabilities.files.version_labeling === true\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\tenableDeletion() {\n\t\t\treturn this.capabilities.files.version_deletion === true\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\thasDeletePermissions() {\n\t\t\treturn hasPermissions(this.fileInfo.permissions, Permission.DELETE)\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\thasUpdatePermissions() {\n\t\t\treturn hasPermissions(this.fileInfo.permissions, Permission.UPDATE)\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\tisDownloadable() {\n\t\t\tif ((this.fileInfo.permissions & Permission.READ) === 0) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// If the mount type is a share, ensure it got download permissions.\n\t\t\tif (this.fileInfo.mountType === 'shared') {\n\t\t\t\tconst downloadAttribute = this.fileInfo.shareAttributes.find((attribute) => attribute.scope === 'permissions' && attribute.key === 'download')\n\t\t\t\tif (downloadAttribute !== undefined && downloadAttribute.enabled === false) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true\n\t\t},\n\t},\n\tmethods: {\n\t\tlabelUpdate() {\n\t\t\tthis.$emit('label-update-request')\n\t\t},\n\n\t\trestoreVersion() {\n\t\t\tthis.$emit('restore', this.version)\n\t\t},\n\n\t\tdeleteVersion() {\n\t\t\tthis.$emit('delete', this.version)\n\t\t},\n\n\t\tclick() {\n\t\t\tif (!this.canView) {\n\t\t\t\twindow.location = this.downloadURL\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.$emit('click', { version: this.version })\n\t\t},\n\n\t\tcompareVersion() {\n\t\t\tif (!this.canView) {\n\t\t\t\tthrow new Error('Cannot compare version of this file')\n\t\t\t}\n\t\t\tthis.$emit('compare', { version: this.version })\n\t\t},\n\n\t\tt,\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.version {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\t&__info {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\talign-items: center;\n\t\tgap: 0.5rem;\n\n\t\t&__size {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\t}\n\n\t&__image {\n\t\twidth: 3rem;\n\t\theight: 3rem;\n\t\tborder: 1px solid var(--color-border);\n\t\tborder-radius: var(--border-radius-large);\n\n\t\t// Useful to display no preview icon.\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tcolor: var(--color-text-light);\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Version.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!./Version.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../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!./Version.vue?vue&type=style&index=0&id=24640189&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../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!./Version.vue?vue&type=style&index=0&id=24640189&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Version.vue?vue&type=template&id=24640189&scoped=true\"\nimport script from \"./Version.vue?vue&type=script&lang=js\"\nexport * from \"./Version.vue?vue&type=script&lang=js\"\nimport style0 from \"./Version.vue?vue&type=style&index=0&id=24640189&prod&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 \"24640189\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcListItem',{staticClass:\"version\",attrs:{\"name\":_vm.versionLabel,\"force-display-actions\":true,\"data-files-versions-version\":_vm.version.fileVersion},on:{\"click\":_vm.click},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(!(_vm.loadPreview || _vm.previewLoaded))?_c('div',{staticClass:\"version__image\"}):((_vm.isCurrent || _vm.version.hasPreview) && !_vm.previewErrored)?_c('img',{staticClass:\"version__image\",attrs:{\"src\":_vm.version.previewUrl,\"alt\":\"\",\"decoding\":\"async\",\"fetchpriority\":\"low\",\"loading\":\"lazy\"},on:{\"load\":function($event){_vm.previewLoaded = true},\"error\":function($event){_vm.previewErrored = true}}}):_c('div',{staticClass:\"version__image\"},[_c('ImageOffOutline',{attrs:{\"size\":20}})],1)]},proxy:true},{key:\"subname\",fn:function(){return [_c('div',{staticClass:\"version__info\"},[_c('span',{attrs:{\"title\":_vm.formattedDate}},[_vm._v(_vm._s(_vm._f(\"humanDateFromNow\")(_vm.version.mtime)))]),_vm._v(\" \"),_c('span',{staticClass:\"version__info__size\"},[_vm._v(\"•\")]),_vm._v(\" \"),_c('span',{staticClass:\"version__info__size\"},[_vm._v(_vm._s(_vm._f(\"humanReadableSize\")(_vm.version.size)))])])]},proxy:true},{key:\"actions\",fn:function(){return [(_vm.enableLabeling && _vm.hasUpdatePermissions)?_c('NcActionButton',{attrs:{\"data-cy-files-versions-version-action\":\"label\",\"close-after-click\":true},on:{\"click\":_vm.labelUpdate},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":22}})]},proxy:true}],null,false,3072546167)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.version.label === '' ? _vm.t('files_versions', 'Name this version') : _vm.t('files_versions', 'Edit version name'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isCurrent && _vm.canView && _vm.canCompare)?_c('NcActionButton',{attrs:{\"data-cy-files-versions-version-action\":\"compare\",\"close-after-click\":true},on:{\"click\":_vm.compareVersion},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('FileCompare',{attrs:{\"size\":22}})]},proxy:true}],null,false,1958207595)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Compare to current version'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isCurrent && _vm.hasUpdatePermissions)?_c('NcActionButton',{attrs:{\"data-cy-files-versions-version-action\":\"restore\",\"close-after-click\":true},on:{\"click\":_vm.restoreVersion},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('BackupRestore',{attrs:{\"size\":22}})]},proxy:true}],null,false,2239038444)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Restore version'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isDownloadable)?_c('NcActionLink',{attrs:{\"data-cy-files-versions-version-action\":\"download\",\"href\":_vm.downloadURL,\"close-after-click\":true,\"download\":_vm.downloadURL},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Download',{attrs:{\"size\":22}})]},proxy:true}],null,false,927269758)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Download version'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isCurrent && _vm.enableDeletion && _vm.hasDeletePermissions)?_c('NcActionButton',{attrs:{\"data-cy-files-versions-version-action\":\"delete\",\"close-after-click\":true},on:{\"click\":_vm.deleteVersion},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":22}})]},proxy:true}],null,false,2429175571)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Delete version'))+\"\\n\\t\\t\")]):_vm._e()]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualScrolling.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualScrolling.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (!_vm.useWindow && _vm.containerElement === null)?_c('div',{ref:\"container\",staticClass:\"vs-container\"},[_c('div',{ref:\"rowsContainer\",staticClass:\"vs-rows-container\",style:(_vm.rowsContainerStyle)},[_vm._t(\"default\",null,{\"visibleSections\":_vm.visibleSections}),_vm._v(\" \"),_vm._t(\"loader\")],2)]):_c('div',{ref:\"rowsContainer\",staticClass:\"vs-rows-container\",style:(_vm.rowsContainerStyle)},[_vm._t(\"default\",null,{\"visibleSections\":_vm.visibleSections}),_vm._v(\" \"),_vm._t(\"loader\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../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!./VirtualScrolling.vue?vue&type=style&index=0&id=11dbbae6&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../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!./VirtualScrolling.vue?vue&type=style&index=0&id=11dbbae6&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VirtualScrolling.vue?vue&type=template&id=11dbbae6&scoped=true\"\nimport script from \"./VirtualScrolling.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualScrolling.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VirtualScrolling.vue?vue&type=style&index=0&id=11dbbae6&prod&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 \"11dbbae6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('form',{staticClass:\"version-label-modal\",on:{\"submit\":function($event){$event.preventDefault();return _vm.setVersionLabel(_vm.innerVersionLabel)}}},[_c('label',[_c('div',{staticClass:\"version-label-modal__title\"},[_vm._v(_vm._s(_vm.t('files_versions', 'Version name')))]),_vm._v(\" \"),_c('NcTextField',{ref:\"labelInput\",attrs:{\"value\":_vm.innerVersionLabel,\"placeholder\":_vm.t('files_versions', 'Version name'),\"label-outside\":true},on:{\"update:value\":function($event){_vm.innerVersionLabel=$event}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"version-label-modal__info\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_versions', 'Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"version-label-modal__actions\"},[_c('NcButton',{attrs:{\"disabled\":_vm.innerVersionLabel.trim().length === 0},on:{\"click\":function($event){return _vm.setVersionLabel('')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Remove version name'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\",\"native-type\":\"submit\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Check')]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Save version name'))+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VersionLabelForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VersionLabelForm.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../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!./VersionLabelForm.vue?vue&type=style&index=0&id=58311f0c&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../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!./VersionLabelForm.vue?vue&type=style&index=0&id=58311f0c&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VersionLabelForm.vue?vue&type=template&id=58311f0c&scoped=true\"\nimport script from \"./VersionLabelForm.vue?vue&type=script&lang=ts\"\nexport * from \"./VersionLabelForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VersionLabelForm.vue?vue&type=style&index=0&id=58311f0c&prod&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 \"58311f0c\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VersionTab.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!./VersionTab.vue?vue&type=script&lang=js\"","<!--\n - @copyright 2022 Carl Schwan <carl@carlschwan.eu>\n - @license AGPL-3.0-or-later\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<template>\n\t<div class=\"versions-tab__container\">\n\t\t<VirtualScrolling :sections=\"sections\"\n\t\t\t:header-height=\"0\">\n\t\t\t<template slot-scope=\"{visibleSections}\">\n\t\t\t\t<ul data-files-versions-versions-list>\n\t\t\t\t\t<template v-if=\"visibleSections.length === 1\">\n\t\t\t\t\t\t<Version v-for=\"(row) of visibleSections[0].rows\"\n\t\t\t\t\t\t\t:key=\"row.items[0].mtime\"\n\t\t\t\t\t\t\t:can-view=\"canView\"\n\t\t\t\t\t\t\t:can-compare=\"canCompare\"\n\t\t\t\t\t\t\t:load-preview=\"isActive\"\n\t\t\t\t\t\t\t:version=\"row.items[0]\"\n\t\t\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t\t\t:is-current=\"row.items[0].mtime === fileInfo.mtime\"\n\t\t\t\t\t\t\t:is-first-version=\"row.items[0].mtime === initialVersionMtime\"\n\t\t\t\t\t\t\t@click=\"openVersion\"\n\t\t\t\t\t\t\t@compare=\"compareVersion\"\n\t\t\t\t\t\t\t@restore=\"handleRestore\"\n\t\t\t\t\t\t\t@label-update-request=\"handleLabelUpdateRequest(row.items[0])\"\n\t\t\t\t\t\t\t@delete=\"handleDelete\" />\n\t\t\t\t\t</template>\n\t\t\t\t</ul>\n\t\t\t</template>\n\t\t\t<NcLoadingIcon v-if=\"loading\" slot=\"loader\" class=\"files-list-viewer__loader\" />\n\t\t</VirtualScrolling>\n\t\t<NcModal v-if=\"showVersionLabelForm\"\n\t\t\t:title=\"t('files_versions', 'Name this version')\"\n\t\t\t@close=\"showVersionLabelForm = false\">\n\t\t\t<VersionLabelForm :version-label=\"editedVersion.label\" @label-update=\"handleLabelUpdate\" />\n\t\t</NcModal>\n\t</div>\n</template>\n\n<script>\nimport path from 'path'\n\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport isMobile from '@nextcloud/vue/dist/Mixins/isMobile.js'\nimport { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\n\nimport { fetchVersions, deleteVersion, restoreVersion, setVersionLabel } from '../utils/versions.ts'\nimport Version from '../components/Version.vue'\nimport VirtualScrolling from '../components/VirtualScrolling.vue'\nimport VersionLabelForm from '../components/VersionLabelForm.vue'\n\nexport default {\n\tname: 'VersionTab',\n\tcomponents: {\n\t\tVersion,\n\t\tVirtualScrolling,\n\t\tVersionLabelForm,\n\t\tNcLoadingIcon,\n\t\tNcModal,\n\t},\n\tmixins: [\n\t\tisMobile,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tfileInfo: null,\n\t\t\tisActive: false,\n\t\t\t/** @type {import('../utils/versions.ts').Version[]} */\n\t\t\tversions: [],\n\t\t\tloading: false,\n\t\t\tshowVersionLabelForm: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tsections() {\n\t\t\tconst rows = this.orderedVersions.map(version => ({ key: version.mtime, height: 68, sectionKey: 'versions', items: [version] }))\n\t\t\treturn [{ key: 'versions', rows, height: 68 * this.orderedVersions.length }]\n\t\t},\n\n\t\t/**\n\t\t * Order versions by mtime.\n\t\t * Put the current version at the top.\n\t\t *\n\t\t * @return {import('../utils/versions.ts').Version[]}\n\t\t */\n\t\torderedVersions() {\n\t\t\treturn [...this.versions].sort((a, b) => {\n\t\t\t\tif (a.mtime === this.fileInfo.mtime) {\n\t\t\t\t\treturn -1\n\t\t\t\t} else if (b.mtime === this.fileInfo.mtime) {\n\t\t\t\t\treturn 1\n\t\t\t\t} else {\n\t\t\t\t\treturn b.mtime - a.mtime\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Return the mtime of the first version to display \"Initial version\" label\n\t\t *\n\t\t * @return {number}\n\t\t */\n\t\tinitialVersionMtime() {\n\t\t\treturn this.versions\n\t\t\t\t.map(version => version.mtime)\n\t\t\t\t.reduce((a, b) => Math.min(a, b))\n\t\t},\n\n\t\tviewerFileInfo() {\n\t\t\t// We need to remap bitmask to dav permissions as the file info we have is converted through client.js\n\t\t\tlet davPermissions = ''\n\t\t\tif (this.fileInfo.permissions & 1) {\n\t\t\t\tdavPermissions += 'R'\n\t\t\t}\n\t\t\tif (this.fileInfo.permissions & 2) {\n\t\t\t\tdavPermissions += 'W'\n\t\t\t}\n\t\t\tif (this.fileInfo.permissions & 8) {\n\t\t\t\tdavPermissions += 'D'\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...this.fileInfo,\n\t\t\t\tmime: this.fileInfo.mimetype,\n\t\t\t\tbasename: this.fileInfo.name,\n\t\t\t\tfilename: this.fileInfo.path + '/' + this.fileInfo.name,\n\t\t\t\tpermissions: davPermissions,\n\t\t\t\tfileid: this.fileInfo.id,\n\t\t\t}\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\tcanView() {\n\t\t\treturn window.OCA.Viewer?.mimetypesCompare?.includes(this.fileInfo.mimetype)\n\t\t},\n\n\t\tcanCompare() {\n\t\t\treturn !this.isMobile\n\t\t},\n\t},\n\tmounted() {\n\t\tsubscribe('files_versions:restore:restored', this.fetchVersions)\n\t},\n\tbeforeUnmount() {\n\t\tunsubscribe('files_versions:restore:restored', this.fetchVersions)\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Update current fileInfo and fetch new data\n\t\t *\n\t\t * @param {object} fileInfo the current file FileInfo\n\t\t */\n\t\tasync update(fileInfo) {\n\t\t\tthis.fileInfo = fileInfo\n\t\t\tthis.resetState()\n\t\t\tthis.fetchVersions()\n\t\t},\n\n\t\t/**\n\t\t * @param {boolean} isActive whether the tab is active\n\t\t */\n\t\tasync setIsActive(isActive) {\n\t\t\tthis.isActive = isActive\n\t\t},\n\n\t\t/**\n\t\t * Get the existing versions infos\n\t\t */\n\t\tasync fetchVersions() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.versions = await fetchVersions(this.fileInfo)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle restored event from Version.vue\n\t\t *\n\t\t * @param {import('../utils/versions.ts').Version} version\n\t\t */\n\t\tasync handleRestore(version) {\n\t\t\t// Update local copy of fileInfo as rendering depends on it.\n\t\t\tconst oldFileInfo = this.fileInfo\n\t\t\tthis.fileInfo = {\n\t\t\t\t...this.fileInfo,\n\t\t\t\tsize: version.size,\n\t\t\t\tmtime: version.mtime,\n\t\t\t}\n\n\t\t\tconst restoreStartedEventState = {\n\t\t\t\tpreventDefault: false,\n\t\t\t\tfileInfo: this.fileInfo,\n\t\t\t\tversion,\n\t\t\t}\n\t\t\temit('files_versions:restore:requested', restoreStartedEventState)\n\t\t\tif (restoreStartedEventState.preventDefault) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tawait restoreVersion(version)\n\t\t\t\tif (version.label !== '') {\n\t\t\t\t\tshowSuccess(t('files_versions', `${version.label} restored`))\n\t\t\t\t} else if (version.mtime === this.initialVersionMtime) {\n\t\t\t\t\tshowSuccess(t('files_versions', 'Initial version restored'))\n\t\t\t\t} else {\n\t\t\t\t\tshowSuccess(t('files_versions', 'Version restored'))\n\t\t\t\t}\n\t\t\t\temit('files_versions:restore:restored', version)\n\t\t\t} catch (exception) {\n\t\t\t\tthis.fileInfo = oldFileInfo\n\t\t\t\tshowError(t('files_versions', 'Could not restore version'))\n\t\t\t\temit('files_versions:restore:failed', version)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle label-updated event from Version.vue\n\t\t * @param {import('../utils/versions.ts').Version} version\n\t\t */\n\t\thandleLabelUpdateRequest(version) {\n\t\t\tthis.showVersionLabelForm = true\n\t\t\tthis.editedVersion = version\n\t\t},\n\n\t\t/**\n\t\t * Handle label-updated event from Version.vue\n\t\t * @param {string} newLabel\n\t\t */\n\t\tasync handleLabelUpdate(newLabel) {\n\t\t\tconst oldLabel = this.editedVersion.label\n\t\t\tthis.editedVersion.label = newLabel\n\t\t\tthis.showVersionLabelForm = false\n\n\t\t\ttry {\n\t\t\t\tawait setVersionLabel(this.editedVersion, newLabel)\n\t\t\t\tthis.editedVersion = null\n\t\t\t} catch (exception) {\n\t\t\t\tthis.editedVersion.label = oldLabel\n\t\t\t\tshowError(this.t('files_versions', 'Could not set version label'))\n\t\t\t\tlogger.error('Could not set version label', { exception })\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle deleted event from Version.vue\n\t\t *\n\t\t * @param {import('../utils/versions.ts').Version} version\n\t\t * @param {string} newName\n\t\t */\n\t\tasync handleDelete(version) {\n\t\t\tconst index = this.versions.indexOf(version)\n\t\t\tthis.versions.splice(index, 1)\n\n\t\t\ttry {\n\t\t\t\tawait deleteVersion(version)\n\t\t\t} catch (exception) {\n\t\t\t\tthis.versions.push(version)\n\t\t\t\tshowError(t('files_versions', 'Could not delete version'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.$set(this, 'versions', [])\n\t\t},\n\n\t\topenVersion({ version }) {\n\t\t\t// Open current file view instead of read only\n\t\t\tif (version.mtime === this.fileInfo.mtime) {\n\t\t\t\tOCA.Viewer.open({ fileInfo: this.viewerFileInfo })\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Versions previews are too small for our use case, so we override hasPreview and previewUrl\n\t\t\t// which makes the viewer render the original file.\n\t\t\t// We also point to the original filename if the version is the current one.\n\t\t\tconst versions = this.versions.map(version => ({\n\t\t\t\t...version,\n\t\t\t\tfilename: version.mtime === this.fileInfo.mtime ? path.join('files', getCurrentUser()?.uid ?? '', this.fileInfo.path, this.fileInfo.name) : version.filename,\n\t\t\t\thasPreview: false,\n\t\t\t\tpreviewUrl: undefined,\n\t\t\t}))\n\n\t\t\tOCA.Viewer.open({\n\t\t\t\tfileInfo: versions.find(v => v.source === version.source),\n\t\t\t\tenableSidebar: false,\n\t\t\t})\n\t\t},\n\n\t\tcompareVersion({ version }) {\n\t\t\tconst versions = this.versions.map(version => ({ ...version, hasPreview: false, previewUrl: undefined }))\n\n\t\t\tOCA.Viewer.compare(this.viewerFileInfo, versions.find(v => v.source === version.source))\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\">\n.versions-tab__container {\n\theight: 100%;\n}\n</style>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable jsdoc/require-jsdoc */\n/**\n * @copyright 2022 Louis Chemineau <mlouis@chmn.me>\n *\n * @author Louis Chemineau <mlouis@chmn.me>\n *\n * @license AGPL-3.0-or-later\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 */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { joinPaths } from '@nextcloud/paths';\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router';\nimport moment from '@nextcloud/moment';\nimport { encodeFilePath } from '../../../files/src/utils/fileUtils.ts';\nimport client from '../utils/davClient.js';\nimport davRequest from '../utils/davRequest.js';\nimport logger from '../utils/logger.js';\nexport async function fetchVersions(fileInfo) {\n const path = `/versions/${getCurrentUser()?.uid}/versions/${fileInfo.id}`;\n try {\n const response = await client.getDirectoryContents(path, {\n data: davRequest,\n details: true,\n });\n return response.data\n // Filter out root\n .filter(({ mime }) => mime !== '')\n .map(version => formatVersion(version, fileInfo));\n }\n catch (exception) {\n logger.error('Could not fetch version', { exception });\n throw exception;\n }\n}\n/**\n * Restore the given version\n */\nexport async function restoreVersion(version) {\n try {\n logger.debug('Restoring version', { url: version.url });\n await client.moveFile(`/versions/${getCurrentUser()?.uid}/versions/${version.fileId}/${version.fileVersion}`, `/versions/${getCurrentUser()?.uid}/restore/target`);\n }\n catch (exception) {\n logger.error('Could not restore version', { exception });\n throw exception;\n }\n}\n/**\n * Format version\n */\nfunction formatVersion(version, fileInfo) {\n const mtime = moment(version.lastmod).unix() * 1000;\n let previewUrl = '';\n if (mtime === fileInfo.mtime) { // Version is the current one\n previewUrl = generateUrl('/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0', {\n fileId: fileInfo.id,\n fileEtag: fileInfo.etag,\n });\n }\n else {\n previewUrl = generateUrl('/apps/files_versions/preview?file={file}&version={fileVersion}', {\n file: joinPaths(fileInfo.path, fileInfo.name),\n fileVersion: version.basename,\n });\n }\n return {\n fileId: fileInfo.id,\n // If version-label is defined make sure it is a string (prevent issue if the label is a number an PHP returns a number then)\n label: version.props['version-label'] && String(version.props['version-label']),\n filename: version.filename,\n basename: moment(mtime).format('LLL'),\n mime: version.mime,\n etag: `${version.props.getetag}`,\n size: version.size,\n type: version.type,\n mtime,\n permissions: 'R',\n hasPreview: version.props['has-preview'] === 1,\n previewUrl,\n url: joinPaths('/remote.php/dav', version.filename),\n source: generateRemoteUrl('dav') + encodeFilePath(version.filename),\n fileVersion: version.basename,\n };\n}\nexport async function setVersionLabel(version, newLabel) {\n return await client.customRequest(version.filename, {\n method: 'PROPPATCH',\n data: `<?xml version=\"1.0\"?>\n\t\t\t\t\t<d:propertyupdate xmlns:d=\"DAV:\"\n\t\t\t\t\t\txmlns:oc=\"http://owncloud.org/ns\"\n\t\t\t\t\t\txmlns:nc=\"http://nextcloud.org/ns\"\n\t\t\t\t\t\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t\t\t\t\t<d:set>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t<nc:version-label>${newLabel}</nc:version-label>\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t</d:set>\n\t\t\t\t\t</d:propertyupdate>`,\n });\n}\nexport async function deleteVersion(version) {\n await client.deleteFile(version.filename);\n}\n","/**\n * @copyright Copyright (c) 2019 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\n *\n * @license AGPL-3.0-or-later\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 `<?xml version=\"1.0\"?>\n<d:propfind xmlns:d=\"DAV:\"\n\txmlns:oc=\"http://owncloud.org/ns\"\n\txmlns:nc=\"http://nextcloud.org/ns\"\n\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t<d:prop>\n\t\t<d:getcontentlength />\n\t\t<d:getcontenttype />\n\t\t<d:getlastmodified />\n\t\t<d:getetag />\n\t\t<nc:version-label />\n\t\t<nc:has-preview />\n\t</d:prop>\n</d:propfind>`\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../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!./VersionTab.vue?vue&type=style&index=0&id=9f52be8e&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../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!./VersionTab.vue?vue&type=style&index=0&id=9f52be8e&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VersionTab.vue?vue&type=template&id=9f52be8e\"\nimport script from \"./VersionTab.vue?vue&type=script&lang=js\"\nexport * from \"./VersionTab.vue?vue&type=script&lang=js\"\nimport style0 from \"./VersionTab.vue?vue&type=style&index=0&id=9f52be8e&prod&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 null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"versions-tab__container\"},[_c('VirtualScrolling',{attrs:{\"sections\":_vm.sections,\"header-height\":0},scopedSlots:_vm._u([{key:\"default\",fn:function({visibleSections}){return [_c('ul',{attrs:{\"data-files-versions-versions-list\":\"\"}},[(visibleSections.length === 1)?_vm._l((visibleSections[0].rows),function(row){return _c('Version',{key:row.items[0].mtime,attrs:{\"can-view\":_vm.canView,\"can-compare\":_vm.canCompare,\"load-preview\":_vm.isActive,\"version\":row.items[0],\"file-info\":_vm.fileInfo,\"is-current\":row.items[0].mtime === _vm.fileInfo.mtime,\"is-first-version\":row.items[0].mtime === _vm.initialVersionMtime},on:{\"click\":_vm.openVersion,\"compare\":_vm.compareVersion,\"restore\":_vm.handleRestore,\"label-update-request\":function($event){return _vm.handleLabelUpdateRequest(row.items[0])},\"delete\":_vm.handleDelete}})}):_vm._e()],2)]}}])},[_vm._v(\" \"),(_vm.loading)?_c('NcLoadingIcon',{staticClass:\"files-list-viewer__loader\",attrs:{\"slot\":\"loader\"},slot:\"loader\"}):_vm._e()],1),_vm._v(\" \"),(_vm.showVersionLabelForm)?_c('NcModal',{attrs:{\"title\":_vm.t('files_versions', 'Name this version')},on:{\"close\":function($event){_vm.showVersionLabelForm = false}}},[_c('VersionLabelForm',{attrs:{\"version-label\":_vm.editedVersion.label},on:{\"label-update\":_vm.handleLabelUpdate}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Carl Schwan <carl@carlschwan.eu>\n * @license AGPL-3.0-or-later\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 Vue from 'vue'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\nimport VersionTab from './views/VersionTab.vue'\nimport VTooltip from 'v-tooltip'\n// eslint-disable-next-line n/no-missing-import, import/no-unresolved\nimport BackupRestore from '@mdi/svg/svg/backup-restore.svg?raw'\n\nVue.prototype.t = t\nVue.prototype.n = n\n\nVue.use(VTooltip)\n\n// Init Sharing tab component\nconst View = Vue.extend(VersionTab)\nlet TabInstance = null\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (OCA.Files?.Sidebar === undefined) {\n\t\treturn\n\t}\n\n\tOCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({\n\t\tid: 'version_vue',\n\t\tname: t('files_versions', 'Versions'),\n\t\ticonSvg: BackupRestore,\n\n\t\tasync mount(el, fileInfo, context) {\n\t\t\tif (TabInstance) {\n\t\t\t\tTabInstance.$destroy()\n\t\t\t}\n\t\t\tTabInstance = new View({\n\t\t\t\t// Better integration with vue parent component\n\t\t\t\tparent: context,\n\t\t\t})\n\t\t\t// Only mount after we have all the info we need\n\t\t\tawait TabInstance.update(fileInfo)\n\t\t\tTabInstance.$mount(el)\n\t\t},\n\t\tupdate(fileInfo) {\n\t\t\tTabInstance.update(fileInfo)\n\t\t},\n\t\tsetIsActive(isActive) {\n\t\t\tif (!TabInstance) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tTabInstance.setIsActive(isActive)\n\t\t},\n\t\tdestroy() {\n\t\t\tTabInstance.$destroy()\n\t\t\tTabInstance = null\n\t\t},\n\t\tenabled(fileInfo) {\n\t\t\treturn !(fileInfo?.isDirectory() ?? true)\n\t\t},\n\t}))\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.version[data-v-24640189]{display:flex;flex-direction:row}.version__info[data-v-24640189]{display:flex;flex-direction:row;align-items:center;gap:.5rem}.version__info__size[data-v-24640189]{color:var(--color-text-lighter)}.version__image[data-v-24640189]{width:3rem;height:3rem;border:1px solid var(--color-border);border-radius:var(--border-radius-large);display:flex;justify-content:center;color:var(--color-text-light)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_versions/src/components/Version.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,kBAAA,CAEA,gCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,SAAA,CAEA,sCACC,+BAAA,CAIF,iCACC,UAAA,CACA,WAAA,CACA,oCAAA,CACA,wCAAA,CAGA,YAAA,CACA,sBAAA,CACA,6BAAA\",\"sourcesContent\":[\"\\n.version {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\n\\t&__info {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\talign-items: center;\\n\\t\\tgap: 0.5rem;\\n\\n\\t\\t&__size {\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t}\\n\\t}\\n\\n\\t&__image {\\n\\t\\twidth: 3rem;\\n\\t\\theight: 3rem;\\n\\t\\tborder: 1px solid var(--color-border);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\n\\t\\t// Useful to display no preview icon.\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\tcolor: var(--color-text-light);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.version-label-modal[data-v-58311f0c]{display:flex;justify-content:space-between;flex-direction:column;height:250px;padding:16px}.version-label-modal__title[data-v-58311f0c]{margin-bottom:12px;font-weight:600}.version-label-modal__info[data-v-58311f0c]{margin-top:12px;color:var(--color-text-maxcontrast)}.version-label-modal__actions[data-v-58311f0c]{display:flex;justify-content:space-between;margin-top:64px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_versions/src/components/VersionLabelForm.vue\"],\"names\":[],\"mappings\":\"AACA,sCACC,YAAA,CACA,6BAAA,CACA,qBAAA,CACA,YAAA,CACA,YAAA,CAEA,6CACC,kBAAA,CACA,eAAA,CAGD,4CACC,eAAA,CACA,mCAAA,CAGD,+CACC,YAAA,CACA,6BAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.version-label-modal {\\n\\tdisplay: flex;\\n\\tjustify-content: space-between;\\n\\tflex-direction: column;\\n\\theight: 250px;\\n\\tpadding: 16px;\\n\\n\\t&__title {\\n\\t\\tmargin-bottom: 12px;\\n\\t\\tfont-weight: 600;\\n\\t}\\n\\n\\t&__info {\\n\\t\\tmargin-top: 12px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&__actions {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: space-between;\\n\\t\\tmargin-top: 64px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.vs-container[data-v-11dbbae6]{overflow-y:scroll;height:100%}.vs-rows-container[data-v-11dbbae6]{box-sizing:border-box;will-change:scroll-position,padding;contain:layout paint style}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_versions/src/components/VirtualScrolling.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,iBAAA,CACA,WAAA,CAGD,oCACC,qBAAA,CACA,mCAAA,CACA,0BAAA\",\"sourcesContent\":[\"\\n.vs-container {\\n\\toverflow-y: scroll;\\n\\theight: 100%;\\n}\\n\\n.vs-rows-container {\\n\\tbox-sizing: border-box;\\n\\twill-change: scroll-position, padding;\\n\\tcontain: layout paint style;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.versions-tab__container{height:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_versions/src/views/VersionTab.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,WAAA\",\"sourcesContent\":[\"\\n.versions-tab__container {\\n\\theight: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"4065\":\"046658418d1a5670e146\",\"4254\":\"96661b9f421b07ce7189\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2250;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2250: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\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\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(92262)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","encodeFilePath","path","pathSections","startsWith","concat","split","relativePath","forEach","section","encodeURIComponent","remote","generateRemoteUrl","client","createClient","setHeaders","token","requesttoken","onRequestTokenUpdate","getRequestToken","getLoggerBuilder","setApp","detectUser","build","name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","ATOMIC_PERMISSIONS","hasPermissions","initialPermissionSet","permissionsToCheck","components","NcActionLink","NcActionButton","NcListItem","BackupRestore","Download","FileCompare","Pencil","Delete","ImageOffOutline","directives","tooltip","Tooltip","filters","humanReadableSize","bytes","OC","Util","humanFileSize","humanDateFromNow","timestamp","moment","fromNow","version","Object","required","fileInfo","isCurrent","Boolean","isFirstVersion","loadPreview","canView","canCompare","data","previewLoaded","previewErrored","capabilities","loadState","files","version_labeling","version_deletion","computed","versionLabel","_this$version$label","label","t","downloadURL","getRootUrl","joinPaths","url","formattedDate","mtime","format","enableLabeling","enableDeletion","hasDeletePermissions","permissions","Permission","DELETE","hasUpdatePermissions","UPDATE","isDownloadable","READ","mountType","downloadAttribute","shareAttributes","find","attribute","scope","key","undefined","enabled","methods","labelUpdate","restoreVersion","deleteVersion","click","window","location","compareVersion","Error","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","fileVersion","scopedSlots","_u","fn","hasPreview","previewUrl","proxy","_f","defineComponent","sections","Array","containerElement","HTMLElement","useWindow","headerHeight","renderDistance","bottomBufferRatio","scrollToKey","scrollPosition","containerHeight","rowsContainerHeight","resizeObserver","visibleSections","logger","debug","containerTop","containerBottom","currentRowTop","currentRowBottom","map","rows","reduce","visibleRows","row","height","distance","filter","length","visibleItems","flatMap","_ref","_ref2","items","rowIdToKeyMap","_rowIdToKeyMap","item","id","usedTokens","_ref3","unusedTokens","values","includes","_ref4","_unusedTokens$pop","pop","Math","random","toString","substr","finalMapping","_ref5","totalHeight","sectionHeight","paddingTop","sectionKey","rowsContainerStyle","isNearBottom","buffer","container","$refs","watch","value","currentRowTopDistanceFromTop","scrollTo","top","behavior","beforeCreate","mounted","ResizeObserver","entries","entry","cr","contentRect","target","classList","contains","addEventListener","updateContainerSize","passive","innerHeight","observe","rowsContainer","updateScrollPosition","beforeDestroy","_this$resizeObserver","removeEventListener","disconnect","_this$_onScrollHandle","_onScrollHandle","requestAnimationFrame","scrollY","scrollTop","_setupProxy","ref","style","_t","NcButton","NcTextField","Check","innerVersionLabel","$nextTick","labelInput","$el","getElementsByTagName","focus","setVersionLabel","translate","Version","VirtualScrolling","VersionLabelForm","preventDefault","trim","NcLoadingIcon","NcModal","mixins","isMobile","isActive","versions","loading","showVersionLabelForm","orderedVersions","sort","a","b","initialVersionMtime","min","viewerFileInfo","davPermissions","mime","mimetype","basename","filename","fileid","_window$OCA$Viewer","OCA","Viewer","mimetypesCompare","subscribe","fetchVersions","beforeUnmount","unsubscribe","update","resetState","setIsActive","async","_getCurrentUser","getCurrentUser","uid","getDirectoryContents","details","lastmod","unix","generateUrl","fileId","fileEtag","etag","file","getetag","source","formatVersion","exception","error","handleRestore","oldFileInfo","restoreStartedEventState","emit","_getCurrentUser2","_getCurrentUser3","moveFile","showSuccess","showError","handleLabelUpdateRequest","editedVersion","handleLabelUpdate","newLabel","oldLabel","customRequest","method","handleDelete","index","indexOf","splice","deleteFile","push","$set","openVersion","open","_getCurrentUser$uid","v","enableSidebar","compare","_l","slot","Vue","prototype","n","use","VTooltip","View","extend","VersionTab","TabInstance","_OCA$Files","Files","Sidebar","registerTab","Tab","iconSvg","mount","el","context","$destroy","parent","$mount","destroy","_fileInfo$isDirectory","isDirectory","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","r","getter","__esModule","d","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","promises","u","g","globalThis","Function","obj","prop","hasOwnProperty","l","done","script","needAttach","scripts","document","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","head","appendChild","Symbol","toStringTag","nmd","paths","children","scriptUrl","importScripts","currentScript","test","replace","p","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}