summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLouis Chemineau <louis@chmn.me>2023-09-06 15:29:56 +0200
committerLouis Chemineau <louis@chmn.me>2023-09-07 22:37:22 +0200
commiteb4185590bfde1ea66cab48699ec5b867ac56d45 (patch)
treebb2f5e7932054f8e8a446b8a0748c402b6725984
parent4d93b8f9bc1b8419f0016a92dcaf135a3afc03ed (diff)
downloadnextcloud-server-eb4185590bfde1ea66cab48699ec5b867ac56d45.tar.gz
nextcloud-server-eb4185590bfde1ea66cab48699ec5b867ac56d45.zip
Enable new versions feature for groupfolders
Signed-off-by: Louis Chemineau <louis@chmn.me>
-rw-r--r--apps/files_versions/src/components/Version.vue4
-rw-r--r--dist/files_versions-files_versions.js4
-rw-r--r--dist/files_versions-files_versions.js.map2
3 files changed, 5 insertions, 5 deletions
diff --git a/apps/files_versions/src/components/Version.vue b/apps/files_versions/src/components/Version.vue
index 28b831ac37a..79c2db501ba 100644
--- a/apps/files_versions/src/components/Version.vue
+++ b/apps/files_versions/src/components/Version.vue
@@ -251,12 +251,12 @@ export default {
/** @return {boolean} */
enableLabeling() {
- return this.capabilities.files.version_labeling === true && this.fileInfo.mountType !== 'group'
+ return this.capabilities.files.version_labeling === true
},
/** @return {boolean} */
enableDeletion() {
- return this.capabilities.files.version_deletion === true && this.fileInfo.mountType !== 'group'
+ return this.capabilities.files.version_deletion === true
},
},
methods: {
diff --git a/dist/files_versions-files_versions.js b/dist/files_versions-files_versions.js
index 653165ba433..0bb0d50d8e2 100644
--- a/dist/files_versions-files_versions.js
+++ b/dist/files_versions-files_versions.js
@@ -1,3 +1,3 @@
/*! For license information please see files_versions-files_versions.js.LICENSE.txt */
-(()=>{var e,s,n,i={38708:(e,s,n)=>{"use strict";var i=n(20144),o=n(31352),r=n(64024),a=n(3344),l=n.n(a),c=n(77958),d=n(65358),u=n(79753),f=n(80351),v=n.n(f);const m=function(e){const t=(e.startsWith("/")?e:"/".concat(e)).split("/");let s="";return t.forEach((e=>{""!==e&&(s+="/"+encodeURIComponent(e))})),s};var p,h=n(14596);const b=(0,u.generateRemoteUrl)("dav"),A=(0,h.eI)(b,{headers:{"X-Requested-With":"XMLHttpRequest",requesttoken:null!==(p=(0,c.IH)())&&void 0!==p?p:""}}),j=(0,n(17499).IY)().setApp("files_version").detectUser().build();var _=n(62520),g=n.n(_);var y=n(88722),C=n(41293),w=n(15743),x=n(73229),k=n(80419),V=n(57612),I=n(24860),L=n(15961),z=n(79954);const O={name:"Version",components:{NcActionLink:L.ih,NcActionButton:L.Js,NcListItem:L.hx,NcModal:L.Jc,NcButton:L.P2,NcTextField:L.h3,BackupRestore:y.Z,Download:C.Z,FileCompare:w.Z,Pencil:x.default,Check:k.default,Delete:V.Z,ImageOffOutline:I.Z},directives:{tooltip:L.u},filters:{humanReadableSize:e=>OC.Util.humanFileSize(e),humanDateFromNow:e=>v()(e).fromNow()},props:{version:{type:Object,required:!0},fileInfo:{type:Object,required:!0},isCurrent:{type:Boolean,default:!1},isFirstVersion:{type:Boolean,default:!1},loadPreview:{type:Boolean,default:!1},canView:{type:Boolean,default:!1},canCompare:{type:Boolean,default:!1}},data(){return{previewLoaded:!1,showVersionLabelForm:!1,formVersionLabelValue:this.version.label,capabilities:(0,z.j)("core","capabilities",{files:{version_labeling:!1,version_deletion:!1}})}},computed:{versionLabel(){var e;const t=null!==(e=this.version.label)&&void 0!==e?e:"";return this.isCurrent?""===t?(0,o.Iu)("files_versions","Current version"):"".concat(t," (").concat((0,o.Iu)("files_versions","Current version"),")"):this.isFirstVersion&&""===t?(0,o.Iu)("files_versions","Initial version"):t},downloadURL(){return this.isCurrent?(0,u.getRootUrl)()+(0,d.RQ)("/remote.php/webdav",this.fileInfo.path,this.fileInfo.name):(0,u.getRootUrl)()+this.version.url},formattedDate(){return v()(this.version.mtime).format("LLL")},enableLabeling(){return!0===this.capabilities.files.version_labeling&&"group"!==this.fileInfo.mountType},enableDeletion(){return!0===this.capabilities.files.version_deletion&&"group"!==this.fileInfo.mountType}},methods:{openVersionLabelModal(){this.showVersionLabelForm=!0,this.$nextTick((()=>{this.$refs.labelInput.$el.getElementsByTagName("input")[0].focus()}))},restoreVersion(){this.$emit("restore",this.version)},setVersionLabel(e){this.formVersionLabelValue=e,this.showVersionLabelForm=!1,this.$emit("label-update",this.version,e)},deleteVersion(){this.$emit("delete",this.version)},click(){this.canView?this.$emit("click",{version:this.version}):window.location=this.downloadURL},compareVersion(){if(!this.canView)throw new Error("Cannot compare version of this file");this.$emit("compare",{version:this.version})}}};var N=n(93379),B=n.n(N),R=n(7795),S=n.n(R),D=n(90569),F=n.n(D),U=n(3565),E=n.n(U),T=n(19216),P=n.n(T),$=n(44589),M=n.n($),q=n(42035),Z={};Z.styleTagTransform=M(),Z.setAttributes=E(),Z.insert=F().bind(null,"head"),Z.domAPI=S(),Z.insertStyleElement=P(),B()(q.Z,Z),q.Z&&q.Z.locals&&q.Z.locals;var Y=n(51900);const W=(0,Y.Z)(O,(function(){var e=this,t=e._self._c;return t("div",[t("NcListItem",{staticClass:"version",attrs:{title:e.versionLabel,"force-display-actions":!0,"data-files-versions-version":""},on:{click:e.click},scopedSlots:e._u([{key:"icon",fn:function(){return[e.loadPreview||e.previewLoaded?e.isCurrent||e.version.hasPreview?t("img",{staticClass:"version__image",attrs:{src:e.version.previewUrl,alt:"",decoding:"async",fetchpriority:"low",loading:"lazy"},on:{load:function(t){e.previewLoaded=!0}}}):t("div",{staticClass:"version__image"},[t("ImageOffOutline",{attrs:{size:20}})],1):t("div",{staticClass:"version__image"})]},proxy:!0},{key:"subtitle",fn:function(){return[t("div",{staticClass:"version__info"},[t("span",{attrs:{title:e.formattedDate}},[e._v(e._s(e._f("humanDateFromNow")(e.version.mtime)))]),e._v(" "),t("span",{staticClass:"version__info__size"},[e._v("•")]),e._v(" "),t("span",{staticClass:"version__info__size"},[e._v(e._s(e._f("humanReadableSize")(e.version.size)))])])]},proxy:!0},{key:"actions",fn:function(){return[e.enableLabeling?t("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.openVersionLabelModal},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Pencil",{attrs:{size:22}})]},proxy:!0}],null,!1,3072546167)},[e._v("\n\t\t\t\t"+e._s(""===e.version.label?e.t("files_versions","Name this version"):e.t("files_versions","Edit version name"))+"\n\t\t\t")]):e._e(),e._v(" "),!e.isCurrent&&e.canView&&e.canCompare?t("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.compareVersion},scopedSlots:e._u([{key:"icon",fn:function(){return[t("FileCompare",{attrs:{size:22}})]},proxy:!0}],null,!1,1958207595)},[e._v("\n\t\t\t\t"+e._s(e.t("files_versions","Compare to current version"))+"\n\t\t\t")]):e._e(),e._v(" "),e.isCurrent?e._e():t("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.restoreVersion},scopedSlots:e._u([{key:"icon",fn:function(){return[t("BackupRestore",{attrs:{size:22}})]},proxy:!0}],null,!1,2239038444)},[e._v("\n\t\t\t\t"+e._s(e.t("files_versions","Restore version"))+"\n\t\t\t")]),e._v(" "),t("NcActionLink",{attrs:{href:e.downloadURL,"close-after-click":!0,download:e.downloadURL},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Download",{attrs:{size:22}})]},proxy:!0}])},[e._v("\n\t\t\t\t"+e._s(e.t("files_versions","Download version"))+"\n\t\t\t")]),e._v(" "),!e.isCurrent&&e.enableDeletion?t("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.deleteVersion},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Delete",{attrs:{size:22}})]},proxy:!0}],null,!1,2429175571)},[e._v("\n\t\t\t\t"+e._s(e.t("files_versions","Delete version"))+"\n\t\t\t")]):e._e()]},proxy:!0}])}),e._v(" "),e.showVersionLabelForm?t("NcModal",{attrs:{title:e.t("files_versions","Name this version")},on:{close:function(t){e.showVersionLabelForm=!1}}},[t("form",{staticClass:"version-label-modal",on:{submit:function(t){return t.preventDefault(),e.setVersionLabel(e.formVersionLabelValue)}}},[t("label",[t("div",{staticClass:"version-label-modal__title"},[e._v(e._s(e.t("photos","Version name")))]),e._v(" "),t("NcTextField",{ref:"labelInput",attrs:{value:e.formVersionLabelValue,placeholder:e.t("photos","Version name"),"label-outside":!0},on:{"update:value":function(t){e.formVersionLabelValue=t}}})],1),e._v(" "),t("div",{staticClass:"version-label-modal__info"},[e._v("\n\t\t\t\t"+e._s(e.t("photos","Named versions are persisted, and excluded from automatic cleanups when your storage quota is full."))+"\n\t\t\t")]),e._v(" "),t("div",{staticClass:"version-label-modal__actions"},[t("NcButton",{attrs:{disabled:0===e.formVersionLabelValue.trim().length},on:{click:function(t){return e.setVersionLabel("")}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_versions","Remove version name"))+"\n\t\t\t\t")]),e._v(" "),t("NcButton",{attrs:{type:"primary","native-type":"submit"},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Check")]},proxy:!0}],null,!1,2308323205)},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_versions","Save version name"))+"\n\t\t\t\t")])],1)])]):e._e()],1)}),[],!1,null,"82925d6c",null).exports;var G=n(69183);const H={name:"VersionTab",components:{Version:W},mixins:[l()],data:()=>({fileInfo:null,isActive:!1,versions:[],loading:!1}),mounted(){(0,G.Ld)("files_versions:restore:restored",this.fetchVersions)},beforeUnmount(){(0,G.r1)("files_versions:restore:restored",this.fetchVersions)},computed:{orderedVersions(){return[...this.versions].sort(((e,t)=>e.mtime===this.fileInfo.mtime?-1:t.mtime===this.fileInfo.mtime?1:t.mtime-e.mtime))},initialVersionMtime(){return this.versions.map((e=>e.mtime)).reduce(((e,t)=>Math.min(e,t)))},viewerFileInfo(){let e="";return 1&this.fileInfo.permissions&&(e+="R"),2&this.fileInfo.permissions&&(e+="W"),8&this.fileInfo.permissions&&(e+="D"),{...this.fileInfo,mime:this.fileInfo.mimetype,basename:this.fileInfo.name,filename:this.fileInfo.path+"/"+this.fileInfo.name,permissions:e,fileid:this.fileInfo.id}},canView(){var e,t;return null===(e=window.OCA.Viewer)||void 0===e||null===(t=e.mimetypesCompare)||void 0===t?void 0:t.includes(this.fileInfo.mimetype)},canCompare(){return!this.isMobile}},methods:{async update(e){this.fileInfo=e,this.resetState(),this.fetchVersions()},async setIsActive(e){this.isActive=e},async fetchVersions(){try{this.loading=!0,this.versions=await async function(e){var t;const s="/versions/".concat(null===(t=(0,c.ts)())||void 0===t?void 0:t.uid,"/versions/").concat(e.id);try{return(await A.getDirectoryContents(s,{data:'<?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>',details:!0})).data.filter((e=>{let{mime:t}=e;return""!==t})).map((t=>function(e,t){const s=1e3*v()(e.lastmod).unix();let n="",i="";var o,r;return s===t.mtime?(i=g().join("files",null!==(o=null===(r=(0,c.ts)())||void 0===r?void 0:r.uid)&&void 0!==o?o:"",t.path,t.name),n=(0,u.generateUrl)("/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0",{fileId:t.id,fileEtag:t.etag})):(i=e.filename,n=(0,u.generateUrl)("/apps/files_versions/preview?file={file}&version={fileVersion}",{file:(0,d.RQ)(t.path,t.name),fileVersion:e.basename})),{fileId:t.id,label:e.props["version-label"],filename:i,basename:v()(s).format("LLL"),mime:e.mime,etag:"".concat(e.props.getetag),size:e.size,type:e.type,mtime:s,permissions:"R",hasPreview:1===e.props["has-preview"],previewUrl:n,url:(0,d.RQ)("/remote.php/dav",i),source:(0,u.generateRemoteUrl)("dav")+m(i),fileVersion:e.basename}}(t,e)))}catch(e){throw j.error("Could not fetch version",{exception:e}),e}}(this.fileInfo)}finally{this.loading=!1}},async handleRestore(e){const s=this.fileInfo;this.fileInfo={...this.fileInfo,size:e.size,mtime:e.mtime};const n={preventDefault:!1,fileInfo:this.fileInfo,version:e};if((0,G.j8)("files_versions:restore:requested",n),!n.preventDefault)try{await async function(e){try{var t,s;j.debug("Restoring version",{url:e.url}),await A.moveFile("/versions/".concat(null===(t=(0,c.ts)())||void 0===t?void 0:t.uid,"/versions/").concat(e.fileId,"/").concat(e.fileVersion),"/versions/".concat(null===(s=(0,c.ts)())||void 0===s?void 0:s.uid,"/restore/target"))}catch(e){throw j.error("Could not restore version",{exception:e}),e}}(e),""!==e.label?(0,r.s$)(t("files_versions","".concat(e.label," restored"))):e.mtime===this.initialVersionMtime?(0,r.s$)(t("files_versions","Initial version restored")):(0,r.s$)(t("files_versions","Version restored")),(0,G.j8)("files_versions:restore:restored",e)}catch(n){this.fileInfo=s,(0,r.x2)(t("files_versions","Could not restore version")),(0,G.j8)("files_versions:restore:failed",e)}},async handleLabelUpdate(e,s){const n=e.label;e.label=s;try{await async function(e,t){return await A.customRequest(e.filename,{method:"PROPPATCH",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>'.concat(t,"</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>")})}(e,s)}catch(s){e.label=n,(0,r.x2)(t("files_versions","Could not set version name"))}},async handleDelete(e){const s=this.versions.indexOf(e);this.versions.splice(s,1);try{await async function(e){await A.deleteFile(e.filename)}(e)}catch(s){this.versions.push(e),(0,r.x2)(t("files_versions","Could not delete version"))}},resetState(){this.$set(this,"versions",[])},openVersion(e){let{version:t}=e;if(t.mtime===this.fileInfo.mtime)return void OCA.Viewer.open({fileInfo:this.viewerFileInfo});const s=this.versions.map((e=>({...e,hasPreview:!1,previewUrl:void 0})));OCA.Viewer.open({fileInfo:s.find((e=>e.source===t.source)),enableSidebar:!1})},compareVersion(e){let{version:t}=e;const s=this.versions.map((e=>({...e,hasPreview:!1,previewUrl:void 0})));OCA.Viewer.compare(this.viewerFileInfo,s.find((e=>e.source===t.source)))}}},Q=(0,Y.Z)(H,(function(){var e=this,t=e._self._c;return t("ul",{attrs:{"data-files-versions-versions-list":""}},e._l(e.orderedVersions,(function(s){return t("Version",{key:s.mtime,attrs:{"can-view":e.canView,"can-compare":e.canCompare,"load-preview":e.isActive,version:s,"file-info":e.fileInfo,"is-current":s.mtime===e.fileInfo.mtime,"is-first-version":s.mtime===e.initialVersionMtime},on:{click:e.openVersion,compare:e.compareVersion,restore:e.handleRestore,"label-update":e.handleLabelUpdate,delete:e.handleDelete}})})),1)}),[],!1,null,null,null).exports;var J=n(2324),X=n(27608);i.default.prototype.t=o.Iu,i.default.prototype.n=o.uN,i.default.use(J.default);const K=i.default.extend(Q);let ee=null;window.addEventListener("DOMContentLoaded",(function(){var e;void 0!==(null===(e=OCA.Files)||void 0===e?void 0:e.Sidebar)&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"version_vue",name:(0,o.Iu)("files_versions","Versions"),iconSvg:X,async mount(e,t,s){ee&&ee.$destroy(),ee=new K({parent:s}),await ee.update(t),ee.$mount(e)},update(e){ee.update(e)},setIsActive(e){ee.setIsActive(e)},destroy(){ee.$destroy(),ee=null},enabled(e){var t;return!(null===(t=null==e?void 0:e.isDirectory())||void 0===t||t)}}))}))},42035:(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var n=s(87537),i=s.n(n),o=s(23645),r=s.n(o)()(i());r.push([e.id,".version[data-v-82925d6c]{display:flex;flex-direction:row}.version__info[data-v-82925d6c]{display:flex;flex-direction:row;align-items:center;gap:.5rem}.version__info__size[data-v-82925d6c]{color:var(--color-text-lighter)}.version__image[data-v-82925d6c]{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-label-modal[data-v-82925d6c]{display:flex;justify-content:space-between;flex-direction:column;height:250px;padding:16px}.version-label-modal__title[data-v-82925d6c]{margin-bottom:12px;font-weight:600}.version-label-modal__info[data-v-82925d6c]{margin-top:12px;color:var(--color-text-maxcontrast)}.version-label-modal__actions[data-v-82925d6c]{display:flex;justify-content:space-between;margin-top:64px}","",{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,CAIF,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 {\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\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:""}]);const a=r},46700:(e,t,s)=>{var n={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function i(e){var t=o(e);return s(t)}function o(e){if(!s.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}i.keys=function(){return Object.keys(n)},i.resolve=o,e.exports=i,i.id=46700}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var s=o[e]={id:e,loaded:!1,exports:{}};return i[e].call(s.exports,s,s.exports,r),s.loaded=!0,s.exports}r.m=i,e=[],r.O=(t,s,n,i)=>{if(!s){var o=1/0;for(d=0;d<e.length;d++){s=e[d][0],n=e[d][1],i=e[d][2];for(var a=!0,l=0;l<s.length;l++)(!1&i||o>=i)&&Object.keys(r.O).every((e=>r.O[e](s[l])))?s.splice(l--,1):(a=!1,i<o&&(o=i));if(a){e.splice(d--,1);var c=n();void 0!==c&&(t=c)}}return t}i=i||0;for(var d=e.length;d>0&&e[d-1][2]>i;d--)e[d]=e[d-1];e[d]=[s,n,i]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var s in t)r.o(t,s)&&!r.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((t,s)=>(r.f[s](e,t),t)),[])),r.u=e=>e+"-"+e+".js?v=00434e4baa0d8e7b79f1",r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s={},n="nextcloud:",r.l=(e,t,i,o)=>{if(s[e])s[e].push(t);else{var a,l;if(void 0!==i)for(var c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var u=c[d];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==n+i){a=u;break}}a||(l=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,r.nc&&a.setAttribute("nonce",r.nc),a.setAttribute("data-webpack",n+i),a.src=e),s[e]=[t];var f=(t,n)=>{a.onerror=a.onload=null,clearTimeout(v);var i=s[e];if(delete s[e],a.parentNode&&a.parentNode.removeChild(a),i&&i.forEach((e=>e(n))),t)return t(n)},v=setTimeout(f.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=f.bind(null,a.onerror),a.onload=f.bind(null,a.onload),l&&document.head.appendChild(a)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.j=1358,(()=>{var e;r.g.importScripts&&(e=r.g.location+"");var t=r.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var s=t.getElementsByTagName("script");s.length&&(e=s[s.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=e})(),(()=>{r.b=document.baseURI||self.location.href;var e={1358:0};r.f.j=(t,s)=>{var n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)s.push(n[2]);else{var i=new Promise(((s,i)=>n=e[t]=[s,i]));s.push(n[2]=i);var o=r.p+r.u(t),a=new Error;r.l(o,(s=>{if(r.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var i=s&&("load"===s.type?"missing":s.type),o=s&&s.target&&s.target.src;a.message="Loading chunk "+t+" failed.\n("+i+": "+o+")",a.name="ChunkLoadError",a.type=i,a.request=o,n[1](a)}}),"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,s)=>{var n,i,o=s[0],a=s[1],l=s[2],c=0;if(o.some((t=>0!==e[t]))){for(n in a)r.o(a,n)&&(r.m[n]=a[n]);if(l)var d=l(r)}for(t&&t(s);c<o.length;c++)i=o[c],r.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return r.O(d)},s=self.webpackChunknextcloud=self.webpackChunknextcloud||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))})(),r.nc=void 0;var a=r.O(void 0,[7874],(()=>r(38708)));a=r.O(a)})();
-//# sourceMappingURL=files_versions-files_versions.js.map?v=843ec7913e12c3e65770 \ No newline at end of file
+(()=>{var e,s,n,i={10711:(e,s,n)=>{"use strict";var i=n(20144),o=n(31352),r=n(64024),a=n(3344),l=n.n(a),c=n(77958),d=n(65358),f=n(79753),u=n(80351),v=n.n(u);const m=function(e){const t=(e.startsWith("/")?e:"/".concat(e)).split("/");let s="";return t.forEach((e=>{""!==e&&(s+="/"+encodeURIComponent(e))})),s};var p,h=n(14596);const b=(0,f.generateRemoteUrl)("dav"),A=(0,h.eI)(b,{headers:{"X-Requested-With":"XMLHttpRequest",requesttoken:null!==(p=(0,c.IH)())&&void 0!==p?p:""}}),j=(0,n(17499).IY)().setApp("files_version").detectUser().build();var _=n(62520),g=n.n(_);var y=n(88722),C=n(41293),w=n(15743),x=n(73229),k=n(80419),V=n(57612),I=n(24860),L=n(15961),z=n(79954);const O={name:"Version",components:{NcActionLink:L.ih,NcActionButton:L.Js,NcListItem:L.hx,NcModal:L.Jc,NcButton:L.P2,NcTextField:L.h3,BackupRestore:y.Z,Download:C.Z,FileCompare:w.Z,Pencil:x.default,Check:k.default,Delete:V.Z,ImageOffOutline:I.Z},directives:{tooltip:L.u},filters:{humanReadableSize:e=>OC.Util.humanFileSize(e),humanDateFromNow:e=>v()(e).fromNow()},props:{version:{type:Object,required:!0},fileInfo:{type:Object,required:!0},isCurrent:{type:Boolean,default:!1},isFirstVersion:{type:Boolean,default:!1},loadPreview:{type:Boolean,default:!1},canView:{type:Boolean,default:!1},canCompare:{type:Boolean,default:!1}},data(){return{previewLoaded:!1,showVersionLabelForm:!1,formVersionLabelValue:this.version.label,capabilities:(0,z.j)("core","capabilities",{files:{version_labeling:!1,version_deletion:!1}})}},computed:{versionLabel(){var e;const t=null!==(e=this.version.label)&&void 0!==e?e:"";return this.isCurrent?""===t?(0,o.Iu)("files_versions","Current version"):"".concat(t," (").concat((0,o.Iu)("files_versions","Current version"),")"):this.isFirstVersion&&""===t?(0,o.Iu)("files_versions","Initial version"):t},downloadURL(){return this.isCurrent?(0,f.getRootUrl)()+(0,d.RQ)("/remote.php/webdav",this.fileInfo.path,this.fileInfo.name):(0,f.getRootUrl)()+this.version.url},formattedDate(){return v()(this.version.mtime).format("LLL")},enableLabeling(){return!0===this.capabilities.files.version_labeling},enableDeletion(){return!0===this.capabilities.files.version_deletion}},methods:{openVersionLabelModal(){this.showVersionLabelForm=!0,this.$nextTick((()=>{this.$refs.labelInput.$el.getElementsByTagName("input")[0].focus()}))},restoreVersion(){this.$emit("restore",this.version)},setVersionLabel(e){this.formVersionLabelValue=e,this.showVersionLabelForm=!1,this.$emit("label-update",this.version,e)},deleteVersion(){this.$emit("delete",this.version)},click(){this.canView?this.$emit("click",{version:this.version}):window.location=this.downloadURL},compareVersion(){if(!this.canView)throw new Error("Cannot compare version of this file");this.$emit("compare",{version:this.version})}}};var N=n(93379),B=n.n(N),R=n(7795),S=n.n(R),D=n(90569),F=n.n(D),U=n(3565),E=n.n(U),P=n(19216),T=n.n(P),$=n(44589),M=n.n($),q=n(28176),Z={};Z.styleTagTransform=M(),Z.setAttributes=E(),Z.insert=F().bind(null,"head"),Z.domAPI=S(),Z.insertStyleElement=T(),B()(q.Z,Z),q.Z&&q.Z.locals&&q.Z.locals;var Y=n(51900);const W=(0,Y.Z)(O,(function(){var e=this,t=e._self._c;return t("div",[t("NcListItem",{staticClass:"version",attrs:{title:e.versionLabel,"force-display-actions":!0,"data-files-versions-version":""},on:{click:e.click},scopedSlots:e._u([{key:"icon",fn:function(){return[e.loadPreview||e.previewLoaded?e.isCurrent||e.version.hasPreview?t("img",{staticClass:"version__image",attrs:{src:e.version.previewUrl,alt:"",decoding:"async",fetchpriority:"low",loading:"lazy"},on:{load:function(t){e.previewLoaded=!0}}}):t("div",{staticClass:"version__image"},[t("ImageOffOutline",{attrs:{size:20}})],1):t("div",{staticClass:"version__image"})]},proxy:!0},{key:"subtitle",fn:function(){return[t("div",{staticClass:"version__info"},[t("span",{attrs:{title:e.formattedDate}},[e._v(e._s(e._f("humanDateFromNow")(e.version.mtime)))]),e._v(" "),t("span",{staticClass:"version__info__size"},[e._v("•")]),e._v(" "),t("span",{staticClass:"version__info__size"},[e._v(e._s(e._f("humanReadableSize")(e.version.size)))])])]},proxy:!0},{key:"actions",fn:function(){return[e.enableLabeling?t("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.openVersionLabelModal},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Pencil",{attrs:{size:22}})]},proxy:!0}],null,!1,3072546167)},[e._v("\n\t\t\t\t"+e._s(""===e.version.label?e.t("files_versions","Name this version"):e.t("files_versions","Edit version name"))+"\n\t\t\t")]):e._e(),e._v(" "),!e.isCurrent&&e.canView&&e.canCompare?t("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.compareVersion},scopedSlots:e._u([{key:"icon",fn:function(){return[t("FileCompare",{attrs:{size:22}})]},proxy:!0}],null,!1,1958207595)},[e._v("\n\t\t\t\t"+e._s(e.t("files_versions","Compare to current version"))+"\n\t\t\t")]):e._e(),e._v(" "),e.isCurrent?e._e():t("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.restoreVersion},scopedSlots:e._u([{key:"icon",fn:function(){return[t("BackupRestore",{attrs:{size:22}})]},proxy:!0}],null,!1,2239038444)},[e._v("\n\t\t\t\t"+e._s(e.t("files_versions","Restore version"))+"\n\t\t\t")]),e._v(" "),t("NcActionLink",{attrs:{href:e.downloadURL,"close-after-click":!0,download:e.downloadURL},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Download",{attrs:{size:22}})]},proxy:!0}])},[e._v("\n\t\t\t\t"+e._s(e.t("files_versions","Download version"))+"\n\t\t\t")]),e._v(" "),!e.isCurrent&&e.enableDeletion?t("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.deleteVersion},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Delete",{attrs:{size:22}})]},proxy:!0}],null,!1,2429175571)},[e._v("\n\t\t\t\t"+e._s(e.t("files_versions","Delete version"))+"\n\t\t\t")]):e._e()]},proxy:!0}])}),e._v(" "),e.showVersionLabelForm?t("NcModal",{attrs:{title:e.t("files_versions","Name this version")},on:{close:function(t){e.showVersionLabelForm=!1}}},[t("form",{staticClass:"version-label-modal",on:{submit:function(t){return t.preventDefault(),e.setVersionLabel(e.formVersionLabelValue)}}},[t("label",[t("div",{staticClass:"version-label-modal__title"},[e._v(e._s(e.t("photos","Version name")))]),e._v(" "),t("NcTextField",{ref:"labelInput",attrs:{value:e.formVersionLabelValue,placeholder:e.t("photos","Version name"),"label-outside":!0},on:{"update:value":function(t){e.formVersionLabelValue=t}}})],1),e._v(" "),t("div",{staticClass:"version-label-modal__info"},[e._v("\n\t\t\t\t"+e._s(e.t("photos","Named versions are persisted, and excluded from automatic cleanups when your storage quota is full."))+"\n\t\t\t")]),e._v(" "),t("div",{staticClass:"version-label-modal__actions"},[t("NcButton",{attrs:{disabled:0===e.formVersionLabelValue.trim().length},on:{click:function(t){return e.setVersionLabel("")}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_versions","Remove version name"))+"\n\t\t\t\t")]),e._v(" "),t("NcButton",{attrs:{type:"primary","native-type":"submit"},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Check")]},proxy:!0}],null,!1,2308323205)},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_versions","Save version name"))+"\n\t\t\t\t")])],1)])]):e._e()],1)}),[],!1,null,"b584f27c",null).exports;var G=n(69183);const H={name:"VersionTab",components:{Version:W},mixins:[l()],data:()=>({fileInfo:null,isActive:!1,versions:[],loading:!1}),mounted(){(0,G.Ld)("files_versions:restore:restored",this.fetchVersions)},beforeUnmount(){(0,G.r1)("files_versions:restore:restored",this.fetchVersions)},computed:{orderedVersions(){return[...this.versions].sort(((e,t)=>e.mtime===this.fileInfo.mtime?-1:t.mtime===this.fileInfo.mtime?1:t.mtime-e.mtime))},initialVersionMtime(){return this.versions.map((e=>e.mtime)).reduce(((e,t)=>Math.min(e,t)))},viewerFileInfo(){let e="";return 1&this.fileInfo.permissions&&(e+="R"),2&this.fileInfo.permissions&&(e+="W"),8&this.fileInfo.permissions&&(e+="D"),{...this.fileInfo,mime:this.fileInfo.mimetype,basename:this.fileInfo.name,filename:this.fileInfo.path+"/"+this.fileInfo.name,permissions:e,fileid:this.fileInfo.id}},canView(){var e,t;return null===(e=window.OCA.Viewer)||void 0===e||null===(t=e.mimetypesCompare)||void 0===t?void 0:t.includes(this.fileInfo.mimetype)},canCompare(){return!this.isMobile}},methods:{async update(e){this.fileInfo=e,this.resetState(),this.fetchVersions()},async setIsActive(e){this.isActive=e},async fetchVersions(){try{this.loading=!0,this.versions=await async function(e){var t;const s="/versions/".concat(null===(t=(0,c.ts)())||void 0===t?void 0:t.uid,"/versions/").concat(e.id);try{return(await A.getDirectoryContents(s,{data:'<?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>',details:!0})).data.filter((e=>{let{mime:t}=e;return""!==t})).map((t=>function(e,t){const s=1e3*v()(e.lastmod).unix();let n="",i="";var o,r;return s===t.mtime?(i=g().join("files",null!==(o=null===(r=(0,c.ts)())||void 0===r?void 0:r.uid)&&void 0!==o?o:"",t.path,t.name),n=(0,f.generateUrl)("/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0",{fileId:t.id,fileEtag:t.etag})):(i=e.filename,n=(0,f.generateUrl)("/apps/files_versions/preview?file={file}&version={fileVersion}",{file:(0,d.RQ)(t.path,t.name),fileVersion:e.basename})),{fileId:t.id,label:e.props["version-label"],filename:i,basename:v()(s).format("LLL"),mime:e.mime,etag:"".concat(e.props.getetag),size:e.size,type:e.type,mtime:s,permissions:"R",hasPreview:1===e.props["has-preview"],previewUrl:n,url:(0,d.RQ)("/remote.php/dav",i),source:(0,f.generateRemoteUrl)("dav")+m(i),fileVersion:e.basename}}(t,e)))}catch(e){throw j.error("Could not fetch version",{exception:e}),e}}(this.fileInfo)}finally{this.loading=!1}},async handleRestore(e){const s=this.fileInfo;this.fileInfo={...this.fileInfo,size:e.size,mtime:e.mtime};const n={preventDefault:!1,fileInfo:this.fileInfo,version:e};if((0,G.j8)("files_versions:restore:requested",n),!n.preventDefault)try{await async function(e){try{var t,s;j.debug("Restoring version",{url:e.url}),await A.moveFile("/versions/".concat(null===(t=(0,c.ts)())||void 0===t?void 0:t.uid,"/versions/").concat(e.fileId,"/").concat(e.fileVersion),"/versions/".concat(null===(s=(0,c.ts)())||void 0===s?void 0:s.uid,"/restore/target"))}catch(e){throw j.error("Could not restore version",{exception:e}),e}}(e),""!==e.label?(0,r.s$)(t("files_versions","".concat(e.label," restored"))):e.mtime===this.initialVersionMtime?(0,r.s$)(t("files_versions","Initial version restored")):(0,r.s$)(t("files_versions","Version restored")),(0,G.j8)("files_versions:restore:restored",e)}catch(n){this.fileInfo=s,(0,r.x2)(t("files_versions","Could not restore version")),(0,G.j8)("files_versions:restore:failed",e)}},async handleLabelUpdate(e,s){const n=e.label;e.label=s;try{await async function(e,t){return await A.customRequest(e.filename,{method:"PROPPATCH",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>'.concat(t,"</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>")})}(e,s)}catch(s){e.label=n,(0,r.x2)(t("files_versions","Could not set version name"))}},async handleDelete(e){const s=this.versions.indexOf(e);this.versions.splice(s,1);try{await async function(e){await A.deleteFile(e.filename)}(e)}catch(s){this.versions.push(e),(0,r.x2)(t("files_versions","Could not delete version"))}},resetState(){this.$set(this,"versions",[])},openVersion(e){let{version:t}=e;if(t.mtime===this.fileInfo.mtime)return void OCA.Viewer.open({fileInfo:this.viewerFileInfo});const s=this.versions.map((e=>({...e,hasPreview:!1,previewUrl:void 0})));OCA.Viewer.open({fileInfo:s.find((e=>e.source===t.source)),enableSidebar:!1})},compareVersion(e){let{version:t}=e;const s=this.versions.map((e=>({...e,hasPreview:!1,previewUrl:void 0})));OCA.Viewer.compare(this.viewerFileInfo,s.find((e=>e.source===t.source)))}}},Q=(0,Y.Z)(H,(function(){var e=this,t=e._self._c;return t("ul",{attrs:{"data-files-versions-versions-list":""}},e._l(e.orderedVersions,(function(s){return t("Version",{key:s.mtime,attrs:{"can-view":e.canView,"can-compare":e.canCompare,"load-preview":e.isActive,version:s,"file-info":e.fileInfo,"is-current":s.mtime===e.fileInfo.mtime,"is-first-version":s.mtime===e.initialVersionMtime},on:{click:e.openVersion,compare:e.compareVersion,restore:e.handleRestore,"label-update":e.handleLabelUpdate,delete:e.handleDelete}})})),1)}),[],!1,null,null,null).exports;var J=n(2324),X=n(27608);i.default.prototype.t=o.Iu,i.default.prototype.n=o.uN,i.default.use(J.default);const K=i.default.extend(Q);let ee=null;window.addEventListener("DOMContentLoaded",(function(){var e;void 0!==(null===(e=OCA.Files)||void 0===e?void 0:e.Sidebar)&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"version_vue",name:(0,o.Iu)("files_versions","Versions"),iconSvg:X,async mount(e,t,s){ee&&ee.$destroy(),ee=new K({parent:s}),await ee.update(t),ee.$mount(e)},update(e){ee.update(e)},setIsActive(e){ee.setIsActive(e)},destroy(){ee.$destroy(),ee=null},enabled(e){var t;return!(null===(t=null==e?void 0:e.isDirectory())||void 0===t||t)}}))}))},28176:(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var n=s(87537),i=s.n(n),o=s(23645),r=s.n(o)()(i());r.push([e.id,".version[data-v-b584f27c]{display:flex;flex-direction:row}.version__info[data-v-b584f27c]{display:flex;flex-direction:row;align-items:center;gap:.5rem}.version__info__size[data-v-b584f27c]{color:var(--color-text-lighter)}.version__image[data-v-b584f27c]{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-label-modal[data-v-b584f27c]{display:flex;justify-content:space-between;flex-direction:column;height:250px;padding:16px}.version-label-modal__title[data-v-b584f27c]{margin-bottom:12px;font-weight:600}.version-label-modal__info[data-v-b584f27c]{margin-top:12px;color:var(--color-text-maxcontrast)}.version-label-modal__actions[data-v-b584f27c]{display:flex;justify-content:space-between;margin-top:64px}","",{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,CAIF,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 {\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\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:""}]);const a=r},46700:(e,t,s)=>{var n={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function i(e){var t=o(e);return s(t)}function o(e){if(!s.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}i.keys=function(){return Object.keys(n)},i.resolve=o,e.exports=i,i.id=46700}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var s=o[e]={id:e,loaded:!1,exports:{}};return i[e].call(s.exports,s,s.exports,r),s.loaded=!0,s.exports}r.m=i,e=[],r.O=(t,s,n,i)=>{if(!s){var o=1/0;for(d=0;d<e.length;d++){s=e[d][0],n=e[d][1],i=e[d][2];for(var a=!0,l=0;l<s.length;l++)(!1&i||o>=i)&&Object.keys(r.O).every((e=>r.O[e](s[l])))?s.splice(l--,1):(a=!1,i<o&&(o=i));if(a){e.splice(d--,1);var c=n();void 0!==c&&(t=c)}}return t}i=i||0;for(var d=e.length;d>0&&e[d-1][2]>i;d--)e[d]=e[d-1];e[d]=[s,n,i]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var s in t)r.o(t,s)&&!r.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((t,s)=>(r.f[s](e,t),t)),[])),r.u=e=>e+"-"+e+".js?v=00434e4baa0d8e7b79f1",r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s={},n="nextcloud:",r.l=(e,t,i,o)=>{if(s[e])s[e].push(t);else{var a,l;if(void 0!==i)for(var c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var f=c[d];if(f.getAttribute("src")==e||f.getAttribute("data-webpack")==n+i){a=f;break}}a||(l=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,r.nc&&a.setAttribute("nonce",r.nc),a.setAttribute("data-webpack",n+i),a.src=e),s[e]=[t];var u=(t,n)=>{a.onerror=a.onload=null,clearTimeout(v);var i=s[e];if(delete s[e],a.parentNode&&a.parentNode.removeChild(a),i&&i.forEach((e=>e(n))),t)return t(n)},v=setTimeout(u.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=u.bind(null,a.onerror),a.onload=u.bind(null,a.onload),l&&document.head.appendChild(a)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.j=1358,(()=>{var e;r.g.importScripts&&(e=r.g.location+"");var t=r.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var s=t.getElementsByTagName("script");s.length&&(e=s[s.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=e})(),(()=>{r.b=document.baseURI||self.location.href;var e={1358:0};r.f.j=(t,s)=>{var n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)s.push(n[2]);else{var i=new Promise(((s,i)=>n=e[t]=[s,i]));s.push(n[2]=i);var o=r.p+r.u(t),a=new Error;r.l(o,(s=>{if(r.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var i=s&&("load"===s.type?"missing":s.type),o=s&&s.target&&s.target.src;a.message="Loading chunk "+t+" failed.\n("+i+": "+o+")",a.name="ChunkLoadError",a.type=i,a.request=o,n[1](a)}}),"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,s)=>{var n,i,o=s[0],a=s[1],l=s[2],c=0;if(o.some((t=>0!==e[t]))){for(n in a)r.o(a,n)&&(r.m[n]=a[n]);if(l)var d=l(r)}for(t&&t(s);c<o.length;c++)i=o[c],r.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return r.O(d)},s=self.webpackChunknextcloud=self.webpackChunknextcloud||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))})(),r.nc=void 0;var a=r.O(void 0,[7874],(()=>r(10711)));a=r.O(a)})();
+//# sourceMappingURL=files_versions-files_versions.js.map?v=5b7570222333c1219486 \ No newline at end of file
diff --git a/dist/files_versions-files_versions.js.map b/dist/files_versions-files_versions.js.map
index d716011d8d4..751562758b3 100644
--- a/dist/files_versions-files_versions.js.map
+++ b/dist/files_versions-files_versions.js.map
@@ -1 +1 @@
-{"version":3,"file":"files_versions-files_versions.js?v=843ec7913e12c3e65770","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.js","webpack:///nextcloud/apps/files_versions/src/utils/davClient.js","webpack:///nextcloud/apps/files_versions/src/utils/logger.js","webpack://nextcloud/./apps/files_versions/src/components/Version.vue?f787","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?5cf8","webpack://nextcloud/./apps/files_versions/src/components/Version.vue?0a31","webpack:///nextcloud/apps/files_versions/src/views/VersionTab.vue","webpack:///nextcloud/apps/files_versions/src/views/VersionTab.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_versions/src/utils/versions.js","webpack:///nextcloud/apps/files_versions/src/utils/davRequest.js","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=82925d6c&prod&scoped=true&lang=scss&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","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\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 */\n\nconst encodeFilePath = function(path) {\n\tconst pathSections = (path.startsWith('/') ? path : `/${path}`).split('/')\n\tlet relativePath = ''\n\tpathSections.forEach((section) => {\n\t\tif (section !== '') {\n\t\t\trelativePath += '/' + encodeURIComponent(section)\n\t\t}\n\t})\n\treturn relativePath\n}\n\n/**\n * Extract dir and name from file path\n *\n * @param {string} path the full path\n * @return {string[]} [dirPath, fileName]\n */\nconst extractFilePaths = function(path) {\n\tconst pathSections = path.split('/')\n\tconst fileName = pathSections[pathSections.length - 1]\n\tconst dirPath = pathSections.slice(0, pathSections.length - 1).join('/')\n\treturn [dirPath, fileName]\n}\n\nexport { encodeFilePath, extractFilePaths }\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 } from '@nextcloud/auth'\n\nconst rootPath = 'dav'\n\n// init webdav client on default dav endpoint\nconst remote = generateRemoteUrl(rootPath)\nexport default createClient(remote, {\n\theaders: {\n\t\t// Add this so the server knows it is an request from the browser\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t// Inject user auth\n\t\trequesttoken: getRequestToken() ?? '',\n\t},\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 { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files_version')\n\t.detectUser()\n\t.build()\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('NcListItem',{staticClass:\"version\",attrs:{\"title\":_vm.versionLabel,\"force-display-actions\":true,\"data-files-versions-version\":\"\"},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)?_c('img',{staticClass:\"version__image\",attrs:{\"src\":_vm.version.previewUrl,\"alt\":\"\",\"decoding\":\"async\",\"fetchpriority\":\"low\",\"loading\":\"lazy\"},on:{\"load\":function($event){_vm.previewLoaded = true}}}):_c('div',{staticClass:\"version__image\"},[_c('ImageOffOutline',{attrs:{\"size\":20}})],1)]},proxy:true},{key:\"subtitle\",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)?_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":_vm.openVersionLabelModal},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":22}})]},proxy:true}],null,false,3072546167)},[_vm._v(\"\\n\\t\\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\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isCurrent && _vm.canView && _vm.canCompare)?_c('NcActionButton',{attrs:{\"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\\t\"+_vm._s(_vm.t('files_versions', 'Compare to current version'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isCurrent)?_c('NcActionButton',{attrs:{\"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\\t\"+_vm._s(_vm.t('files_versions', 'Restore version'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionLink',{attrs:{\"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}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Download version'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(!_vm.isCurrent && _vm.enableDeletion)?_c('NcActionButton',{attrs:{\"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\\t\"+_vm._s(_vm.t('files_versions', 'Delete version'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true}])}),_vm._v(\" \"),(_vm.showVersionLabelForm)?_c('NcModal',{attrs:{\"title\":_vm.t('files_versions', 'Name this version')},on:{\"close\":function($event){_vm.showVersionLabelForm = false}}},[_c('form',{staticClass:\"version-label-modal\",on:{\"submit\":function($event){$event.preventDefault();return _vm.setVersionLabel(_vm.formVersionLabelValue)}}},[_c('label',[_c('div',{staticClass:\"version-label-modal__title\"},[_vm._v(_vm._s(_vm.t('photos', 'Version name')))]),_vm._v(\" \"),_c('NcTextField',{ref:\"labelInput\",attrs:{\"value\":_vm.formVersionLabelValue,\"placeholder\":_vm.t('photos', 'Version name'),\"label-outside\":true},on:{\"update:value\":function($event){_vm.formVersionLabelValue=$event}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"version-label-modal__info\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"version-label-modal__actions\"},[_c('NcButton',{attrs:{\"disabled\":_vm.formVersionLabelValue.trim().length === 0},on:{\"click\":function($event){return _vm.setVersionLabel('')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Remove version name'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\",\"native-type\":\"submit\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Check')]},proxy:true}],null,false,2308323205)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Save version name'))+\"\\n\\t\\t\\t\\t\")])],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<template>\n\t<div>\n\t\t<NcListItem class=\"version\"\n\t\t\t:title=\"versionLabel\"\n\t\t\t:force-display-actions=\"true\"\n\t\t\tdata-files-versions-version\n\t\t\t@click=\"click\">\n\t\t\t<template #icon>\n\t\t\t\t<div v-if=\"!(loadPreview || previewLoaded)\" class=\"version__image\" />\n\t\t\t\t<img v-else-if=\"isCurrent || version.hasPreview\"\n\t\t\t\t\t:src=\"version.previewUrl\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\tdecoding=\"async\"\n\t\t\t\t\tfetchpriority=\"low\"\n\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t\tclass=\"version__image\"\n\t\t\t\t\t@load=\"previewLoaded = true\">\n\t\t\t\t<div v-else\n\t\t\t\t\tclass=\"version__image\">\n\t\t\t\t\t<ImageOffOutline :size=\"20\" />\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template #subtitle>\n\t\t\t\t<div class=\"version__info\">\n\t\t\t\t\t<span :title=\"formattedDate\">{{ version.mtime | humanDateFromNow }}</span>\n\t\t\t\t\t<!-- Separate dot to improve alignement -->\n\t\t\t\t\t<span class=\"version__info__size\">•</span>\n\t\t\t\t\t<span class=\"version__info__size\">{{ version.size | humanReadableSize }}</span>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template #actions>\n\t\t\t\t<NcActionButton v-if=\"enableLabeling\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"openVersionLabelModal\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Pencil :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ version.label === '' ? t('files_versions', 'Name this version') : t('files_versions', 'Edit version name') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton v-if=\"!isCurrent && canView && canCompare\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"compareVersion\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<FileCompare :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_versions', 'Compare to current version') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton v-if=\"!isCurrent\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"restoreVersion\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<BackupRestore :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_versions', 'Restore version') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionLink :href=\"downloadURL\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t:download=\"downloadURL\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Download :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_versions', 'Download version') }}\n\t\t\t\t</NcActionLink>\n\t\t\t\t<NcActionButton v-if=\"!isCurrent && enableDeletion\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"deleteVersion\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Delete :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_versions', 'Delete version') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</template>\n\t\t</NcListItem>\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<form class=\"version-label-modal\"\n\t\t\t\t@submit.prevent=\"setVersionLabel(formVersionLabelValue)\">\n\t\t\t\t<label>\n\t\t\t\t\t<div class=\"version-label-modal__title\">{{ t('photos', 'Version name') }}</div>\n\t\t\t\t\t<NcTextField ref=\"labelInput\"\n\t\t\t\t\t\t:value.sync=\"formVersionLabelValue\"\n\t\t\t\t\t\t:placeholder=\"t('photos', 'Version name')\"\n\t\t\t\t\t\t:label-outside=\"true\" />\n\t\t\t\t</label>\n\n\t\t\t\t<div class=\"version-label-modal__info\">\n\t\t\t\t\t{{ t('photos', 'Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.') }}\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"version-label-modal__actions\">\n\t\t\t\t\t<NcButton :disabled=\"formVersionLabelValue.trim().length === 0\" @click=\"setVersionLabel('')\">\n\t\t\t\t\t\t{{ t('files_versions', 'Remove version name') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton type=\"primary\" native-type=\"submit\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Check />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('files_versions', 'Save version name') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t</NcModal>\n\t</div>\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 Check from 'vue-material-design-icons/Check.vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\nimport ImageOffOutline from 'vue-material-design-icons/ImageOffOutline.vue'\nimport { NcActionButton, NcActionLink, NcListItem, NcModal, NcButton, NcTextField, Tooltip } from '@nextcloud/vue'\nimport moment from '@nextcloud/moment'\nimport { translate } from '@nextcloud/l10n'\nimport { joinPaths } from '@nextcloud/paths'\nimport { getRootUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\n\nexport default {\n\tname: 'Version',\n\tcomponents: {\n\t\tNcActionLink,\n\t\tNcActionButton,\n\t\tNcListItem,\n\t\tNcModal,\n\t\tNcButton,\n\t\tNcTextField,\n\t\tBackupRestore,\n\t\tDownload,\n\t\tFileCompare,\n\t\tPencil,\n\t\tCheck,\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.js').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\tshowVersionLabelForm: false,\n\t\t\tformVersionLabelValue: this.version.label,\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 translate('files_versions', 'Current version')\n\t\t\t\t} else {\n\t\t\t\t\treturn `${label} (${translate('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 translate('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 && this.fileInfo.mountType !== 'group'\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\tenableDeletion() {\n\t\t\treturn this.capabilities.files.version_deletion === true && this.fileInfo.mountType !== 'group'\n\t\t},\n\t},\n\tmethods: {\n\t\topenVersionLabelModal() {\n\t\t\tthis.showVersionLabelForm = true\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.labelInput.$el.getElementsByTagName('input')[0].focus()\n\t\t\t})\n\t\t},\n\n\t\trestoreVersion() {\n\t\t\tthis.$emit('restore', this.version)\n\t\t},\n\n\t\tsetVersionLabel(label) {\n\t\t\tthis.formVersionLabelValue = label\n\t\t\tthis.showVersionLabelForm = false\n\t\t\tthis.$emit('label-update', this.version, label)\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\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\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</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=82925d6c&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=82925d6c&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=82925d6c&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=82925d6c&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 \"82925d6c\",\n null\n \n)\n\nexport default component.exports","<!--\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<ul data-files-versions-versions-list>\n\t\t<Version v-for=\"version in orderedVersions\"\n\t\t\t:key=\"version.mtime\"\n\t\t\t:can-view=\"canView\"\n\t\t\t:can-compare=\"canCompare\"\n\t\t\t:load-preview=\"isActive\"\n\t\t\t:version=\"version\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:is-current=\"version.mtime === fileInfo.mtime\"\n\t\t\t:is-first-version=\"version.mtime === initialVersionMtime\"\n\t\t\t@click=\"openVersion\"\n\t\t\t@compare=\"compareVersion\"\n\t\t\t@restore=\"handleRestore\"\n\t\t\t@label-update=\"handleLabelUpdate\"\n\t\t\t@delete=\"handleDelete\" />\n\t</ul>\n</template>\n\n<script>\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport isMobile from '@nextcloud/vue/dist/Mixins/isMobile.js'\nimport { fetchVersions, deleteVersion, restoreVersion, setVersionLabel } from '../utils/versions.js'\nimport Version from '../components/Version.vue'\nimport { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nexport default {\n\tname: 'VersionTab',\n\tcomponents: {\n\t\tVersion,\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.js').Version[]} */\n\t\t\tversions: [],\n\t\t\tloading: false,\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\tcomputed: {\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.js').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\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.js').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 *\n\t\t * @param {import('../utils/versions.js').Version} version\n\t\t * @param {string} newName\n\t\t */\n\t\tasync handleLabelUpdate(version, newName) {\n\t\t\tconst oldLabel = version.label\n\t\t\tversion.label = newName\n\n\t\t\ttry {\n\t\t\t\tawait setVersionLabel(version, newName)\n\t\t\t} catch (exception) {\n\t\t\t\tversion.label = oldLabel\n\t\t\t\tshowError(t('files_versions', 'Could not set version name'))\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.js').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\tconst versions = this.versions.map(version => ({ ...version, hasPreview: false, previewUrl: undefined }))\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","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 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 { getCurrentUser } from '@nextcloud/auth'\nimport { joinPaths } from '@nextcloud/paths'\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport moment from '@nextcloud/moment'\n\nimport { encodeFilePath } from '../../../files/src/utils/fileUtils.js'\n\nimport client from '../utils/davClient.js'\nimport davRequest from '../utils/davRequest.js'\nimport logger from '../utils/logger.js'\nimport path from 'path'\n\n/**\n * @typedef {object} Version\n * @property {string} fileId - The id of the file associated to the version.\n * @property {string} label - 'Current version' or ''\n * @property {string} filename - File name relative to the version DAV endpoint\n * @property {string} basename - A base name generated from the mtime\n * @property {string} mime - Empty for the current version, else the actual mime type of the version\n * @property {string} etag - Empty for the current version, else the actual mime type of the version\n * @property {string} size - Human readable size\n * @property {string} type - 'file'\n * @property {number} mtime - Version creation date as a timestamp\n * @property {string} permissions - Only readable: 'R'\n * @property {boolean} hasPreview - Whether the version has a preview\n * @property {string} previewUrl - Preview URL of the version\n * @property {string} url - Download URL of the version\n * @property {string} source - The WebDAV endpoint of the ressource\n * @property {string|null} fileVersion - The version id, null for the current version\n */\n\n/**\n * @param fileInfo\n * @return {Promise<Version[]>}\n */\nexport async function fetchVersions(fileInfo) {\n\tconst path = `/versions/${getCurrentUser()?.uid}/versions/${fileInfo.id}`\n\n\ttry {\n\t\t/** @type {import('webdav').ResponseDataDetailed<import('webdav').FileStat[]>} */\n\t\tconst response = await client.getDirectoryContents(path, {\n\t\t\tdata: davRequest,\n\t\t\tdetails: true,\n\t\t})\n\t\treturn response.data\n\t\t\t// Filter out root\n\t\t\t.filter(({ mime }) => mime !== '')\n\t\t\t.map(version => formatVersion(version, fileInfo))\n\t} catch (exception) {\n\t\tlogger.error('Could not fetch version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Restore the given version\n *\n * @param {Version} version\n */\nexport async function restoreVersion(version) {\n\ttry {\n\t\tlogger.debug('Restoring version', { url: version.url })\n\t\tawait client.moveFile(\n\t\t\t`/versions/${getCurrentUser()?.uid}/versions/${version.fileId}/${version.fileVersion}`,\n\t\t\t`/versions/${getCurrentUser()?.uid}/restore/target`,\n\t\t)\n\t} catch (exception) {\n\t\tlogger.error('Could not restore version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Format version\n *\n * @param {object} version - raw version received from the versions DAV endpoint\n * @param {object} fileInfo - file properties received from the files DAV endpoint\n * @return {Version}\n */\nfunction formatVersion(version, fileInfo) {\n\tconst mtime = moment(version.lastmod).unix() * 1000\n\tlet previewUrl = ''\n\tlet filename = ''\n\n\tif (mtime === fileInfo.mtime) { // Version is the current one\n\t\tfilename = path.join('files', getCurrentUser()?.uid ?? '', fileInfo.path, fileInfo.name)\n\t\tpreviewUrl = generateUrl('/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0', {\n\t\t\tfileId: fileInfo.id,\n\t\t\tfileEtag: fileInfo.etag,\n\t\t})\n\t} else {\n\t\tfilename = version.filename\n\t\tpreviewUrl = generateUrl('/apps/files_versions/preview?file={file}&version={fileVersion}', {\n\t\t\tfile: joinPaths(fileInfo.path, fileInfo.name),\n\t\t\tfileVersion: version.basename,\n\t\t})\n\t}\n\n\treturn {\n\t\tfileId: fileInfo.id,\n\t\tlabel: version.props['version-label'],\n\t\tfilename,\n\t\tbasename: moment(mtime).format('LLL'),\n\t\tmime: version.mime,\n\t\tetag: `${version.props.getetag}`,\n\t\tsize: version.size,\n\t\ttype: version.type,\n\t\tmtime,\n\t\tpermissions: 'R',\n\t\thasPreview: version.props['has-preview'] === 1,\n\t\tpreviewUrl,\n\t\turl: joinPaths('/remote.php/dav', filename),\n\t\tsource: generateRemoteUrl('dav') + encodeFilePath(filename),\n\t\tfileVersion: version.basename,\n\t}\n}\n\n/**\n * @param {Version} version\n * @param {string} newLabel\n */\nexport async function setVersionLabel(version, newLabel) {\n\treturn await client.customRequest(\n\t\tversion.filename,\n\t\t{\n\t\t\tmethod: 'PROPPATCH',\n\t\t\tdata: `<?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\t\t},\n\t)\n}\n\n/**\n * @param {Version} version\n */\nexport async function deleteVersion(version) {\n\tawait 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","import { render, staticRenderFns } from \"./VersionTab.vue?vue&type=template&id=5975005b&\"\nimport script from \"./VersionTab.vue?vue&type=script&lang=js&\"\nexport * from \"./VersionTab.vue?vue&type=script&lang=js&\"\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('ul',{attrs:{\"data-files-versions-versions-list\":\"\"}},_vm._l((_vm.orderedVersions),function(version){return _c('Version',{key:version.mtime,attrs:{\"can-view\":_vm.canView,\"can-compare\":_vm.canCompare,\"load-preview\":_vm.isActive,\"version\":version,\"file-info\":_vm.fileInfo,\"is-current\":version.mtime === _vm.fileInfo.mtime,\"is-first-version\":version.mtime === _vm.initialVersionMtime},on:{\"click\":_vm.openVersion,\"compare\":_vm.compareVersion,\"restore\":_vm.handleRestore,\"label-update\":_vm.handleLabelUpdate,\"delete\":_vm.handleDelete}})}),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\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-82925d6c]{display:flex;flex-direction:row}.version__info[data-v-82925d6c]{display:flex;flex-direction:row;align-items:center;gap:.5rem}.version__info__size[data-v-82925d6c]{color:var(--color-text-lighter)}.version__image[data-v-82925d6c]{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-label-modal[data-v-82925d6c]{display:flex;justify-content:space-between;flex-direction:column;height:250px;padding:16px}.version-label-modal__title[data-v-82925d6c]{margin-bottom:12px;font-weight:600}.version-label-modal__info[data-v-82925d6c]{margin-top:12px;color:var(--color-text-maxcontrast)}.version-label-modal__actions[data-v-82925d6c]{display:flex;justify-content:space-between;margin-top:64px}\", \"\",{\"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,CAIF,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 {\\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\\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","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// 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=\" + \"00434e4baa0d8e7b79f1\" + \"\";\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 = 1358;","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) scriptUrl = scripts[scripts.length - 1].src\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\t1358: 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} else installedChunks[chunkId] = 0;\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, [7874], () => (__webpack_require__(38708)))\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","createClient","headers","requesttoken","_getRequestToken","getRequestToken","getLoggerBuilder","setApp","detectUser","build","name","components","NcActionLink","NcActionButton","NcListItem","NcModal","NcButton","NcTextField","BackupRestore","Download","FileCompare","Pencil","Check","Delete","ImageOffOutline","directives","tooltip","Tooltip","filters","humanReadableSize","bytes","OC","Util","humanFileSize","humanDateFromNow","timestamp","moment","fromNow","props","version","type","Object","required","fileInfo","isCurrent","Boolean","default","isFirstVersion","loadPreview","canView","canCompare","data","previewLoaded","showVersionLabelForm","formVersionLabelValue","label","capabilities","loadState","files","version_labeling","version_deletion","computed","versionLabel","_this$version$label","translate","downloadURL","getRootUrl","joinPaths","url","formattedDate","mtime","format","enableLabeling","mountType","enableDeletion","methods","openVersionLabelModal","$nextTick","$refs","labelInput","$el","getElementsByTagName","focus","restoreVersion","$emit","setVersionLabel","deleteVersion","click","window","location","compareVersion","Error","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","attrs","on","scopedSlots","_u","key","fn","hasPreview","previewUrl","$event","proxy","_v","_s","_f","size","t","_e","preventDefault","ref","trim","length","Version","mixins","isMobile","isActive","versions","loading","mounted","subscribe","fetchVersions","beforeUnmount","unsubscribe","orderedVersions","sort","a","b","initialVersionMtime","map","reduce","Math","min","viewerFileInfo","davPermissions","permissions","mime","mimetype","basename","filename","fileid","id","_window$OCA$Viewer","_window$OCA$Viewer$mi","OCA","Viewer","mimetypesCompare","includes","resetState","async","_getCurrentUser","getCurrentUser","uid","client","details","filter","_ref","lastmod","unix","_getCurrentUser$uid","_getCurrentUser4","generateUrl","fileId","fileEtag","etag","file","fileVersion","getetag","source","formatVersion","exception","logger","error","oldFileInfo","restoreStartedEventState","emit","_getCurrentUser2","_getCurrentUser3","debug","showSuccess","showError","newName","oldLabel","newLabel","method","index","indexOf","splice","push","$set","openVersion","open","undefined","find","v","enableSidebar","_ref2","compare","_l","handleRestore","handleLabelUpdate","handleDelete","Vue","n","VTooltip","View","VersionTab","TabInstance","addEventListener","_OCA$Files","Files","Sidebar","registerTab","Tab","iconSvg","el","context","$destroy","parent","update","$mount","setIsActive","destroy","enabled","_fileInfo$isDirectory","isDirectory","___CSS_LOADER_EXPORT___","module","webpackContext","req","webpackContextResolve","__webpack_require__","o","e","code","keys","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","O","result","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","defineProperty","enumerable","get","f","chunkId","Promise","all","promises","u","g","globalThis","Function","obj","prop","prototype","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","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","currentScript","replace","p","baseURI","self","href","installedChunks","installedChunkData","promise","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"files_versions-files_versions.js?v=5b7570222333c1219486","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.js","webpack:///nextcloud/apps/files_versions/src/utils/davClient.js","webpack:///nextcloud/apps/files_versions/src/utils/logger.js","webpack://nextcloud/./apps/files_versions/src/components/Version.vue?f787","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?7df9","webpack://nextcloud/./apps/files_versions/src/components/Version.vue?0a31","webpack:///nextcloud/apps/files_versions/src/views/VersionTab.vue","webpack:///nextcloud/apps/files_versions/src/views/VersionTab.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_versions/src/utils/versions.js","webpack:///nextcloud/apps/files_versions/src/utils/davRequest.js","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=b584f27c&prod&scoped=true&lang=scss&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","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\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 */\n\nconst encodeFilePath = function(path) {\n\tconst pathSections = (path.startsWith('/') ? path : `/${path}`).split('/')\n\tlet relativePath = ''\n\tpathSections.forEach((section) => {\n\t\tif (section !== '') {\n\t\t\trelativePath += '/' + encodeURIComponent(section)\n\t\t}\n\t})\n\treturn relativePath\n}\n\n/**\n * Extract dir and name from file path\n *\n * @param {string} path the full path\n * @return {string[]} [dirPath, fileName]\n */\nconst extractFilePaths = function(path) {\n\tconst pathSections = path.split('/')\n\tconst fileName = pathSections[pathSections.length - 1]\n\tconst dirPath = pathSections.slice(0, pathSections.length - 1).join('/')\n\treturn [dirPath, fileName]\n}\n\nexport { encodeFilePath, extractFilePaths }\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 } from '@nextcloud/auth'\n\nconst rootPath = 'dav'\n\n// init webdav client on default dav endpoint\nconst remote = generateRemoteUrl(rootPath)\nexport default createClient(remote, {\n\theaders: {\n\t\t// Add this so the server knows it is an request from the browser\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t// Inject user auth\n\t\trequesttoken: getRequestToken() ?? '',\n\t},\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 { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files_version')\n\t.detectUser()\n\t.build()\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('NcListItem',{staticClass:\"version\",attrs:{\"title\":_vm.versionLabel,\"force-display-actions\":true,\"data-files-versions-version\":\"\"},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)?_c('img',{staticClass:\"version__image\",attrs:{\"src\":_vm.version.previewUrl,\"alt\":\"\",\"decoding\":\"async\",\"fetchpriority\":\"low\",\"loading\":\"lazy\"},on:{\"load\":function($event){_vm.previewLoaded = true}}}):_c('div',{staticClass:\"version__image\"},[_c('ImageOffOutline',{attrs:{\"size\":20}})],1)]},proxy:true},{key:\"subtitle\",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)?_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":_vm.openVersionLabelModal},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":22}})]},proxy:true}],null,false,3072546167)},[_vm._v(\"\\n\\t\\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\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isCurrent && _vm.canView && _vm.canCompare)?_c('NcActionButton',{attrs:{\"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\\t\"+_vm._s(_vm.t('files_versions', 'Compare to current version'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isCurrent)?_c('NcActionButton',{attrs:{\"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\\t\"+_vm._s(_vm.t('files_versions', 'Restore version'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionLink',{attrs:{\"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}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Download version'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(!_vm.isCurrent && _vm.enableDeletion)?_c('NcActionButton',{attrs:{\"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\\t\"+_vm._s(_vm.t('files_versions', 'Delete version'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true}])}),_vm._v(\" \"),(_vm.showVersionLabelForm)?_c('NcModal',{attrs:{\"title\":_vm.t('files_versions', 'Name this version')},on:{\"close\":function($event){_vm.showVersionLabelForm = false}}},[_c('form',{staticClass:\"version-label-modal\",on:{\"submit\":function($event){$event.preventDefault();return _vm.setVersionLabel(_vm.formVersionLabelValue)}}},[_c('label',[_c('div',{staticClass:\"version-label-modal__title\"},[_vm._v(_vm._s(_vm.t('photos', 'Version name')))]),_vm._v(\" \"),_c('NcTextField',{ref:\"labelInput\",attrs:{\"value\":_vm.formVersionLabelValue,\"placeholder\":_vm.t('photos', 'Version name'),\"label-outside\":true},on:{\"update:value\":function($event){_vm.formVersionLabelValue=$event}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"version-label-modal__info\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"version-label-modal__actions\"},[_c('NcButton',{attrs:{\"disabled\":_vm.formVersionLabelValue.trim().length === 0},on:{\"click\":function($event){return _vm.setVersionLabel('')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Remove version name'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\",\"native-type\":\"submit\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Check')]},proxy:true}],null,false,2308323205)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Save version name'))+\"\\n\\t\\t\\t\\t\")])],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<template>\n\t<div>\n\t\t<NcListItem class=\"version\"\n\t\t\t:title=\"versionLabel\"\n\t\t\t:force-display-actions=\"true\"\n\t\t\tdata-files-versions-version\n\t\t\t@click=\"click\">\n\t\t\t<template #icon>\n\t\t\t\t<div v-if=\"!(loadPreview || previewLoaded)\" class=\"version__image\" />\n\t\t\t\t<img v-else-if=\"isCurrent || version.hasPreview\"\n\t\t\t\t\t:src=\"version.previewUrl\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\tdecoding=\"async\"\n\t\t\t\t\tfetchpriority=\"low\"\n\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t\tclass=\"version__image\"\n\t\t\t\t\t@load=\"previewLoaded = true\">\n\t\t\t\t<div v-else\n\t\t\t\t\tclass=\"version__image\">\n\t\t\t\t\t<ImageOffOutline :size=\"20\" />\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template #subtitle>\n\t\t\t\t<div class=\"version__info\">\n\t\t\t\t\t<span :title=\"formattedDate\">{{ version.mtime | humanDateFromNow }}</span>\n\t\t\t\t\t<!-- Separate dot to improve alignement -->\n\t\t\t\t\t<span class=\"version__info__size\">•</span>\n\t\t\t\t\t<span class=\"version__info__size\">{{ version.size | humanReadableSize }}</span>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template #actions>\n\t\t\t\t<NcActionButton v-if=\"enableLabeling\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"openVersionLabelModal\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Pencil :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ version.label === '' ? t('files_versions', 'Name this version') : t('files_versions', 'Edit version name') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton v-if=\"!isCurrent && canView && canCompare\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"compareVersion\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<FileCompare :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_versions', 'Compare to current version') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton v-if=\"!isCurrent\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"restoreVersion\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<BackupRestore :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_versions', 'Restore version') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionLink :href=\"downloadURL\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t:download=\"downloadURL\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Download :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_versions', 'Download version') }}\n\t\t\t\t</NcActionLink>\n\t\t\t\t<NcActionButton v-if=\"!isCurrent && enableDeletion\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"deleteVersion\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Delete :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_versions', 'Delete version') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</template>\n\t\t</NcListItem>\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<form class=\"version-label-modal\"\n\t\t\t\t@submit.prevent=\"setVersionLabel(formVersionLabelValue)\">\n\t\t\t\t<label>\n\t\t\t\t\t<div class=\"version-label-modal__title\">{{ t('photos', 'Version name') }}</div>\n\t\t\t\t\t<NcTextField ref=\"labelInput\"\n\t\t\t\t\t\t:value.sync=\"formVersionLabelValue\"\n\t\t\t\t\t\t:placeholder=\"t('photos', 'Version name')\"\n\t\t\t\t\t\t:label-outside=\"true\" />\n\t\t\t\t</label>\n\n\t\t\t\t<div class=\"version-label-modal__info\">\n\t\t\t\t\t{{ t('photos', 'Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.') }}\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"version-label-modal__actions\">\n\t\t\t\t\t<NcButton :disabled=\"formVersionLabelValue.trim().length === 0\" @click=\"setVersionLabel('')\">\n\t\t\t\t\t\t{{ t('files_versions', 'Remove version name') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton type=\"primary\" native-type=\"submit\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Check />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('files_versions', 'Save version name') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t</NcModal>\n\t</div>\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 Check from 'vue-material-design-icons/Check.vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\nimport ImageOffOutline from 'vue-material-design-icons/ImageOffOutline.vue'\nimport { NcActionButton, NcActionLink, NcListItem, NcModal, NcButton, NcTextField, Tooltip } from '@nextcloud/vue'\nimport moment from '@nextcloud/moment'\nimport { translate } from '@nextcloud/l10n'\nimport { joinPaths } from '@nextcloud/paths'\nimport { getRootUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\n\nexport default {\n\tname: 'Version',\n\tcomponents: {\n\t\tNcActionLink,\n\t\tNcActionButton,\n\t\tNcListItem,\n\t\tNcModal,\n\t\tNcButton,\n\t\tNcTextField,\n\t\tBackupRestore,\n\t\tDownload,\n\t\tFileCompare,\n\t\tPencil,\n\t\tCheck,\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.js').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\tshowVersionLabelForm: false,\n\t\t\tformVersionLabelValue: this.version.label,\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 translate('files_versions', 'Current version')\n\t\t\t\t} else {\n\t\t\t\t\treturn `${label} (${translate('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 translate('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\t},\n\tmethods: {\n\t\topenVersionLabelModal() {\n\t\t\tthis.showVersionLabelForm = true\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.labelInput.$el.getElementsByTagName('input')[0].focus()\n\t\t\t})\n\t\t},\n\n\t\trestoreVersion() {\n\t\t\tthis.$emit('restore', this.version)\n\t\t},\n\n\t\tsetVersionLabel(label) {\n\t\t\tthis.formVersionLabelValue = label\n\t\t\tthis.showVersionLabelForm = false\n\t\t\tthis.$emit('label-update', this.version, label)\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\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\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</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=b584f27c&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=b584f27c&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=b584f27c&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=b584f27c&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 \"b584f27c\",\n null\n \n)\n\nexport default component.exports","<!--\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<ul data-files-versions-versions-list>\n\t\t<Version v-for=\"version in orderedVersions\"\n\t\t\t:key=\"version.mtime\"\n\t\t\t:can-view=\"canView\"\n\t\t\t:can-compare=\"canCompare\"\n\t\t\t:load-preview=\"isActive\"\n\t\t\t:version=\"version\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:is-current=\"version.mtime === fileInfo.mtime\"\n\t\t\t:is-first-version=\"version.mtime === initialVersionMtime\"\n\t\t\t@click=\"openVersion\"\n\t\t\t@compare=\"compareVersion\"\n\t\t\t@restore=\"handleRestore\"\n\t\t\t@label-update=\"handleLabelUpdate\"\n\t\t\t@delete=\"handleDelete\" />\n\t</ul>\n</template>\n\n<script>\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport isMobile from '@nextcloud/vue/dist/Mixins/isMobile.js'\nimport { fetchVersions, deleteVersion, restoreVersion, setVersionLabel } from '../utils/versions.js'\nimport Version from '../components/Version.vue'\nimport { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nexport default {\n\tname: 'VersionTab',\n\tcomponents: {\n\t\tVersion,\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.js').Version[]} */\n\t\t\tversions: [],\n\t\t\tloading: false,\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\tcomputed: {\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.js').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\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.js').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 *\n\t\t * @param {import('../utils/versions.js').Version} version\n\t\t * @param {string} newName\n\t\t */\n\t\tasync handleLabelUpdate(version, newName) {\n\t\t\tconst oldLabel = version.label\n\t\t\tversion.label = newName\n\n\t\t\ttry {\n\t\t\t\tawait setVersionLabel(version, newName)\n\t\t\t} catch (exception) {\n\t\t\t\tversion.label = oldLabel\n\t\t\t\tshowError(t('files_versions', 'Could not set version name'))\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.js').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\tconst versions = this.versions.map(version => ({ ...version, hasPreview: false, previewUrl: undefined }))\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","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 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 { getCurrentUser } from '@nextcloud/auth'\nimport { joinPaths } from '@nextcloud/paths'\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport moment from '@nextcloud/moment'\n\nimport { encodeFilePath } from '../../../files/src/utils/fileUtils.js'\n\nimport client from '../utils/davClient.js'\nimport davRequest from '../utils/davRequest.js'\nimport logger from '../utils/logger.js'\nimport path from 'path'\n\n/**\n * @typedef {object} Version\n * @property {string} fileId - The id of the file associated to the version.\n * @property {string} label - 'Current version' or ''\n * @property {string} filename - File name relative to the version DAV endpoint\n * @property {string} basename - A base name generated from the mtime\n * @property {string} mime - Empty for the current version, else the actual mime type of the version\n * @property {string} etag - Empty for the current version, else the actual mime type of the version\n * @property {string} size - Human readable size\n * @property {string} type - 'file'\n * @property {number} mtime - Version creation date as a timestamp\n * @property {string} permissions - Only readable: 'R'\n * @property {boolean} hasPreview - Whether the version has a preview\n * @property {string} previewUrl - Preview URL of the version\n * @property {string} url - Download URL of the version\n * @property {string} source - The WebDAV endpoint of the ressource\n * @property {string|null} fileVersion - The version id, null for the current version\n */\n\n/**\n * @param fileInfo\n * @return {Promise<Version[]>}\n */\nexport async function fetchVersions(fileInfo) {\n\tconst path = `/versions/${getCurrentUser()?.uid}/versions/${fileInfo.id}`\n\n\ttry {\n\t\t/** @type {import('webdav').ResponseDataDetailed<import('webdav').FileStat[]>} */\n\t\tconst response = await client.getDirectoryContents(path, {\n\t\t\tdata: davRequest,\n\t\t\tdetails: true,\n\t\t})\n\t\treturn response.data\n\t\t\t// Filter out root\n\t\t\t.filter(({ mime }) => mime !== '')\n\t\t\t.map(version => formatVersion(version, fileInfo))\n\t} catch (exception) {\n\t\tlogger.error('Could not fetch version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Restore the given version\n *\n * @param {Version} version\n */\nexport async function restoreVersion(version) {\n\ttry {\n\t\tlogger.debug('Restoring version', { url: version.url })\n\t\tawait client.moveFile(\n\t\t\t`/versions/${getCurrentUser()?.uid}/versions/${version.fileId}/${version.fileVersion}`,\n\t\t\t`/versions/${getCurrentUser()?.uid}/restore/target`,\n\t\t)\n\t} catch (exception) {\n\t\tlogger.error('Could not restore version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Format version\n *\n * @param {object} version - raw version received from the versions DAV endpoint\n * @param {object} fileInfo - file properties received from the files DAV endpoint\n * @return {Version}\n */\nfunction formatVersion(version, fileInfo) {\n\tconst mtime = moment(version.lastmod).unix() * 1000\n\tlet previewUrl = ''\n\tlet filename = ''\n\n\tif (mtime === fileInfo.mtime) { // Version is the current one\n\t\tfilename = path.join('files', getCurrentUser()?.uid ?? '', fileInfo.path, fileInfo.name)\n\t\tpreviewUrl = generateUrl('/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0', {\n\t\t\tfileId: fileInfo.id,\n\t\t\tfileEtag: fileInfo.etag,\n\t\t})\n\t} else {\n\t\tfilename = version.filename\n\t\tpreviewUrl = generateUrl('/apps/files_versions/preview?file={file}&version={fileVersion}', {\n\t\t\tfile: joinPaths(fileInfo.path, fileInfo.name),\n\t\t\tfileVersion: version.basename,\n\t\t})\n\t}\n\n\treturn {\n\t\tfileId: fileInfo.id,\n\t\tlabel: version.props['version-label'],\n\t\tfilename,\n\t\tbasename: moment(mtime).format('LLL'),\n\t\tmime: version.mime,\n\t\tetag: `${version.props.getetag}`,\n\t\tsize: version.size,\n\t\ttype: version.type,\n\t\tmtime,\n\t\tpermissions: 'R',\n\t\thasPreview: version.props['has-preview'] === 1,\n\t\tpreviewUrl,\n\t\turl: joinPaths('/remote.php/dav', filename),\n\t\tsource: generateRemoteUrl('dav') + encodeFilePath(filename),\n\t\tfileVersion: version.basename,\n\t}\n}\n\n/**\n * @param {Version} version\n * @param {string} newLabel\n */\nexport async function setVersionLabel(version, newLabel) {\n\treturn await client.customRequest(\n\t\tversion.filename,\n\t\t{\n\t\t\tmethod: 'PROPPATCH',\n\t\t\tdata: `<?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\t\t},\n\t)\n}\n\n/**\n * @param {Version} version\n */\nexport async function deleteVersion(version) {\n\tawait 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","import { render, staticRenderFns } from \"./VersionTab.vue?vue&type=template&id=5975005b&\"\nimport script from \"./VersionTab.vue?vue&type=script&lang=js&\"\nexport * from \"./VersionTab.vue?vue&type=script&lang=js&\"\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('ul',{attrs:{\"data-files-versions-versions-list\":\"\"}},_vm._l((_vm.orderedVersions),function(version){return _c('Version',{key:version.mtime,attrs:{\"can-view\":_vm.canView,\"can-compare\":_vm.canCompare,\"load-preview\":_vm.isActive,\"version\":version,\"file-info\":_vm.fileInfo,\"is-current\":version.mtime === _vm.fileInfo.mtime,\"is-first-version\":version.mtime === _vm.initialVersionMtime},on:{\"click\":_vm.openVersion,\"compare\":_vm.compareVersion,\"restore\":_vm.handleRestore,\"label-update\":_vm.handleLabelUpdate,\"delete\":_vm.handleDelete}})}),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\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-b584f27c]{display:flex;flex-direction:row}.version__info[data-v-b584f27c]{display:flex;flex-direction:row;align-items:center;gap:.5rem}.version__info__size[data-v-b584f27c]{color:var(--color-text-lighter)}.version__image[data-v-b584f27c]{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-label-modal[data-v-b584f27c]{display:flex;justify-content:space-between;flex-direction:column;height:250px;padding:16px}.version-label-modal__title[data-v-b584f27c]{margin-bottom:12px;font-weight:600}.version-label-modal__info[data-v-b584f27c]{margin-top:12px;color:var(--color-text-maxcontrast)}.version-label-modal__actions[data-v-b584f27c]{display:flex;justify-content:space-between;margin-top:64px}\", \"\",{\"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,CAIF,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 {\\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\\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","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// 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=\" + \"00434e4baa0d8e7b79f1\" + \"\";\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 = 1358;","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) scriptUrl = scripts[scripts.length - 1].src\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\t1358: 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} else installedChunks[chunkId] = 0;\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, [7874], () => (__webpack_require__(10711)))\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","createClient","headers","requesttoken","_getRequestToken","getRequestToken","getLoggerBuilder","setApp","detectUser","build","name","components","NcActionLink","NcActionButton","NcListItem","NcModal","NcButton","NcTextField","BackupRestore","Download","FileCompare","Pencil","Check","Delete","ImageOffOutline","directives","tooltip","Tooltip","filters","humanReadableSize","bytes","OC","Util","humanFileSize","humanDateFromNow","timestamp","moment","fromNow","props","version","type","Object","required","fileInfo","isCurrent","Boolean","default","isFirstVersion","loadPreview","canView","canCompare","data","previewLoaded","showVersionLabelForm","formVersionLabelValue","label","capabilities","loadState","files","version_labeling","version_deletion","computed","versionLabel","_this$version$label","translate","downloadURL","getRootUrl","joinPaths","url","formattedDate","mtime","format","enableLabeling","enableDeletion","methods","openVersionLabelModal","$nextTick","$refs","labelInput","$el","getElementsByTagName","focus","restoreVersion","$emit","setVersionLabel","deleteVersion","click","window","location","compareVersion","Error","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","attrs","on","scopedSlots","_u","key","fn","hasPreview","previewUrl","$event","proxy","_v","_s","_f","size","t","_e","preventDefault","ref","trim","length","Version","mixins","isMobile","isActive","versions","loading","mounted","subscribe","fetchVersions","beforeUnmount","unsubscribe","orderedVersions","sort","a","b","initialVersionMtime","map","reduce","Math","min","viewerFileInfo","davPermissions","permissions","mime","mimetype","basename","filename","fileid","id","_window$OCA$Viewer","_window$OCA$Viewer$mi","OCA","Viewer","mimetypesCompare","includes","resetState","async","_getCurrentUser","getCurrentUser","uid","client","details","filter","_ref","lastmod","unix","_getCurrentUser$uid","_getCurrentUser4","generateUrl","fileId","fileEtag","etag","file","fileVersion","getetag","source","formatVersion","exception","logger","error","oldFileInfo","restoreStartedEventState","emit","_getCurrentUser2","_getCurrentUser3","debug","showSuccess","showError","newName","oldLabel","newLabel","method","index","indexOf","splice","push","$set","openVersion","open","undefined","find","v","enableSidebar","_ref2","compare","_l","handleRestore","handleLabelUpdate","handleDelete","Vue","n","VTooltip","View","VersionTab","TabInstance","addEventListener","_OCA$Files","Files","Sidebar","registerTab","Tab","iconSvg","el","context","$destroy","parent","update","$mount","setIsActive","destroy","enabled","_fileInfo$isDirectory","isDirectory","___CSS_LOADER_EXPORT___","module","webpackContext","req","webpackContextResolve","__webpack_require__","o","e","code","keys","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","O","result","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","defineProperty","enumerable","get","f","chunkId","Promise","all","promises","u","g","globalThis","Function","obj","prop","prototype","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","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","currentScript","replace","p","baseURI","self","href","installedChunks","installedChunkData","promise","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file