]> source.dussan.org Git - nextcloud-server.git/commitdiff
Hide some actions based on node permissions and share attributes 43727/head
authorLouis Chemineau <louis@chmn.me>
Wed, 21 Feb 2024 15:47:19 +0000 (16:47 +0100)
committerLouis Chemineau <louis@chmn.me>
Wed, 21 Feb 2024 15:47:19 +0000 (16:47 +0100)
Signed-off-by: Louis Chemineau <louis@chmn.me>
apps/files_versions/src/components/Version.vue
dist/files_versions-files_versions.js
dist/files_versions-files_versions.js.LICENSE.txt
dist/files_versions-files_versions.js.map

index a03e71bc5dfdd0c8c22f8a49fb6d24926f61e03b..4a24891d49a3c165a65f3c0e7370394abed15aaa 100644 (file)
@@ -46,7 +46,7 @@
                        </div>
                </template>
                <template #actions>
-                       <NcActionButton v-if="enableLabeling"
+                       <NcActionButton v-if="enableLabeling && hasUpdatePermissions"
                                :close-after-click="true"
                                @click="labelUpdate">
                                <template #icon>
@@ -62,7 +62,7 @@
                                </template>
                                {{ t('files_versions', 'Compare to current version') }}
                        </NcActionButton>
-                       <NcActionButton v-if="!isCurrent"
+                       <NcActionButton v-if="!isCurrent && hasUpdatePermissions"
                                :close-after-click="true"
                                @click="restoreVersion">
                                <template #icon>
@@ -70,7 +70,8 @@
                                </template>
                                {{ t('files_versions', 'Restore version') }}
                        </NcActionButton>
-                       <NcActionLink :href="downloadURL"
+                       <NcActionLink v-if="isDownloadable"
+                               :href="downloadURL"
                                :close-after-click="true"
                                :download="downloadURL">
                                <template #icon>
@@ -78,7 +79,7 @@
                                </template>
                                {{ t('files_versions', 'Download version') }}
                        </NcActionLink>
-                       <NcActionButton v-if="!isCurrent && enableDeletion"
+                       <NcActionButton v-if="!isCurrent && enableDeletion && hasDeletePermissions"
                                :close-after-click="true"
                                @click="deleteVersion">
                                <template #icon>
@@ -106,6 +107,9 @@ import { translate as t } from '@nextcloud/l10n'
 import { joinPaths } from '@nextcloud/paths'
 import { getRootUrl } from '@nextcloud/router'
 import { loadState } from '@nextcloud/initial-state'
+import { Permission } from '@nextcloud/files'
+
+import { hasPermissions } from '../../../files_sharing/src/lib/SharePermissionsToolBox.js'
 
 export default {
        name: 'Version',
@@ -224,6 +228,33 @@ export default {
                enableDeletion() {
                        return this.capabilities.files.version_deletion === true
                },
+
+               /** @return {boolean} */
+               hasDeletePermissions() {
+                       return hasPermissions(this.fileInfo.permissions, Permission.DELETE)
+               },
+
+               /** @return {boolean} */
+               hasUpdatePermissions() {
+                       return hasPermissions(this.fileInfo.permissions, Permission.UPDATE)
+               },
+
+               /** @return {boolean} */
+               isDownloadable() {
+                       if ((this.fileInfo.permissions & Permission.READ) === 0) {
+                               return false
+                       }
+
+                       // If the mount type is a share, ensure it got download permissions.
+                       if (this.fileInfo.mountType === 'shared') {
+                               const downloadAttribute = this.fileInfo.shareAttributes.find((attribute) => attribute.scope === 'permissions' && attribute.key === 'download')
+                               if (downloadAttribute !== undefined && downloadAttribute.enabled === false) {
+                                       return false
+                               }
+                       }
+
+                       return true
+               },
        },
        methods: {
                labelUpdate() {
index 12c5b9e78f16a5212c9c2ddb9aebfb256e8de69d..4f47ca0f1519edbf320d0fb1d846a5c80df61b17 100644 (file)
@@ -1,3 +1,3 @@
 /*! For license information please see files_versions-files_versions.js.LICENSE.txt */
-(()=>{var e,i,s,n={13108:(e,i,s)=>{"use strict";var n=s(20144),r=s(31352),o=s(62520),a=s.n(o),l=s(64024),c=s(40946),d=s(69183),u=s(77958),p=s(87604),h=s(30220),f=s(65358),m=s(79753),v=s(80351),g=s.n(v);s(5656);const b=function(t){const e=(t.startsWith("/")?t:`/${t}`).split("/");let i="";return e.forEach((t=>{""!==t&&(i+="/"+encodeURIComponent(t))})),i};var w=s(14596);const A=(0,m.generateRemoteUrl)("dav"),y=(0,w.eI)(A,{headers:{"X-Requested-With":"XMLHttpRequest",requesttoken:(0,u.IH)()??""}}),_=(0,s(17499).IY)().setApp("files_version").detectUser().build();const C={name:"BackupRestoreIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var x=s(51900);const j=(0,x.Z)(C,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon backup-restore-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,N={name:"DownloadIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},k=(0,x.Z)(N,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon download-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,E={name:"FileCompareIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},V=(0,x.Z)(E,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon file-compare-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M10,18H6V16H10V18M10,14H6V12H10V14M10,1V2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V23H12V1H10M20,8V20C20,21.11 19.11,22 18,22H14V20H18V11H14V9H18.5L14,4.5V2L20,8M16,14H14V12H16V14M16,18H14V16H16V18Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var L=s(77531),I=s(42588);const S={name:"ImageOffOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},O=(0,x.Z)(S,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon image-off-outline-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M22 20.7L3.3 2L2 3.3L3 4.3V19C3 20.1 3.9 21 5 21H19.7L20.7 22L22 20.7M5 19V6.3L12.6 13.9L11.1 15.8L9 13.1L6 17H15.7L17.7 19H5M8.8 5L6.8 3H19C20.1 3 21 3.9 21 5V17.2L19 15.2V5H8.8"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var $=s(96606),P=s(87001),D=s(29682),R=s(99640),z=s(43554);const T={name:"Version",components:{NcActionLink:P.Z,NcActionButton:$.Z,NcListItem:D.N,BackupRestore:j,Download:k,FileCompare:V,Pencil:L.Z,Delete:I.Z,ImageOffOutline:O},directives:{tooltip:R.Z},filters:{humanReadableSize:t=>OC.Util.humanFileSize(t),humanDateFromNow:t=>g()(t).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:()=>({previewLoaded:!1,previewErrored:!1,capabilities:(0,z.j)("core","capabilities",{files:{version_labeling:!1,version_deletion:!1}})}),computed:{versionLabel(){const t=this.version.label??"";return this.isCurrent?""===t?(0,r.Iu)("files_versions","Current version"):`${t} (${(0,r.Iu)("files_versions","Current version")})`:this.isFirstVersion&&""===t?(0,r.Iu)("files_versions","Initial version"):t},downloadURL(){return this.isCurrent?(0,m.getRootUrl)()+(0,f.RQ)("/remote.php/webdav",this.fileInfo.path,this.fileInfo.name):(0,m.getRootUrl)()+this.version.url},formattedDate(){return g()(this.version.mtime).format("LLL")},enableLabeling(){return!0===this.capabilities.files.version_labeling},enableDeletion(){return!0===this.capabilities.files.version_deletion}},methods:{labelUpdate(){this.$emit("label-update-request")},restoreVersion(){this.$emit("restore",this.version)},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})},t:r.Iu}};var B=s(93379),F=s.n(B),H=s(7795),M=s.n(H),Z=s(90569),U=s.n(Z),q=s(3565),W=s.n(q),G=s(19216),K=s.n(G),Y=s(44589),X=s.n(Y),Q=s(82746),J={};J.styleTagTransform=X(),J.setAttributes=W(),J.insert=U().bind(null,"head"),J.domAPI=M(),J.insertStyleElement=K(),F()(Q.Z,J),Q.Z&&Q.Z.locals&&Q.Z.locals;const tt=(0,x.Z)(T,(function(){var t=this,e=t._self._c;return e("NcListItem",{staticClass:"version",attrs:{name:t.versionLabel,"force-display-actions":!0,"data-files-versions-version":""},on:{click:t.click},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loadPreview||t.previewLoaded?!t.isCurrent&&!t.version.hasPreview||t.previewErrored?e("div",{staticClass:"version__image"},[e("ImageOffOutline",{attrs:{size:20}})],1):e("img",{staticClass:"version__image",attrs:{src:t.version.previewUrl,alt:"",decoding:"async",fetchpriority:"low",loading:"lazy"},on:{load:function(e){t.previewLoaded=!0},error:function(e){t.previewErrored=!0}}}):e("div",{staticClass:"version__image"})]},proxy:!0},{key:"subname",fn:function(){return[e("div",{staticClass:"version__info"},[e("span",{attrs:{title:t.formattedDate}},[t._v(t._s(t._f("humanDateFromNow")(t.version.mtime)))]),t._v(" "),e("span",{staticClass:"version__info__size"},[t._v("•")]),t._v(" "),e("span",{staticClass:"version__info__size"},[t._v(t._s(t._f("humanReadableSize")(t.version.size)))])])]},proxy:!0},{key:"actions",fn:function(){return[t.enableLabeling?e("NcActionButton",{attrs:{"close-after-click":!0},on:{click:t.labelUpdate},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Pencil",{attrs:{size:22}})]},proxy:!0}],null,!1,3072546167)},[t._v("\n\t\t\t"+t._s(""===t.version.label?t.t("files_versions","Name this version"):t.t("files_versions","Edit version name"))+"\n\t\t")]):t._e(),t._v(" "),!t.isCurrent&&t.canView&&t.canCompare?e("NcActionButton",{attrs:{"close-after-click":!0},on:{click:t.compareVersion},scopedSlots:t._u([{key:"icon",fn:function(){return[e("FileCompare",{attrs:{size:22}})]},proxy:!0}],null,!1,1958207595)},[t._v("\n\t\t\t"+t._s(t.t("files_versions","Compare to current version"))+"\n\t\t")]):t._e(),t._v(" "),t.isCurrent?t._e():e("NcActionButton",{attrs:{"close-after-click":!0},on:{click:t.restoreVersion},scopedSlots:t._u([{key:"icon",fn:function(){return[e("BackupRestore",{attrs:{size:22}})]},proxy:!0}],null,!1,2239038444)},[t._v("\n\t\t\t"+t._s(t.t("files_versions","Restore version"))+"\n\t\t")]),t._v(" "),e("NcActionLink",{attrs:{href:t.downloadURL,"close-after-click":!0,download:t.downloadURL},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Download",{attrs:{size:22}})]},proxy:!0}])},[t._v("\n\t\t\t"+t._s(t.t("files_versions","Download version"))+"\n\t\t")]),t._v(" "),!t.isCurrent&&t.enableDeletion?e("NcActionButton",{attrs:{"close-after-click":!0},on:{click:t.deleteVersion},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Delete",{attrs:{size:22}})]},proxy:!0}],null,!1,2429175571)},[t._v("\n\t\t\t"+t._s(t.t("files_versions","Delete version"))+"\n\t\t")]):t._e()]},proxy:!0}])})}),[],!1,null,"3cb7975c",null).exports,et=(0,n.aZ)({name:"VirtualScrolling",props:{sections:{type:Array,required:!0},containerElement:{type:HTMLElement,default:null},useWindow:{type:Boolean,default:!1},headerHeight:{type:Number,default:75},renderDistance:{type:Number,default:.5},bottomBufferRatio:{type:Number,default:2},scrollToKey:{type:String,default:""}},data:()=>({scrollPosition:0,containerHeight:0,rowsContainerHeight:0,resizeObserver:null}),computed:{visibleSections(){_.debug("[VirtualScrolling] Computing visible section",{sections:this.sections});const t=this.containerHeight,e=this.scrollPosition,i=e+t;let s=0,n=0;const r=this.sections.map((r=>(n+=this.headerHeight,{...r,rows:r.rows.reduce(((r,o)=>{s=n,n+=o.height;let a=0;return n<e?a=(e-n)/t:s>i&&(a=(s-i)/t),a>this.renderDistance?r:[...r,{...o,distance:a}]}),[])}))).filter((t=>t.rows.length>0)),o=r.flatMap((t=>{let{rows:e}=t;return e})).flatMap((t=>{let{items:e}=t;return e})),a=this._rowIdToKeyMap;o.forEach((t=>t.key=a[t.id]));const l=o.map((t=>{let{key:e}=t;return e})).filter((t=>void 0!==t)),c=Object.values(a).filter((t=>!l.includes(t)));return o.filter((t=>{let{key:e}=t;return void 0===e})).forEach((t=>t.key=c.pop()??Math.random().toString(36).substr(2))),this._rowIdToKeyMap=o.reduce(((t,e)=>{let{id:i,key:s}=e;return{...t,[`${i}`]:s}}),{}),r},totalHeight(){return this.sections.map((t=>this.headerHeight+t.height)).reduce(((t,e)=>t+e),0)+0},paddingTop(){if(0===this.visibleSections.length)return 0;let t=0;for(const e of this.sections)if(e.key===this.visibleSections[0].rows[0].sectionKey){for(const i of e.rows){if(i.key===this.visibleSections[0].rows[0].key)return t;t+=i.height}t+=this.headerHeight}else t+=this.headerHeight+e.height;return t},rowsContainerStyle(){return{height:`${this.totalHeight}px`,paddingTop:`${this.paddingTop}px`}},isNearBottom(){const t=this.containerHeight*this.bottomBufferRatio;return this.scrollPosition+this.containerHeight>=this.totalHeight-t},container(){return _.debug("[VirtualScrolling] Computing container"),null!==this.containerElement?this.containerElement:this.useWindow?window:this.$refs.container}},watch:{isNearBottom(t){_.debug("[VirtualScrolling] isNearBottom changed",{value:t}),t&&this.$emit("need-content")},visibleSections(){this.isNearBottom&&this.$emit("need-content")},scrollToKey(t){let e=0;for(const i of this.sections){if(i.key===t)break;e+=this.headerHeight+i.height}_.debug("[VirtualScrolling] Scrolling to",{currentRowTopDistanceFromTop:e}),this.container.scrollTo({top:e,behavior:"smooth"})}},beforeCreate(){this._rowIdToKeyMap={}},mounted(){this.resizeObserver=new ResizeObserver((t=>{for(const e of t){const t=e.contentRect;e.target===this.container&&(this.containerHeight=t.height),e.target.classList.contains("vs-rows-container")&&(this.rowsContainerHeight=t.height)}})),this.useWindow?(window.addEventListener("resize",this.updateContainerSize,{passive:!0}),this.containerHeight=window.innerHeight):this.resizeObserver.observe(this.container),this.resizeObserver.observe(this.$refs.rowsContainer),this.container.addEventListener("scroll",this.updateScrollPosition,{passive:!0})},beforeDestroy(){this.useWindow&&window.removeEventListener("resize",this.updateContainerSize),this.resizeObserver?.disconnect(),this.container.removeEventListener("scroll",this.updateScrollPosition)},methods:{updateScrollPosition(){this._onScrollHandle??=requestAnimationFrame((()=>{this._onScrollHandle=null,this.useWindow?this.scrollPosition=this.container.scrollY:this.scrollPosition=this.container.scrollTop}))},updateContainerSize(){this.containerHeight=window.innerHeight}}});var it=s(87957),st={};st.styleTagTransform=X(),st.setAttributes=W(),st.insert=U().bind(null,"head"),st.domAPI=M(),st.insertStyleElement=K(),F()(it.Z,st),it.Z&&it.Z.locals&&it.Z.locals;const nt=(0,x.Z)(et,(function(){var t=this,e=t._self._c;return t._self._setupProxy,t.useWindow||null!==t.containerElement?e("div",{ref:"rowsContainer",staticClass:"vs-rows-container",style:t.rowsContainerStyle},[t._t("default",null,{visibleSections:t.visibleSections}),t._v(" "),t._t("loader")],2):e("div",{ref:"container",staticClass:"vs-container"},[e("div",{ref:"rowsContainer",staticClass:"vs-rows-container",style:t.rowsContainerStyle},[t._t("default",null,{visibleSections:t.visibleSections}),t._v(" "),t._t("loader")],2)])}),[],!1,null,"11dbbae6",null).exports;var rt=s(11734),ot=s(54572),at=s(49368);const lt=(0,n.aZ)({name:"VersionLabelForm",components:{NcButton:ot.Z,NcTextField:at.Z,Check:rt.Z},props:{versionLabel:{type:String,default:""}},data(){return{innerVersionLabel:this.versionLabel}},mounted(){this.$nextTick((()=>{this.$refs.labelInput.$el.getElementsByTagName("input")[0].focus()}))},methods:{setVersionLabel(t){this.$emit("label-update",t)},t:r.Iu}});var ct=s(77563),dt={};dt.styleTagTransform=X(),dt.setAttributes=W(),dt.insert=U().bind(null,"head"),dt.domAPI=M(),dt.insertStyleElement=K(),F()(ct.Z,dt),ct.Z&&ct.Z.locals&&ct.Z.locals;const ut={name:"VersionTab",components:{Version:tt,VirtualScrolling:nt,VersionLabelForm:(0,x.Z)(lt,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("form",{staticClass:"version-label-modal",on:{submit:function(e){return e.preventDefault(),t.setVersionLabel(t.innerVersionLabel)}}},[e("label",[e("div",{staticClass:"version-label-modal__title"},[t._v(t._s(t.t("files_versions","Version name")))]),t._v(" "),e("NcTextField",{ref:"labelInput",attrs:{value:t.innerVersionLabel,placeholder:t.t("files_versions","Version name"),"label-outside":!0},on:{"update:value":function(e){t.innerVersionLabel=e}}})],1),t._v(" "),e("div",{staticClass:"version-label-modal__info"},[t._v("\n\t\t"+t._s(t.t("files_versions","Named versions are persisted, and excluded from automatic cleanups when your storage quota is full."))+"\n\t")]),t._v(" "),e("div",{staticClass:"version-label-modal__actions"},[e("NcButton",{attrs:{disabled:0===t.innerVersionLabel.trim().length},on:{click:function(e){return t.setVersionLabel("")}}},[t._v("\n\t\t\t"+t._s(t.t("files_versions","Remove version name"))+"\n\t\t")]),t._v(" "),e("NcButton",{attrs:{type:"primary","native-type":"submit"},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Check")]},proxy:!0}])},[t._v("\n\t\t\t"+t._s(t.t("files_versions","Save version name"))+"\n\t\t")])],1)])}),[],!1,null,"58311f0c",null).exports,NcLoadingIcon:p.Z,NcModal:h.Z},mixins:[c.Z],data:()=>({fileInfo:null,isActive:!1,versions:[],loading:!1,showVersionLabelForm:!1}),computed:{sections(){return[{key:"versions",rows:this.orderedVersions.map((t=>({key:t.mtime,height:68,sectionKey:"versions",items:[t]}))),height:68*this.orderedVersions.length}]},orderedVersions(){return[...this.versions].sort(((t,e)=>t.mtime===this.fileInfo.mtime?-1:e.mtime===this.fileInfo.mtime?1:e.mtime-t.mtime))},initialVersionMtime(){return this.versions.map((t=>t.mtime)).reduce(((t,e)=>Math.min(t,e)))},viewerFileInfo(){let t="";return 1&this.fileInfo.permissions&&(t+="R"),2&this.fileInfo.permissions&&(t+="W"),8&this.fileInfo.permissions&&(t+="D"),{...this.fileInfo,mime:this.fileInfo.mimetype,basename:this.fileInfo.name,filename:this.fileInfo.path+"/"+this.fileInfo.name,permissions:t,fileid:this.fileInfo.id}},canView(){return window.OCA.Viewer?.mimetypesCompare?.includes(this.fileInfo.mimetype)},canCompare(){return!this.isMobile}},mounted(){(0,d.Ld)("files_versions:restore:restored",this.fetchVersions)},beforeUnmount(){(0,d.r1)("files_versions:restore:restored",this.fetchVersions)},methods:{async update(t){this.fileInfo=t,this.resetState(),this.fetchVersions()},async setIsActive(t){this.isActive=t},async fetchVersions(){try{this.loading=!0,this.versions=await async function(t){const e=`/versions/${(0,u.ts)()?.uid}/versions/${t.id}`;try{return(await y.getDirectoryContents(e,{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((t=>{let{mime:e}=t;return""!==e})).map((e=>function(t,e){const i=1e3*g()(t.lastmod).unix();let s="";return s=i===e.mtime?(0,m.generateUrl)("/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0",{fileId:e.id,fileEtag:e.etag}):(0,m.generateUrl)("/apps/files_versions/preview?file={file}&version={fileVersion}",{file:(0,f.RQ)(e.path,e.name),fileVersion:t.basename}),{fileId:e.id,label:t.props["version-label"],filename:t.filename,basename:g()(i).format("LLL"),mime:t.mime,etag:`${t.props.getetag}`,size:t.size,type:t.type,mtime:i,permissions:"R",hasPreview:1===t.props["has-preview"],previewUrl:s,url:(0,f.RQ)("/remote.php/dav",t.filename),source:(0,m.generateRemoteUrl)("dav")+b(t.filename),fileVersion:t.basename}}(e,t)))}catch(t){throw _.error("Could not fetch version",{exception:t}),t}}(this.fileInfo)}finally{this.loading=!1}},async handleRestore(e){const i=this.fileInfo;this.fileInfo={...this.fileInfo,size:e.size,mtime:e.mtime};const s={preventDefault:!1,fileInfo:this.fileInfo,version:e};if((0,d.j8)("files_versions:restore:requested",s),!s.preventDefault)try{await async function(t){try{_.debug("Restoring version",{url:t.url}),await y.moveFile(`/versions/${(0,u.ts)()?.uid}/versions/${t.fileId}/${t.fileVersion}`,`/versions/${(0,u.ts)()?.uid}/restore/target`)}catch(t){throw _.error("Could not restore version",{exception:t}),t}}(e),""!==e.label?(0,l.s$)(t("files_versions",`${e.label} restored`)):e.mtime===this.initialVersionMtime?(0,l.s$)(t("files_versions","Initial version restored")):(0,l.s$)(t("files_versions","Version restored")),(0,d.j8)("files_versions:restore:restored",e)}catch(s){this.fileInfo=i,(0,l.x2)(t("files_versions","Could not restore version")),(0,d.j8)("files_versions:restore:failed",e)}},handleLabelUpdateRequest(t){this.showVersionLabelForm=!0,this.editedVersion=t},async handleLabelUpdate(t){const e=this.editedVersion.label;this.editedVersion.label=t,this.showVersionLabelForm=!1;try{await async function(t,e){return await y.customRequest(t.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>${e}</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>`})}(this.editedVersion,t),this.editedVersion=null}catch(t){this.editedVersion.label=e,(0,l.x2)(this.t("files_versions","Could not set version label")),logger.error("Could not set version label",{exception:t})}},async handleDelete(e){const i=this.versions.indexOf(e);this.versions.splice(i,1);try{await async function(t){await y.deleteFile(t.filename)}(e)}catch(i){this.versions.push(e),(0,l.x2)(t("files_versions","Could not delete version"))}},resetState(){this.$set(this,"versions",[])},openVersion(t){let{version:e}=t;if(e.mtime===this.fileInfo.mtime)return void OCA.Viewer.open({fileInfo:this.viewerFileInfo});const i=this.versions.map((t=>({...t,filename:t.mtime===this.fileInfo.mtime?a().join("files",(0,u.ts)()?.uid??"",this.fileInfo.path,this.fileInfo.name):t.filename,hasPreview:!1,previewUrl:void 0})));OCA.Viewer.open({fileInfo:i.find((t=>t.source===e.source)),enableSidebar:!1})},compareVersion(t){let{version:e}=t;const i=this.versions.map((t=>({...t,hasPreview:!1,previewUrl:void 0})));OCA.Viewer.compare(this.viewerFileInfo,i.find((t=>t.source===e.source)))}}};var pt=s(72721),ht={};ht.styleTagTransform=X(),ht.setAttributes=W(),ht.insert=U().bind(null,"head"),ht.domAPI=M(),ht.insertStyleElement=K(),F()(pt.Z,ht),pt.Z&&pt.Z.locals&&pt.Z.locals;const ft=(0,x.Z)(ut,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"versions-tab__container"},[e("VirtualScrolling",{attrs:{sections:t.sections,"header-height":0},scopedSlots:t._u([{key:"default",fn:function(i){let{visibleSections:s}=i;return[e("ul",{attrs:{"data-files-versions-versions-list":""}},[1===s.length?t._l(s[0].rows,(function(i){return e("Version",{key:i.items[0].mtime,attrs:{"can-view":t.canView,"can-compare":t.canCompare,"load-preview":t.isActive,version:i.items[0],"file-info":t.fileInfo,"is-current":i.items[0].mtime===t.fileInfo.mtime,"is-first-version":i.items[0].mtime===t.initialVersionMtime},on:{click:t.openVersion,compare:t.compareVersion,restore:t.handleRestore,"label-update-request":function(e){return t.handleLabelUpdateRequest(i.items[0])},delete:t.handleDelete}})})):t._e()],2)]}}])},[t._v(" "),t.loading?e("NcLoadingIcon",{staticClass:"files-list-viewer__loader",attrs:{slot:"loader"},slot:"loader"}):t._e()],1),t._v(" "),t.showVersionLabelForm?e("NcModal",{attrs:{title:t.t("files_versions","Name this version")},on:{close:function(e){t.showVersionLabelForm=!1}}},[e("VersionLabelForm",{attrs:{"version-label":t.editedVersion.label},on:{"label-update":t.handleLabelUpdate}})],1):t._e()],1)}),[],!1,null,null,null).exports;var mt=s(2324);n.ZP.prototype.t=r.Iu,n.ZP.prototype.n=r.uN,n.ZP.use(mt.ZP);const vt=n.ZP.extend(ft);let gt=null;window.addEventListener("DOMContentLoaded",(function(){void 0!==OCA.Files?.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"version_vue",name:(0,r.Iu)("files_versions","Versions"),iconSvg:'<svg xmlns="http://www.w3.org/2000/svg" id="mdi-backup-restore" viewBox="0 0 24 24"><path d="M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z" /></svg>',async mount(t,e,i){gt&&gt.$destroy(),gt=new vt({parent:i}),await gt.update(e),gt.$mount(t)},update(t){gt.update(t)},setIsActive(t){gt&&gt.setIsActive(t)},destroy(){gt.$destroy(),gt=null},enabled:t=>!(t?.isDirectory()??1)}))}))},82746:(t,e,i)=>{"use strict";i.d(e,{Z:()=>a});var s=i(87537),n=i.n(s),r=i(23645),o=i.n(r)()(n());o.push([t.id,".version[data-v-3cb7975c]{display:flex;flex-direction:row}.version__info[data-v-3cb7975c]{display:flex;flex-direction:row;align-items:center;gap:.5rem}.version__info__size[data-v-3cb7975c]{color:var(--color-text-lighter)}.version__image[data-v-3cb7975c]{width:3rem;height:3rem;border:1px solid var(--color-border);border-radius:var(--border-radius-large);display:flex;justify-content:center;color:var(--color-text-light)}","",{version:3,sources:["webpack://./apps/files_versions/src/components/Version.vue"],names:[],mappings:"AACA,0BACC,YAAA,CACA,kBAAA,CAEA,gCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,SAAA,CAEA,sCACC,+BAAA,CAIF,iCACC,UAAA,CACA,WAAA,CACA,oCAAA,CACA,wCAAA,CAGA,YAAA,CACA,sBAAA,CACA,6BAAA",sourcesContent:["\n.version {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\t&__info {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\talign-items: center;\n\t\tgap: 0.5rem;\n\n\t\t&__size {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\t}\n\n\t&__image {\n\t\twidth: 3rem;\n\t\theight: 3rem;\n\t\tborder: 1px solid var(--color-border);\n\t\tborder-radius: var(--border-radius-large);\n\n\t\t// Useful to display no preview icon.\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tcolor: var(--color-text-light);\n\t}\n}\n"],sourceRoot:""}]);const a=o},77563:(t,e,i)=>{"use strict";i.d(e,{Z:()=>a});var s=i(87537),n=i.n(s),r=i(23645),o=i.n(r)()(n());o.push([t.id,".version-label-modal[data-v-58311f0c]{display:flex;justify-content:space-between;flex-direction:column;height:250px;padding:16px}.version-label-modal__title[data-v-58311f0c]{margin-bottom:12px;font-weight:600}.version-label-modal__info[data-v-58311f0c]{margin-top:12px;color:var(--color-text-maxcontrast)}.version-label-modal__actions[data-v-58311f0c]{display:flex;justify-content:space-between;margin-top:64px}","",{version:3,sources:["webpack://./apps/files_versions/src/components/VersionLabelForm.vue"],names:[],mappings:"AACA,sCACC,YAAA,CACA,6BAAA,CACA,qBAAA,CACA,YAAA,CACA,YAAA,CAEA,6CACC,kBAAA,CACA,eAAA,CAGD,4CACC,eAAA,CACA,mCAAA,CAGD,+CACC,YAAA,CACA,6BAAA,CACA,eAAA",sourcesContent:["\n.version-label-modal {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tflex-direction: column;\n\theight: 250px;\n\tpadding: 16px;\n\n\t&__title {\n\t\tmargin-bottom: 12px;\n\t\tfont-weight: 600;\n\t}\n\n\t&__info {\n\t\tmargin-top: 12px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__actions {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tmargin-top: 64px;\n\t}\n}\n"],sourceRoot:""}]);const a=o},87957:(t,e,i)=>{"use strict";i.d(e,{Z:()=>a});var s=i(87537),n=i.n(s),r=i(23645),o=i.n(r)()(n());o.push([t.id,".vs-container[data-v-11dbbae6]{overflow-y:scroll;height:100%}.vs-rows-container[data-v-11dbbae6]{box-sizing:border-box;will-change:scroll-position,padding;contain:layout paint style}","",{version:3,sources:["webpack://./apps/files_versions/src/components/VirtualScrolling.vue"],names:[],mappings:"AACA,+BACC,iBAAA,CACA,WAAA,CAGD,oCACC,qBAAA,CACA,mCAAA,CACA,0BAAA",sourcesContent:["\n.vs-container {\n\toverflow-y: scroll;\n\theight: 100%;\n}\n\n.vs-rows-container {\n\tbox-sizing: border-box;\n\twill-change: scroll-position, padding;\n\tcontain: layout paint style;\n}\n"],sourceRoot:""}]);const a=o},72721:(t,e,i)=>{"use strict";i.d(e,{Z:()=>a});var s=i(87537),n=i.n(s),r=i(23645),o=i.n(r)()(n());o.push([t.id,".versions-tab__container{height:100%}","",{version:3,sources:["webpack://./apps/files_versions/src/views/VersionTab.vue"],names:[],mappings:"AACA,yBACC,WAAA",sourcesContent:["\n.versions-tab__container {\n\theight: 100%;\n}\n"],sourceRoot:""}]);const a=o},46700:(t,e,i)=>{var s={"./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-ps":20315,"./ar-ps.js":20315,"./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-kmr":90563,"./ku-kmr.js":90563,"./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 n(t){var e=r(t);return i(e)}function r(t){if(!i.o(s,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return s[t]}n.keys=function(){return Object.keys(s)},n.resolve=r,t.exports=n,n.id=46700},5656:(t,e,i)=>{"use strict";i.d(e,{RL:()=>S,Tv:()=>y,_o:()=>E,h7:()=>w,pC:()=>I,rp:()=>L,sS:()=>h,tB:()=>A});var s,n=i(77958),r=i(17499),o=i(31352),a=i(62520),l=i(65358),c=i(79753),d=i(14596);null===(s=(0,n.ts)())?(0,r.IY)().setApp("files").build():(0,r.IY)().setApp("files").setUid(s.uid).build();const u=["B","KB","MB","GB","TB","PB"],p=["B","KiB","MiB","GiB","TiB","PiB"];function h(t,e=!1,i=!1,s=!1){i=i&&!s,"string"==typeof t&&(t=Number(t));let n=t>0?Math.floor(Math.log(t)/Math.log(s?1e3:1024)):0;n=Math.min((i?p.length:u.length)-1,n);const r=i?p[n]:u[n];let a=(t/Math.pow(s?1e3:1024,n)).toFixed(1);return!0===e&&0===n?("0.0"!==a?"< 1 ":"0 ")+(i?p[1]:u[1]):(a=n<2?parseFloat(a).toFixed(0):parseFloat(a).toLocaleString((0,o.aj)()),a+" "+r)}var f=(t=>(t[t.NONE=0]="NONE",t[t.CREATE=4]="CREATE",t[t.READ=1]="READ",t[t.UPDATE=2]="UPDATE",t[t.DELETE=8]="DELETE",t[t.SHARE=16]="SHARE",t[t.ALL=31]="ALL",t))(f||{});const m=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","nc:share-attributes","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:share-types","oc:size","ocs:share-permissions"],v={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"},g=function(){return typeof window._nc_dav_properties>"u"&&(window._nc_dav_properties=[...m]),window._nc_dav_properties.map((t=>`<${t} />`)).join(" ")},b=function(){return typeof window._nc_dav_namespaces>"u"&&(window._nc_dav_namespaces={...v}),Object.keys(window._nc_dav_namespaces).map((t=>`xmlns:${t}="${window._nc_dav_namespaces?.[t]}"`)).join(" ")},w=function(){return`<?xml version="1.0"?>\n\t\t<d:propfind ${b()}>\n\t\t\t<d:prop>\n\t\t\t\t${g()}\n\t\t\t</d:prop>\n\t\t</d:propfind>`},A=function(t){return`<?xml version="1.0" encoding="UTF-8"?>\n<d:searchrequest ${b()}\n\txmlns:ns="https://github.com/icewind1991/SearchDAV/ns">\n\t<d:basicsearch>\n\t\t<d:select>\n\t\t\t<d:prop>\n\t\t\t\t${g()}\n\t\t\t</d:prop>\n\t\t</d:select>\n\t\t<d:from>\n\t\t\t<d:scope>\n\t\t\t\t<d:href>/files/${(0,n.ts)()?.uid}/</d:href>\n\t\t\t\t<d:depth>infinity</d:depth>\n\t\t\t</d:scope>\n\t\t</d:from>\n\t\t<d:where>\n\t\t\t<d:and>\n\t\t\t\t<d:or>\n\t\t\t\t\t<d:not>\n\t\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t\t<d:getcontenttype/>\n\t\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t\t<d:literal>httpd/unix-directory</d:literal>\n\t\t\t\t\t\t</d:eq>\n\t\t\t\t\t</d:not>\n\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t<oc:size/>\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t<d:literal>0</d:literal>\n\t\t\t\t\t</d:eq>\n\t\t\t\t</d:or>\n\t\t\t\t<d:gt>\n\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t\t</d:prop>\n\t\t\t\t\t<d:literal>${t}</d:literal>\n\t\t\t\t</d:gt>\n\t\t\t</d:and>\n\t\t</d:where>\n\t\t<d:orderby>\n\t\t\t<d:order>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t</d:prop>\n\t\t\t\t<d:descending/>\n\t\t\t</d:order>\n\t\t</d:orderby>\n\t\t<d:limit>\n\t\t\t<d:nresults>100</d:nresults>\n\t\t\t<ns:firstresult>0</ns:firstresult>\n\t\t</d:limit>\n\t</d:basicsearch>\n</d:searchrequest>`};var y=(t=>(t.Folder="folder",t.File="file",t))(y||{});const _=function(t,e){return null!==t.match(e)},C=(t,e)=>{if(t.id&&"number"!=typeof t.id)throw new Error("Invalid id type of value");if(!t.source)throw new Error("Missing mandatory source");try{new URL(t.source)}catch{throw new Error("Invalid source format, source must be a valid URL")}if(!t.source.startsWith("http"))throw new Error("Invalid source format, only http(s) is supported");if(t.mtime&&!(t.mtime instanceof Date))throw new Error("Invalid mtime type");if(t.crtime&&!(t.crtime instanceof Date))throw new Error("Invalid crtime type");if(!t.mime||"string"!=typeof t.mime||!t.mime.match(/^[-\w.]+\/[-+\w.]+$/gi))throw new Error("Missing or invalid mandatory mime");if("size"in t&&"number"!=typeof t.size&&void 0!==t.size)throw new Error("Invalid size type");if("permissions"in t&&void 0!==t.permissions&&!("number"==typeof t.permissions&&t.permissions>=f.NONE&&t.permissions<=f.ALL))throw new Error("Invalid permissions");if(t.owner&&null!==t.owner&&"string"!=typeof t.owner)throw new Error("Invalid owner type");if(t.attributes&&"object"!=typeof t.attributes)throw new Error("Invalid attributes type");if(t.root&&"string"!=typeof t.root)throw new Error("Invalid root type");if(t.root&&!t.root.startsWith("/"))throw new Error("Root must start with a leading slash");if(t.root&&!t.source.includes(t.root))throw new Error("Root must be part of the source");if(t.root&&_(t.source,e)){const i=t.source.match(e)[0];if(!t.source.includes((0,a.join)(i,t.root)))throw new Error("The root must be relative to the service. e.g /files/emma")}if(t.status&&!Object.values(x).includes(t.status))throw new Error("Status must be a valid NodeStatus")};var x=(t=>(t.NEW="new",t.FAILED="failed",t.LOADING="loading",t.LOCKED="locked",t))(x||{});class j{_data;_attributes;_knownDavService=/(remote|public)\.php\/(web)?dav/i;constructor(t,e){C(t,e||this._knownDavService),this._data=t;const i={set:(t,e,i)=>(this.updateMtime(),Reflect.set(t,e,i)),deleteProperty:(t,e)=>(this.updateMtime(),Reflect.deleteProperty(t,e))};this._attributes=new Proxy(t.attributes||{},i),delete this._data.attributes,e&&(this._knownDavService=e)}get source(){return this._data.source.replace(/\/$/i,"")}get encodedSource(){const{origin:t}=new URL(this.source);return t+(0,l.Ec)(this.source.slice(t.length))}get basename(){return(0,a.basename)(this.source)}get extension(){return(0,a.extname)(this.source)}get dirname(){if(this.root){let t=this.source;this.isDavRessource&&(t=t.split(this._knownDavService).pop());const e=t.indexOf(this.root),i=this.root.replace(/\/$/,"");return(0,a.dirname)(t.slice(e+i.length)||"/")}const t=new URL(this.source);return(0,a.dirname)(t.pathname)}get mime(){return this._data.mime}get mtime(){return this._data.mtime}get crtime(){return this._data.crtime}get size(){return this._data.size}get attributes(){return this._attributes}get permissions(){return null!==this.owner||this.isDavRessource?void 0!==this._data.permissions?this._data.permissions:f.NONE:f.READ}get owner(){return this.isDavRessource?this._data.owner:null}get isDavRessource(){return _(this.source,this._knownDavService)}get root(){return this._data.root?this._data.root.replace(/^(.+)\/$/,"$1"):this.isDavRessource&&(0,a.dirname)(this.source).split(this._knownDavService).pop()||null}get path(){if(this.root){let t=this.source;this.isDavRessource&&(t=t.split(this._knownDavService).pop());const e=t.indexOf(this.root),i=this.root.replace(/\/$/,"");return t.slice(e+i.length)||"/"}return(this.dirname+"/"+this.basename).replace(/\/\//g,"/")}get fileid(){return this._data?.id||this.attributes?.fileid}get status(){return this._data?.status}set status(t){this._data.status=t}move(t){C({...this._data,source:t},this._knownDavService),this._data.source=t,this.updateMtime()}rename(t){if(t.includes("/"))throw new Error("Invalid basename");this.move((0,a.dirname)(this.source)+"/"+t)}updateMtime(){this._data.mtime&&(this._data.mtime=new Date)}}class N extends j{get type(){return y.File}}class k extends j{constructor(t){super({...t,mime:"httpd/unix-directory"})}get type(){return y.Folder}get extension(){return null}get mime(){return"httpd/unix-directory"}}const E=`/files/${(0,n.ts)()?.uid}`,V=(0,c.generateRemoteUrl)("dav"),L=function(t=V,e={}){const i=(0,d.eI)(t,{headers:e});function s(t){i.setHeaders({...e,"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}return(0,n._S)(s),s((0,n.IH)()),(0,d.lD)().patch("fetch",((t,e)=>{const i=e.headers;return i?.method&&(e.method=i.method,delete i.method),fetch(t,e)})),i},I=async(t,e="/",i=E)=>(await t.getDirectoryContents(`${i}${e}`,{details:!0,data:`<?xml version="1.0"?>\n\t\t<oc:filter-files ${b()}>\n\t\t\t<d:prop>\n\t\t\t\t${g()}\n\t\t\t</d:prop>\n\t\t\t<oc:filter-rules>\n\t\t\t\t<oc:favorite>1</oc:favorite>\n\t\t\t</oc:filter-rules>\n\t\t</oc:filter-files>`,headers:{method:"REPORT"},includeSelf:!0})).data.filter((t=>t.filename!==e)).map((t=>S(t,i))),S=function(t,e=E,i=V){const s=t.props,r=function(t=""){let e=f.NONE;return t&&((t.includes("C")||t.includes("K"))&&(e|=f.CREATE),t.includes("G")&&(e|=f.READ),(t.includes("W")||t.includes("N")||t.includes("V"))&&(e|=f.UPDATE),t.includes("D")&&(e|=f.DELETE),t.includes("R")&&(e|=f.SHARE)),e}(s?.permissions),o=s?.["owner-id"]||(0,n.ts)()?.uid,a={id:s?.fileid||0,source:`${i}${t.filename}`,mtime:new Date(Date.parse(t.lastmod)),mime:t.mime,size:s?.size||Number.parseInt(s.getcontentlength||"0"),permissions:r,owner:o,root:e,attributes:{...t,...s,hasPreview:s?.["has-preview"]}};return delete a.attributes?.props,"file"===t.type?new N(a):new k(a)};var O={};!function(t){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",i="["+e+"]["+e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",s=new RegExp("^"+i+"$");t.isExist=function(t){return typeof t<"u"},t.isEmptyObject=function(t){return 0===Object.keys(t).length},t.merge=function(t,e,i){if(e){const s=Object.keys(e),n=s.length;for(let r=0;r<n;r++)t[s[r]]="strict"===i?[e[s[r]]]:e[s[r]]}},t.getValue=function(e){return t.isExist(e)?e:""},t.isName=function(t){const e=s.exec(t);return!(null===e||typeof e>"u")},t.getAllMatches=function(t,e){const i=[];let s=e.exec(t);for(;s;){const n=[];n.startIndex=e.lastIndex-s[0].length;const r=s.length;for(let t=0;t<r;t++)n.push(s[t]);i.push(n),s=e.exec(t)}return i},t.nameRegexp=i}(O);new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");var $={};const P={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,i){return t}};$.buildOptions=function(t){return Object.assign({},P,t)},$.defaultOptions=P,!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);"<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)".replace(/NAME/g,O.nameRegexp),new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");var D={};function R(t,e,i){let s;const n={};for(let r=0;r<t.length;r++){const o=t[r],a=z(o);let l="";if(l=void 0===i?a:i+"."+a,a===e.textNodeName)void 0===s?s=o[a]:s+=""+o[a];else{if(void 0===a)continue;if(o[a]){let t=R(o[a],e,l);const i=B(t,e);o[":@"]?T(t,o[":@"],l,e):1!==Object.keys(t).length||void 0===t[e.textNodeName]||e.alwaysCreateTextNode?0===Object.keys(t).length&&(e.alwaysCreateTextNode?t[e.textNodeName]="":t=""):t=t[e.textNodeName],void 0!==n[a]&&n.hasOwnProperty(a)?(Array.isArray(n[a])||(n[a]=[n[a]]),n[a].push(t)):e.isArray(a,l,i)?n[a]=[t]:n[a]=t}}}return"string"==typeof s?s.length>0&&(n[e.textNodeName]=s):void 0!==s&&(n[e.textNodeName]=s),n}function z(t){const e=Object.keys(t);for(let t=0;t<e.length;t++){const i=e[t];if(":@"!==i)return i}}function T(t,e,i,s){if(e){const n=Object.keys(e),r=n.length;for(let o=0;o<r;o++){const r=n[o];s.isArray(r,i+"."+r,!0,!0)?t[r]=[e[r]]:t[r]=e[r]}}}function B(t,e){const{textNodeName:i}=e,s=Object.keys(t).length;return!(0!==s&&(1!==s||!t[i]&&"boolean"!=typeof t[i]&&0!==t[i]))}D.prettify=function(t,e){return R(t,e)};const{buildOptions:F}=$,{prettify:H}=D;function M(t,e,i,s){let n="",r=!1;for(let o=0;o<t.length;o++){const a=t[o],l=Z(a);if(void 0===l)continue;let c="";if(c=0===i.length?l:`${i}.${l}`,l===e.textNodeName){let t=a[l];q(c,e)||(t=e.tagValueProcessor(l,t),t=W(t,e)),r&&(n+=s),n+=t,r=!1;continue}if(l===e.cdataPropName){r&&(n+=s),n+=`<![CDATA[${a[l][0][e.textNodeName]}]]>`,r=!1;continue}if(l===e.commentPropName){n+=s+`\x3c!--${a[l][0][e.textNodeName]}--\x3e`,r=!0;continue}if("?"===l[0]){const t=U(a[":@"],e),i="?xml"===l?"":s;let o=a[l][0][e.textNodeName];o=0!==o.length?" "+o:"",n+=i+`<${l}${o}${t}?>`,r=!0;continue}let d=s;""!==d&&(d+=e.indentBy);const u=s+`<${l}${U(a[":@"],e)}`,p=M(a[l],e,c,d);-1!==e.unpairedTags.indexOf(l)?e.suppressUnpairedNode?n+=u+">":n+=u+"/>":p&&0!==p.length||!e.suppressEmptyNode?p&&p.endsWith(">")?n+=u+`>${p}${s}</${l}>`:(n+=u+">",p&&""!==s&&(p.includes("/>")||p.includes("</"))?n+=s+e.indentBy+p+s:n+=p,n+=`</${l}>`):n+=u+"/>",r=!0}return n}function Z(t){const e=Object.keys(t);for(let i=0;i<e.length;i++){const s=e[i];if(t.hasOwnProperty(s)&&":@"!==s)return s}}function U(t,e){let i="";if(t&&!e.ignoreAttributes)for(let s in t){if(!t.hasOwnProperty(s))continue;let n=e.attributeValueProcessor(s,t[s]);n=W(n,e),!0===n&&e.suppressBooleanAttributes?i+=` ${s.substr(e.attributeNamePrefix.length)}`:i+=` ${s.substr(e.attributeNamePrefix.length)}="${n}"`}return i}function q(t,e){let i=(t=t.substr(0,t.length-e.textNodeName.length-1)).substr(t.lastIndexOf(".")+1);for(let s in e.stopNodes)if(e.stopNodes[s]===t||e.stopNodes[s]==="*."+i)return!0;return!1}function W(t,e){if(t&&t.length>0&&e.processEntities)for(let i=0;i<e.entities.length;i++){const s=e.entities[i];t=t.replace(s.regex,s.val)}return t}const G=function(t,e){let i="";return e.format&&e.indentBy.length>0&&(i="\n"),M(t,e,"",i)},K={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:"  ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&amp;"},{regex:new RegExp(">","g"),val:"&gt;"},{regex:new RegExp("<","g"),val:"&lt;"},{regex:new RegExp("'","g"),val:"&apos;"},{regex:new RegExp('"',"g"),val:"&quot;"}],processEntities:!0,stopNodes:[],oneListGroup:!1};function Y(t){this.options=Object.assign({},K,t),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=J),this.processTextOrObjNode=X,this.options.format?(this.indentate=Q,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function X(t,e,i){const s=this.j2x(t,i+1);return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,s.attrStr,i):this.buildObjectNode(s.val,e,s.attrStr,i)}function Q(t){return this.options.indentBy.repeat(t)}function J(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}Y.prototype.build=function(t){return this.options.preserveOrder?G(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0).val)},Y.prototype.j2x=function(t,e){let i="",s="";for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n))if(typeof t[n]>"u")this.isAttribute(n)&&(s+="");else if(null===t[n])this.isAttribute(n)?s+="":"?"===n[0]?s+=this.indentate(e)+"<"+n+"?"+this.tagEndChar:s+=this.indentate(e)+"<"+n+"/"+this.tagEndChar;else if(t[n]instanceof Date)s+=this.buildTextValNode(t[n],n,"",e);else if("object"!=typeof t[n]){const r=this.isAttribute(n);if(r)i+=this.buildAttrPairStr(r,""+t[n]);else if(n===this.options.textNodeName){let e=this.options.tagValueProcessor(n,""+t[n]);s+=this.replaceEntitiesValue(e)}else s+=this.buildTextValNode(t[n],n,"",e)}else if(Array.isArray(t[n])){const i=t[n].length;let r="";for(let o=0;o<i;o++){const i=t[n][o];typeof i>"u"||(null===i?"?"===n[0]?s+=this.indentate(e)+"<"+n+"?"+this.tagEndChar:s+=this.indentate(e)+"<"+n+"/"+this.tagEndChar:"object"==typeof i?this.options.oneListGroup?r+=this.j2x(i,e+1).val:r+=this.processTextOrObjNode(i,n,e):r+=this.buildTextValNode(i,n,"",e))}this.options.oneListGroup&&(r=this.buildObjectNode(r,n,"",e)),s+=r}else if(this.options.attributesGroupName&&n===this.options.attributesGroupName){const e=Object.keys(t[n]),s=e.length;for(let r=0;r<s;r++)i+=this.buildAttrPairStr(e[r],""+t[n][e[r]])}else s+=this.processTextOrObjNode(t[n],n,e);return{attrStr:i,val:s}},Y.prototype.buildAttrPairStr=function(t,e){return e=this.options.attributeValueProcessor(t,""+e),e=this.replaceEntitiesValue(e),this.options.suppressBooleanAttributes&&"true"===e?" "+t:" "+t+'="'+e+'"'},Y.prototype.buildObjectNode=function(t,e,i,s){if(""===t)return"?"===e[0]?this.indentate(s)+"<"+e+i+"?"+this.tagEndChar:this.indentate(s)+"<"+e+i+this.closeTag(e)+this.tagEndChar;{let n="</"+e+this.tagEndChar,r="";return"?"===e[0]&&(r="?",n=""),!i&&""!==i||-1!==t.indexOf("<")?!1!==this.options.commentPropName&&e===this.options.commentPropName&&0===r.length?this.indentate(s)+`\x3c!--${t}--\x3e`+this.newLine:this.indentate(s)+"<"+e+i+r+this.tagEndChar+t+this.indentate(s)+n:this.indentate(s)+"<"+e+i+r+">"+t+n}},Y.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`></${t}`,e},Y.prototype.buildTextValNode=function(t,e,i,s){if(!1!==this.options.cdataPropName&&e===this.options.cdataPropName)return this.indentate(s)+`<![CDATA[${t}]]>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(s)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(s)+"<"+e+i+"?"+this.tagEndChar;{let n=this.options.tagValueProcessor(e,t);return n=this.replaceEntitiesValue(n),""===n?this.indentate(s)+"<"+e+i+this.closeTag(e)+this.tagEndChar:this.indentate(s)+"<"+e+i+">"+n+"</"+e+this.tagEndChar}},Y.prototype.replaceEntitiesValue=function(t){if(t&&t.length>0&&this.options.processEntities)for(let e=0;e<this.options.entities.length;e++){const i=this.options.entities[e];t=t.replace(i.regex,i.val)}return t}}},r={};function o(t){var e=r[t];if(void 0!==e)return e.exports;var i=r[t]={id:t,loaded:!1,exports:{}};return n[t].call(i.exports,i,i.exports,o),i.loaded=!0,i.exports}o.m=n,e=[],o.O=(t,i,s,n)=>{if(!i){var r=1/0;for(d=0;d<e.length;d++){i=e[d][0],s=e[d][1],n=e[d][2];for(var a=!0,l=0;l<i.length;l++)(!1&n||r>=n)&&Object.keys(o.O).every((t=>o.O[t](i[l])))?i.splice(l--,1):(a=!1,n<r&&(r=n));if(a){e.splice(d--,1);var c=s();void 0!==c&&(t=c)}}return t}n=n||0;for(var d=e.length;d>0&&e[d-1][2]>n;d--)e[d]=e[d-1];e[d]=[i,s,n]},o.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return o.d(e,{a:e}),e},o.d=(t,e)=>{for(var i in e)o.o(e,i)&&!o.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},o.f={},o.e=t=>Promise.all(Object.keys(o.f).reduce(((e,i)=>(o.f[i](t,e),e)),[])),o.u=t=>t+"-"+t+".js?v="+{4720:"67ff1816113751e83e78",6512:"4e739934e594e992c605"}[t],o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i={},s="nextcloud:",o.l=(t,e,n,r)=>{if(i[t])i[t].push(e);else{var a,l;if(void 0!==n)for(var c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var u=c[d];if(u.getAttribute("src")==t||u.getAttribute("data-webpack")==s+n){a=u;break}}a||(l=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,o.nc&&a.setAttribute("nonce",o.nc),a.setAttribute("data-webpack",s+n),a.src=t),i[t]=[e];var p=(e,s)=>{a.onerror=a.onload=null,clearTimeout(h);var n=i[t];if(delete i[t],a.parentNode&&a.parentNode.removeChild(a),n&&n.forEach((t=>t(s))),e)return e(s)},h=setTimeout(p.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=p.bind(null,a.onerror),a.onload=p.bind(null,a.onload),l&&document.head.appendChild(a)}},o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),o.j=1358,(()=>{var t;o.g.importScripts&&(t=o.g.location+"");var e=o.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var i=e.getElementsByTagName("script");if(i.length)for(var s=i.length-1;s>-1&&!t;)t=i[s--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=t})(),(()=>{o.b=document.baseURI||self.location.href;var t={1358:0};o.f.j=(e,i)=>{var s=o.o(t,e)?t[e]:void 0;if(0!==s)if(s)i.push(s[2]);else{var n=new Promise(((i,n)=>s=t[e]=[i,n]));i.push(s[2]=n);var r=o.p+o.u(e),a=new Error;o.l(r,(i=>{if(o.o(t,e)&&(0!==(s=t[e])&&(t[e]=void 0),s)){var n=i&&("load"===i.type?"missing":i.type),r=i&&i.target&&i.target.src;a.message="Loading chunk "+e+" failed.\n("+n+": "+r+")",a.name="ChunkLoadError",a.type=n,a.request=r,s[1](a)}}),"chunk-"+e,e)}},o.O.j=e=>0===t[e];var e=(e,i)=>{var s,n,r=i[0],a=i[1],l=i[2],c=0;if(r.some((e=>0!==t[e]))){for(s in a)o.o(a,s)&&(o.m[s]=a[s]);if(l)var d=l(o)}for(e&&e(i);c<r.length;c++)n=r[c],o.o(t,n)&&t[n]&&t[n][0](),t[n]=0;return o.O(d)},i=self.webpackChunknextcloud=self.webpackChunknextcloud||[];i.forEach(e.bind(null,0)),i.push=e.bind(null,i.push.bind(i))})(),o.nc=void 0;var a=o.O(void 0,[7874],(()=>o(13108)));a=o.O(a)})();
-//# sourceMappingURL=files_versions-files_versions.js.map?v=ddb3c3ede073c93ebeba
\ No newline at end of file
+(()=>{var e,i,s,n={64913:(e,i,s)=>{"use strict";var n=s(20144),r=s(31352),o=s(62520),a=s.n(o),l=s(64024),c=s(40946),d=s(69183),u=s(77958),p=s(87604),h=s(30220),f=s(65358),m=s(79753),v=s(80351),g=s.n(v),b=s(5656);const w=function(e){const t=(e.startsWith("/")?e:`/${e}`).split("/");let i="";return t.forEach((e=>{""!==e&&(i+="/"+encodeURIComponent(e))})),i};var y=s(14596);const A=(0,m.generateRemoteUrl)("dav"),_=(0,y.eI)(A,{headers:{"X-Requested-With":"XMLHttpRequest",requesttoken:(0,u.IH)()??""}}),C=(0,s(17499).IY)().setApp("files_version").detectUser().build();const x={name:"BackupRestoreIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var j=s(51900);const N=(0,j.Z)(x,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon backup-restore-icon",attrs:{"aria-hidden":!e.title,"aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,k={name:"DownloadIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},E=(0,j.Z)(k,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon download-icon",attrs:{"aria-hidden":!e.title,"aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports,V={name:"FileCompareIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},L=(0,j.Z)(V,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon file-compare-icon",attrs:{"aria-hidden":!e.title,"aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M10,18H6V16H10V18M10,14H6V12H10V14M10,1V2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V23H12V1H10M20,8V20C20,21.11 19.11,22 18,22H14V20H18V11H14V9H18.5L14,4.5V2L20,8M16,14H14V12H16V14M16,18H14V16H16V18Z"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var I=s(77531),S=s(42588);const O={name:"ImageOffOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},P=(0,j.Z)(O,(function(){var e=this,t=e._self._c;return t("span",e._b({staticClass:"material-design-icon image-off-outline-icon",attrs:{"aria-hidden":!e.title,"aria-label":e.title,role:"img"},on:{click:function(t){return e.$emit("click",t)}}},"span",e.$attrs,!1),[t("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[t("path",{attrs:{d:"M22 20.7L3.3 2L2 3.3L3 4.3V19C3 20.1 3.9 21 5 21H19.7L20.7 22L22 20.7M5 19V6.3L12.6 13.9L11.1 15.8L9 13.1L6 17H15.7L17.7 19H5M8.8 5L6.8 3H19C20.1 3 21 3.9 21 5V17.2L19 15.2V5H8.8"}},[e.title?t("title",[e._v(e._s(e.title))]):e._e()])])])}),[],!1,null,null,null).exports;var D=s(96606),$=s(87001),R=s(29682),T=s(99640),z=s(43554);const B=0;function F(e,t){return e!==B&&(e&t)===t}const H={name:"Version",components:{NcActionLink:$.Z,NcActionButton:D.Z,NcListItem:R.N,BackupRestore:N,Download:E,FileCompare:L,Pencil:I.Z,Delete:S.Z,ImageOffOutline:P},directives:{tooltip:T.Z},filters:{humanReadableSize:e=>OC.Util.humanFileSize(e),humanDateFromNow:e=>g()(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:()=>({previewLoaded:!1,previewErrored:!1,capabilities:(0,z.j)("core","capabilities",{files:{version_labeling:!1,version_deletion:!1}})}),computed:{versionLabel(){const e=this.version.label??"";return this.isCurrent?""===e?(0,r.Iu)("files_versions","Current version"):`${e} (${(0,r.Iu)("files_versions","Current version")})`:this.isFirstVersion&&""===e?(0,r.Iu)("files_versions","Initial version"):e},downloadURL(){return this.isCurrent?(0,m.getRootUrl)()+(0,f.RQ)("/remote.php/webdav",this.fileInfo.path,this.fileInfo.name):(0,m.getRootUrl)()+this.version.url},formattedDate(){return g()(this.version.mtime).format("LLL")},enableLabeling(){return!0===this.capabilities.files.version_labeling},enableDeletion(){return!0===this.capabilities.files.version_deletion},hasDeletePermissions(){return F(this.fileInfo.permissions,b.y3.DELETE)},hasUpdatePermissions(){return F(this.fileInfo.permissions,b.y3.UPDATE)},isDownloadable(){if(0==(this.fileInfo.permissions&b.y3.READ))return!1;if("shared"===this.fileInfo.mountType){const e=this.fileInfo.shareAttributes.find((e=>"permissions"===e.scope&&"download"===e.key));if(void 0!==e&&!1===e.enabled)return!1}return!0}},methods:{labelUpdate(){this.$emit("label-update-request")},restoreVersion(){this.$emit("restore",this.version)},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})},t:r.Iu}};var M=s(93379),Z=s.n(M),U=s(7795),q=s.n(U),W=s(90569),G=s.n(W),K=s(3565),Y=s.n(K),X=s(19216),Q=s.n(X),J=s(44589),ee=s.n(J),te=s(44898),ie={};ie.styleTagTransform=ee(),ie.setAttributes=Y(),ie.insert=G().bind(null,"head"),ie.domAPI=q(),ie.insertStyleElement=Q(),Z()(te.Z,ie),te.Z&&te.Z.locals&&te.Z.locals;const se=(0,j.Z)(H,(function(){var e=this,t=e._self._c;return t("NcListItem",{staticClass:"version",attrs:{name: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||e.previewErrored?t("div",{staticClass:"version__image"},[t("ImageOffOutline",{attrs:{size:20}})],1):t("img",{staticClass:"version__image",attrs:{src:e.version.previewUrl,alt:"",decoding:"async",fetchpriority:"low",loading:"lazy"},on:{load:function(t){e.previewLoaded=!0},error:function(t){e.previewErrored=!0}}}):t("div",{staticClass:"version__image"})]},proxy:!0},{key:"subname",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&&e.hasUpdatePermissions?t("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.labelUpdate},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Pencil",{attrs:{size:22}})]},proxy:!0}],null,!1,3072546167)},[e._v("\n\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")]):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"+e._s(e.t("files_versions","Compare to current version"))+"\n\t\t")]):e._e(),e._v(" "),!e.isCurrent&&e.hasUpdatePermissions?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"+e._s(e.t("files_versions","Restore version"))+"\n\t\t")]):e._e(),e._v(" "),e.isDownloadable?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}],null,!1,927269758)},[e._v("\n\t\t\t"+e._s(e.t("files_versions","Download version"))+"\n\t\t")]):e._e(),e._v(" "),!e.isCurrent&&e.enableDeletion&&e.hasDeletePermissions?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"+e._s(e.t("files_versions","Delete version"))+"\n\t\t")]):e._e()]},proxy:!0}])})}),[],!1,null,"5b3703ac",null).exports,ne=(0,n.aZ)({name:"VirtualScrolling",props:{sections:{type:Array,required:!0},containerElement:{type:HTMLElement,default:null},useWindow:{type:Boolean,default:!1},headerHeight:{type:Number,default:75},renderDistance:{type:Number,default:.5},bottomBufferRatio:{type:Number,default:2},scrollToKey:{type:String,default:""}},data:()=>({scrollPosition:0,containerHeight:0,rowsContainerHeight:0,resizeObserver:null}),computed:{visibleSections(){C.debug("[VirtualScrolling] Computing visible section",{sections:this.sections});const e=this.containerHeight,t=this.scrollPosition,i=t+e;let s=0,n=0;const r=this.sections.map((r=>(n+=this.headerHeight,{...r,rows:r.rows.reduce(((r,o)=>{s=n,n+=o.height;let a=0;return n<t?a=(t-n)/e:s>i&&(a=(s-i)/e),a>this.renderDistance?r:[...r,{...o,distance:a}]}),[])}))).filter((e=>e.rows.length>0)),o=r.flatMap((e=>{let{rows:t}=e;return t})).flatMap((e=>{let{items:t}=e;return t})),a=this._rowIdToKeyMap;o.forEach((e=>e.key=a[e.id]));const l=o.map((e=>{let{key:t}=e;return t})).filter((e=>void 0!==e)),c=Object.values(a).filter((e=>!l.includes(e)));return o.filter((e=>{let{key:t}=e;return void 0===t})).forEach((e=>e.key=c.pop()??Math.random().toString(36).substr(2))),this._rowIdToKeyMap=o.reduce(((e,t)=>{let{id:i,key:s}=t;return{...e,[`${i}`]:s}}),{}),r},totalHeight(){return this.sections.map((e=>this.headerHeight+e.height)).reduce(((e,t)=>e+t),0)+0},paddingTop(){if(0===this.visibleSections.length)return 0;let e=0;for(const t of this.sections)if(t.key===this.visibleSections[0].rows[0].sectionKey){for(const i of t.rows){if(i.key===this.visibleSections[0].rows[0].key)return e;e+=i.height}e+=this.headerHeight}else e+=this.headerHeight+t.height;return e},rowsContainerStyle(){return{height:`${this.totalHeight}px`,paddingTop:`${this.paddingTop}px`}},isNearBottom(){const e=this.containerHeight*this.bottomBufferRatio;return this.scrollPosition+this.containerHeight>=this.totalHeight-e},container(){return C.debug("[VirtualScrolling] Computing container"),null!==this.containerElement?this.containerElement:this.useWindow?window:this.$refs.container}},watch:{isNearBottom(e){C.debug("[VirtualScrolling] isNearBottom changed",{value:e}),e&&this.$emit("need-content")},visibleSections(){this.isNearBottom&&this.$emit("need-content")},scrollToKey(e){let t=0;for(const i of this.sections){if(i.key===e)break;t+=this.headerHeight+i.height}C.debug("[VirtualScrolling] Scrolling to",{currentRowTopDistanceFromTop:t}),this.container.scrollTo({top:t,behavior:"smooth"})}},beforeCreate(){this._rowIdToKeyMap={}},mounted(){this.resizeObserver=new ResizeObserver((e=>{for(const t of e){const e=t.contentRect;t.target===this.container&&(this.containerHeight=e.height),t.target.classList.contains("vs-rows-container")&&(this.rowsContainerHeight=e.height)}})),this.useWindow?(window.addEventListener("resize",this.updateContainerSize,{passive:!0}),this.containerHeight=window.innerHeight):this.resizeObserver.observe(this.container),this.resizeObserver.observe(this.$refs.rowsContainer),this.container.addEventListener("scroll",this.updateScrollPosition,{passive:!0})},beforeDestroy(){this.useWindow&&window.removeEventListener("resize",this.updateContainerSize),this.resizeObserver?.disconnect(),this.container.removeEventListener("scroll",this.updateScrollPosition)},methods:{updateScrollPosition(){this._onScrollHandle??=requestAnimationFrame((()=>{this._onScrollHandle=null,this.useWindow?this.scrollPosition=this.container.scrollY:this.scrollPosition=this.container.scrollTop}))},updateContainerSize(){this.containerHeight=window.innerHeight}}});var re=s(87957),oe={};oe.styleTagTransform=ee(),oe.setAttributes=Y(),oe.insert=G().bind(null,"head"),oe.domAPI=q(),oe.insertStyleElement=Q(),Z()(re.Z,oe),re.Z&&re.Z.locals&&re.Z.locals;const ae=(0,j.Z)(ne,(function(){var e=this,t=e._self._c;return e._self._setupProxy,e.useWindow||null!==e.containerElement?t("div",{ref:"rowsContainer",staticClass:"vs-rows-container",style:e.rowsContainerStyle},[e._t("default",null,{visibleSections:e.visibleSections}),e._v(" "),e._t("loader")],2):t("div",{ref:"container",staticClass:"vs-container"},[t("div",{ref:"rowsContainer",staticClass:"vs-rows-container",style:e.rowsContainerStyle},[e._t("default",null,{visibleSections:e.visibleSections}),e._v(" "),e._t("loader")],2)])}),[],!1,null,"11dbbae6",null).exports;var le=s(11734),ce=s(54572),de=s(49368);const ue=(0,n.aZ)({name:"VersionLabelForm",components:{NcButton:ce.Z,NcTextField:de.Z,Check:le.Z},props:{versionLabel:{type:String,default:""}},data(){return{innerVersionLabel:this.versionLabel}},mounted(){this.$nextTick((()=>{this.$refs.labelInput.$el.getElementsByTagName("input")[0].focus()}))},methods:{setVersionLabel(e){this.$emit("label-update",e)},t:r.Iu}});var pe=s(77563),he={};he.styleTagTransform=ee(),he.setAttributes=Y(),he.insert=G().bind(null,"head"),he.domAPI=q(),he.insertStyleElement=Q(),Z()(pe.Z,he),pe.Z&&pe.Z.locals&&pe.Z.locals;const fe={name:"VersionTab",components:{Version:se,VirtualScrolling:ae,VersionLabelForm:(0,j.Z)(ue,(function(){var e=this,t=e._self._c;return e._self._setupProxy,t("form",{staticClass:"version-label-modal",on:{submit:function(t){return t.preventDefault(),e.setVersionLabel(e.innerVersionLabel)}}},[t("label",[t("div",{staticClass:"version-label-modal__title"},[e._v(e._s(e.t("files_versions","Version name")))]),e._v(" "),t("NcTextField",{ref:"labelInput",attrs:{value:e.innerVersionLabel,placeholder:e.t("files_versions","Version name"),"label-outside":!0},on:{"update:value":function(t){e.innerVersionLabel=t}}})],1),e._v(" "),t("div",{staticClass:"version-label-modal__info"},[e._v("\n\t\t"+e._s(e.t("files_versions","Named versions are persisted, and excluded from automatic cleanups when your storage quota is full."))+"\n\t")]),e._v(" "),t("div",{staticClass:"version-label-modal__actions"},[t("NcButton",{attrs:{disabled:0===e.innerVersionLabel.trim().length},on:{click:function(t){return e.setVersionLabel("")}}},[e._v("\n\t\t\t"+e._s(e.t("files_versions","Remove version name"))+"\n\t\t")]),e._v(" "),t("NcButton",{attrs:{type:"primary","native-type":"submit"},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Check")]},proxy:!0}])},[e._v("\n\t\t\t"+e._s(e.t("files_versions","Save version name"))+"\n\t\t")])],1)])}),[],!1,null,"58311f0c",null).exports,NcLoadingIcon:p.Z,NcModal:h.Z},mixins:[c.Z],data:()=>({fileInfo:null,isActive:!1,versions:[],loading:!1,showVersionLabelForm:!1}),computed:{sections(){return[{key:"versions",rows:this.orderedVersions.map((e=>({key:e.mtime,height:68,sectionKey:"versions",items:[e]}))),height:68*this.orderedVersions.length}]},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(){return window.OCA.Viewer?.mimetypesCompare?.includes(this.fileInfo.mimetype)},canCompare(){return!this.isMobile}},mounted(){(0,d.Ld)("files_versions:restore:restored",this.fetchVersions)},beforeUnmount(){(0,d.r1)("files_versions:restore:restored",this.fetchVersions)},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){const t=`/versions/${(0,u.ts)()?.uid}/versions/${e.id}`;try{return(await _.getDirectoryContents(t,{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 i=1e3*g()(e.lastmod).unix();let s="";return s=i===t.mtime?(0,m.generateUrl)("/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0",{fileId:t.id,fileEtag:t.etag}):(0,m.generateUrl)("/apps/files_versions/preview?file={file}&version={fileVersion}",{file:(0,f.RQ)(t.path,t.name),fileVersion:e.basename}),{fileId:t.id,label:e.props["version-label"],filename:e.filename,basename:g()(i).format("LLL"),mime:e.mime,etag:`${e.props.getetag}`,size:e.size,type:e.type,mtime:i,permissions:"R",hasPreview:1===e.props["has-preview"],previewUrl:s,url:(0,f.RQ)("/remote.php/dav",e.filename),source:(0,m.generateRemoteUrl)("dav")+w(e.filename),fileVersion:e.basename}}(t,e)))}catch(e){throw C.error("Could not fetch version",{exception:e}),e}}(this.fileInfo)}finally{this.loading=!1}},async handleRestore(e){const i=this.fileInfo;this.fileInfo={...this.fileInfo,size:e.size,mtime:e.mtime};const s={preventDefault:!1,fileInfo:this.fileInfo,version:e};if((0,d.j8)("files_versions:restore:requested",s),!s.preventDefault)try{await async function(e){try{C.debug("Restoring version",{url:e.url}),await _.moveFile(`/versions/${(0,u.ts)()?.uid}/versions/${e.fileId}/${e.fileVersion}`,`/versions/${(0,u.ts)()?.uid}/restore/target`)}catch(e){throw C.error("Could not restore version",{exception:e}),e}}(e),""!==e.label?(0,l.s$)(t("files_versions",`${e.label} restored`)):e.mtime===this.initialVersionMtime?(0,l.s$)(t("files_versions","Initial version restored")):(0,l.s$)(t("files_versions","Version restored")),(0,d.j8)("files_versions:restore:restored",e)}catch(s){this.fileInfo=i,(0,l.x2)(t("files_versions","Could not restore version")),(0,d.j8)("files_versions:restore:failed",e)}},handleLabelUpdateRequest(e){this.showVersionLabelForm=!0,this.editedVersion=e},async handleLabelUpdate(e){const t=this.editedVersion.label;this.editedVersion.label=e,this.showVersionLabelForm=!1;try{await async function(e,t){return await _.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>${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>`})}(this.editedVersion,e),this.editedVersion=null}catch(e){this.editedVersion.label=t,(0,l.x2)(this.t("files_versions","Could not set version label")),logger.error("Could not set version label",{exception:e})}},async handleDelete(e){const i=this.versions.indexOf(e);this.versions.splice(i,1);try{await async function(e){await _.deleteFile(e.filename)}(e)}catch(i){this.versions.push(e),(0,l.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 i=this.versions.map((e=>({...e,filename:e.mtime===this.fileInfo.mtime?a().join("files",(0,u.ts)()?.uid??"",this.fileInfo.path,this.fileInfo.name):e.filename,hasPreview:!1,previewUrl:void 0})));OCA.Viewer.open({fileInfo:i.find((e=>e.source===t.source)),enableSidebar:!1})},compareVersion(e){let{version:t}=e;const i=this.versions.map((e=>({...e,hasPreview:!1,previewUrl:void 0})));OCA.Viewer.compare(this.viewerFileInfo,i.find((e=>e.source===t.source)))}}};var me=s(72721),ve={};ve.styleTagTransform=ee(),ve.setAttributes=Y(),ve.insert=G().bind(null,"head"),ve.domAPI=q(),ve.insertStyleElement=Q(),Z()(me.Z,ve),me.Z&&me.Z.locals&&me.Z.locals;const ge=(0,j.Z)(fe,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"versions-tab__container"},[t("VirtualScrolling",{attrs:{sections:e.sections,"header-height":0},scopedSlots:e._u([{key:"default",fn:function(i){let{visibleSections:s}=i;return[t("ul",{attrs:{"data-files-versions-versions-list":""}},[1===s.length?e._l(s[0].rows,(function(i){return t("Version",{key:i.items[0].mtime,attrs:{"can-view":e.canView,"can-compare":e.canCompare,"load-preview":e.isActive,version:i.items[0],"file-info":e.fileInfo,"is-current":i.items[0].mtime===e.fileInfo.mtime,"is-first-version":i.items[0].mtime===e.initialVersionMtime},on:{click:e.openVersion,compare:e.compareVersion,restore:e.handleRestore,"label-update-request":function(t){return e.handleLabelUpdateRequest(i.items[0])},delete:e.handleDelete}})})):e._e()],2)]}}])},[e._v(" "),e.loading?t("NcLoadingIcon",{staticClass:"files-list-viewer__loader",attrs:{slot:"loader"},slot:"loader"}):e._e()],1),e._v(" "),e.showVersionLabelForm?t("NcModal",{attrs:{title:e.t("files_versions","Name this version")},on:{close:function(t){e.showVersionLabelForm=!1}}},[t("VersionLabelForm",{attrs:{"version-label":e.editedVersion.label},on:{"label-update":e.handleLabelUpdate}})],1):e._e()],1)}),[],!1,null,null,null).exports;var be=s(2324);n.ZP.prototype.t=r.Iu,n.ZP.prototype.n=r.uN,n.ZP.use(be.ZP);const we=n.ZP.extend(ge);let ye=null;window.addEventListener("DOMContentLoaded",(function(){void 0!==OCA.Files?.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"version_vue",name:(0,r.Iu)("files_versions","Versions"),iconSvg:'<svg xmlns="http://www.w3.org/2000/svg" id="mdi-backup-restore" viewBox="0 0 24 24"><path d="M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z" /></svg>',async mount(e,t,i){ye&&ye.$destroy(),ye=new we({parent:i}),await ye.update(t),ye.$mount(e)},update(e){ye.update(e)},setIsActive(e){ye&&ye.setIsActive(e)},destroy(){ye.$destroy(),ye=null},enabled:e=>!(e?.isDirectory()??1)}))}))},44898:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var s=i(87537),n=i.n(s),r=i(23645),o=i.n(r)()(n());o.push([e.id,".version[data-v-5b3703ac]{display:flex;flex-direction:row}.version__info[data-v-5b3703ac]{display:flex;flex-direction:row;align-items:center;gap:.5rem}.version__info__size[data-v-5b3703ac]{color:var(--color-text-lighter)}.version__image[data-v-5b3703ac]{width:3rem;height:3rem;border:1px solid var(--color-border);border-radius:var(--border-radius-large);display:flex;justify-content:center;color:var(--color-text-light)}","",{version:3,sources:["webpack://./apps/files_versions/src/components/Version.vue"],names:[],mappings:"AACA,0BACC,YAAA,CACA,kBAAA,CAEA,gCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,SAAA,CAEA,sCACC,+BAAA,CAIF,iCACC,UAAA,CACA,WAAA,CACA,oCAAA,CACA,wCAAA,CAGA,YAAA,CACA,sBAAA,CACA,6BAAA",sourcesContent:["\n.version {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\t&__info {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\talign-items: center;\n\t\tgap: 0.5rem;\n\n\t\t&__size {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\t}\n\n\t&__image {\n\t\twidth: 3rem;\n\t\theight: 3rem;\n\t\tborder: 1px solid var(--color-border);\n\t\tborder-radius: var(--border-radius-large);\n\n\t\t// Useful to display no preview icon.\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tcolor: var(--color-text-light);\n\t}\n}\n"],sourceRoot:""}]);const a=o},77563:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var s=i(87537),n=i.n(s),r=i(23645),o=i.n(r)()(n());o.push([e.id,".version-label-modal[data-v-58311f0c]{display:flex;justify-content:space-between;flex-direction:column;height:250px;padding:16px}.version-label-modal__title[data-v-58311f0c]{margin-bottom:12px;font-weight:600}.version-label-modal__info[data-v-58311f0c]{margin-top:12px;color:var(--color-text-maxcontrast)}.version-label-modal__actions[data-v-58311f0c]{display:flex;justify-content:space-between;margin-top:64px}","",{version:3,sources:["webpack://./apps/files_versions/src/components/VersionLabelForm.vue"],names:[],mappings:"AACA,sCACC,YAAA,CACA,6BAAA,CACA,qBAAA,CACA,YAAA,CACA,YAAA,CAEA,6CACC,kBAAA,CACA,eAAA,CAGD,4CACC,eAAA,CACA,mCAAA,CAGD,+CACC,YAAA,CACA,6BAAA,CACA,eAAA",sourcesContent:["\n.version-label-modal {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tflex-direction: column;\n\theight: 250px;\n\tpadding: 16px;\n\n\t&__title {\n\t\tmargin-bottom: 12px;\n\t\tfont-weight: 600;\n\t}\n\n\t&__info {\n\t\tmargin-top: 12px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__actions {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tmargin-top: 64px;\n\t}\n}\n"],sourceRoot:""}]);const a=o},87957:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var s=i(87537),n=i.n(s),r=i(23645),o=i.n(r)()(n());o.push([e.id,".vs-container[data-v-11dbbae6]{overflow-y:scroll;height:100%}.vs-rows-container[data-v-11dbbae6]{box-sizing:border-box;will-change:scroll-position,padding;contain:layout paint style}","",{version:3,sources:["webpack://./apps/files_versions/src/components/VirtualScrolling.vue"],names:[],mappings:"AACA,+BACC,iBAAA,CACA,WAAA,CAGD,oCACC,qBAAA,CACA,mCAAA,CACA,0BAAA",sourcesContent:["\n.vs-container {\n\toverflow-y: scroll;\n\theight: 100%;\n}\n\n.vs-rows-container {\n\tbox-sizing: border-box;\n\twill-change: scroll-position, padding;\n\tcontain: layout paint style;\n}\n"],sourceRoot:""}]);const a=o},72721:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var s=i(87537),n=i.n(s),r=i(23645),o=i.n(r)()(n());o.push([e.id,".versions-tab__container{height:100%}","",{version:3,sources:["webpack://./apps/files_versions/src/views/VersionTab.vue"],names:[],mappings:"AACA,yBACC,WAAA",sourcesContent:["\n.versions-tab__container {\n\theight: 100%;\n}\n"],sourceRoot:""}]);const a=o},46700:(e,t,i)=>{var s={"./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-ps":20315,"./ar-ps.js":20315,"./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-kmr":90563,"./ku-kmr.js":90563,"./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 n(e){var t=r(e);return i(t)}function r(e){if(!i.o(s,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return s[e]}n.keys=function(){return Object.keys(s)},n.resolve=r,e.exports=n,n.id=46700},5656:(e,t,i)=>{"use strict";i.d(t,{RL:()=>S,Tv:()=>A,_o:()=>E,h7:()=>w,pC:()=>I,rp:()=>L,sS:()=>h,tB:()=>y,y3:()=>f});var s,n=i(77958),r=i(17499),o=i(31352),a=i(62520),l=i(65358),c=i(79753),d=i(14596);null===(s=(0,n.ts)())?(0,r.IY)().setApp("files").build():(0,r.IY)().setApp("files").setUid(s.uid).build();const u=["B","KB","MB","GB","TB","PB"],p=["B","KiB","MiB","GiB","TiB","PiB"];function h(e,t=!1,i=!1,s=!1){i=i&&!s,"string"==typeof e&&(e=Number(e));let n=e>0?Math.floor(Math.log(e)/Math.log(s?1e3:1024)):0;n=Math.min((i?p.length:u.length)-1,n);const r=i?p[n]:u[n];let a=(e/Math.pow(s?1e3:1024,n)).toFixed(1);return!0===t&&0===n?("0.0"!==a?"< 1 ":"0 ")+(i?p[1]:u[1]):(a=n<2?parseFloat(a).toFixed(0):parseFloat(a).toLocaleString((0,o.aj)()),a+" "+r)}var f=(e=>(e[e.NONE=0]="NONE",e[e.CREATE=4]="CREATE",e[e.READ=1]="READ",e[e.UPDATE=2]="UPDATE",e[e.DELETE=8]="DELETE",e[e.SHARE=16]="SHARE",e[e.ALL=31]="ALL",e))(f||{});const m=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","nc:share-attributes","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:share-types","oc:size","ocs:share-permissions"],v={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"},g=function(){return typeof window._nc_dav_properties>"u"&&(window._nc_dav_properties=[...m]),window._nc_dav_properties.map((e=>`<${e} />`)).join(" ")},b=function(){return typeof window._nc_dav_namespaces>"u"&&(window._nc_dav_namespaces={...v}),Object.keys(window._nc_dav_namespaces).map((e=>`xmlns:${e}="${window._nc_dav_namespaces?.[e]}"`)).join(" ")},w=function(){return`<?xml version="1.0"?>\n\t\t<d:propfind ${b()}>\n\t\t\t<d:prop>\n\t\t\t\t${g()}\n\t\t\t</d:prop>\n\t\t</d:propfind>`},y=function(e){return`<?xml version="1.0" encoding="UTF-8"?>\n<d:searchrequest ${b()}\n\txmlns:ns="https://github.com/icewind1991/SearchDAV/ns">\n\t<d:basicsearch>\n\t\t<d:select>\n\t\t\t<d:prop>\n\t\t\t\t${g()}\n\t\t\t</d:prop>\n\t\t</d:select>\n\t\t<d:from>\n\t\t\t<d:scope>\n\t\t\t\t<d:href>/files/${(0,n.ts)()?.uid}/</d:href>\n\t\t\t\t<d:depth>infinity</d:depth>\n\t\t\t</d:scope>\n\t\t</d:from>\n\t\t<d:where>\n\t\t\t<d:and>\n\t\t\t\t<d:or>\n\t\t\t\t\t<d:not>\n\t\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t\t<d:getcontenttype/>\n\t\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t\t<d:literal>httpd/unix-directory</d:literal>\n\t\t\t\t\t\t</d:eq>\n\t\t\t\t\t</d:not>\n\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t<oc:size/>\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t<d:literal>0</d:literal>\n\t\t\t\t\t</d:eq>\n\t\t\t\t</d:or>\n\t\t\t\t<d:gt>\n\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t\t</d:prop>\n\t\t\t\t\t<d:literal>${e}</d:literal>\n\t\t\t\t</d:gt>\n\t\t\t</d:and>\n\t\t</d:where>\n\t\t<d:orderby>\n\t\t\t<d:order>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t</d:prop>\n\t\t\t\t<d:descending/>\n\t\t\t</d:order>\n\t\t</d:orderby>\n\t\t<d:limit>\n\t\t\t<d:nresults>100</d:nresults>\n\t\t\t<ns:firstresult>0</ns:firstresult>\n\t\t</d:limit>\n\t</d:basicsearch>\n</d:searchrequest>`};var A=(e=>(e.Folder="folder",e.File="file",e))(A||{});const _=function(e,t){return null!==e.match(t)},C=(e,t)=>{if(e.id&&"number"!=typeof e.id)throw new Error("Invalid id type of value");if(!e.source)throw new Error("Missing mandatory source");try{new URL(e.source)}catch{throw new Error("Invalid source format, source must be a valid URL")}if(!e.source.startsWith("http"))throw new Error("Invalid source format, only http(s) is supported");if(e.mtime&&!(e.mtime instanceof Date))throw new Error("Invalid mtime type");if(e.crtime&&!(e.crtime instanceof Date))throw new Error("Invalid crtime type");if(!e.mime||"string"!=typeof e.mime||!e.mime.match(/^[-\w.]+\/[-+\w.]+$/gi))throw new Error("Missing or invalid mandatory mime");if("size"in e&&"number"!=typeof e.size&&void 0!==e.size)throw new Error("Invalid size type");if("permissions"in e&&void 0!==e.permissions&&!("number"==typeof e.permissions&&e.permissions>=f.NONE&&e.permissions<=f.ALL))throw new Error("Invalid permissions");if(e.owner&&null!==e.owner&&"string"!=typeof e.owner)throw new Error("Invalid owner type");if(e.attributes&&"object"!=typeof e.attributes)throw new Error("Invalid attributes type");if(e.root&&"string"!=typeof e.root)throw new Error("Invalid root type");if(e.root&&!e.root.startsWith("/"))throw new Error("Root must start with a leading slash");if(e.root&&!e.source.includes(e.root))throw new Error("Root must be part of the source");if(e.root&&_(e.source,t)){const i=e.source.match(t)[0];if(!e.source.includes((0,a.join)(i,e.root)))throw new Error("The root must be relative to the service. e.g /files/emma")}if(e.status&&!Object.values(x).includes(e.status))throw new Error("Status must be a valid NodeStatus")};var x=(e=>(e.NEW="new",e.FAILED="failed",e.LOADING="loading",e.LOCKED="locked",e))(x||{});class j{_data;_attributes;_knownDavService=/(remote|public)\.php\/(web)?dav/i;constructor(e,t){C(e,t||this._knownDavService),this._data=e;const i={set:(e,t,i)=>(this.updateMtime(),Reflect.set(e,t,i)),deleteProperty:(e,t)=>(this.updateMtime(),Reflect.deleteProperty(e,t))};this._attributes=new Proxy(e.attributes||{},i),delete this._data.attributes,t&&(this._knownDavService=t)}get source(){return this._data.source.replace(/\/$/i,"")}get encodedSource(){const{origin:e}=new URL(this.source);return e+(0,l.Ec)(this.source.slice(e.length))}get basename(){return(0,a.basename)(this.source)}get extension(){return(0,a.extname)(this.source)}get dirname(){if(this.root){let e=this.source;this.isDavRessource&&(e=e.split(this._knownDavService).pop());const t=e.indexOf(this.root),i=this.root.replace(/\/$/,"");return(0,a.dirname)(e.slice(t+i.length)||"/")}const e=new URL(this.source);return(0,a.dirname)(e.pathname)}get mime(){return this._data.mime}get mtime(){return this._data.mtime}get crtime(){return this._data.crtime}get size(){return this._data.size}get attributes(){return this._attributes}get permissions(){return null!==this.owner||this.isDavRessource?void 0!==this._data.permissions?this._data.permissions:f.NONE:f.READ}get owner(){return this.isDavRessource?this._data.owner:null}get isDavRessource(){return _(this.source,this._knownDavService)}get root(){return this._data.root?this._data.root.replace(/^(.+)\/$/,"$1"):this.isDavRessource&&(0,a.dirname)(this.source).split(this._knownDavService).pop()||null}get path(){if(this.root){let e=this.source;this.isDavRessource&&(e=e.split(this._knownDavService).pop());const t=e.indexOf(this.root),i=this.root.replace(/\/$/,"");return e.slice(t+i.length)||"/"}return(this.dirname+"/"+this.basename).replace(/\/\//g,"/")}get fileid(){return this._data?.id||this.attributes?.fileid}get status(){return this._data?.status}set status(e){this._data.status=e}move(e){C({...this._data,source:e},this._knownDavService),this._data.source=e,this.updateMtime()}rename(e){if(e.includes("/"))throw new Error("Invalid basename");this.move((0,a.dirname)(this.source)+"/"+e)}updateMtime(){this._data.mtime&&(this._data.mtime=new Date)}}class N extends j{get type(){return A.File}}class k extends j{constructor(e){super({...e,mime:"httpd/unix-directory"})}get type(){return A.Folder}get extension(){return null}get mime(){return"httpd/unix-directory"}}const E=`/files/${(0,n.ts)()?.uid}`,V=(0,c.generateRemoteUrl)("dav"),L=function(e=V,t={}){const i=(0,d.eI)(e,{headers:t});function s(e){i.setHeaders({...t,"X-Requested-With":"XMLHttpRequest",requesttoken:e??""})}return(0,n._S)(s),s((0,n.IH)()),(0,d.lD)().patch("fetch",((e,t)=>{const i=t.headers;return i?.method&&(t.method=i.method,delete i.method),fetch(e,t)})),i},I=async(e,t="/",i=E)=>(await e.getDirectoryContents(`${i}${t}`,{details:!0,data:`<?xml version="1.0"?>\n\t\t<oc:filter-files ${b()}>\n\t\t\t<d:prop>\n\t\t\t\t${g()}\n\t\t\t</d:prop>\n\t\t\t<oc:filter-rules>\n\t\t\t\t<oc:favorite>1</oc:favorite>\n\t\t\t</oc:filter-rules>\n\t\t</oc:filter-files>`,headers:{method:"REPORT"},includeSelf:!0})).data.filter((e=>e.filename!==t)).map((e=>S(e,i))),S=function(e,t=E,i=V){const s=e.props,r=function(e=""){let t=f.NONE;return e&&((e.includes("C")||e.includes("K"))&&(t|=f.CREATE),e.includes("G")&&(t|=f.READ),(e.includes("W")||e.includes("N")||e.includes("V"))&&(t|=f.UPDATE),e.includes("D")&&(t|=f.DELETE),e.includes("R")&&(t|=f.SHARE)),t}(s?.permissions),o=s?.["owner-id"]||(0,n.ts)()?.uid,a={id:s?.fileid||0,source:`${i}${e.filename}`,mtime:new Date(Date.parse(e.lastmod)),mime:e.mime,size:s?.size||Number.parseInt(s.getcontentlength||"0"),permissions:r,owner:o,root:t,attributes:{...e,...s,hasPreview:s?.["has-preview"]}};return delete a.attributes?.props,"file"===e.type?new N(a):new k(a)};var O={};!function(e){const t=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",i="["+t+"]["+t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",s=new RegExp("^"+i+"$");e.isExist=function(e){return typeof e<"u"},e.isEmptyObject=function(e){return 0===Object.keys(e).length},e.merge=function(e,t,i){if(t){const s=Object.keys(t),n=s.length;for(let r=0;r<n;r++)e[s[r]]="strict"===i?[t[s[r]]]:t[s[r]]}},e.getValue=function(t){return e.isExist(t)?t:""},e.isName=function(e){const t=s.exec(e);return!(null===t||typeof t>"u")},e.getAllMatches=function(e,t){const i=[];let s=t.exec(e);for(;s;){const n=[];n.startIndex=t.lastIndex-s[0].length;const r=s.length;for(let e=0;e<r;e++)n.push(s[e]);i.push(n),s=t.exec(e)}return i},e.nameRegexp=i}(O);new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");var P={};const D={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,i){return e}};P.buildOptions=function(e){return Object.assign({},D,e)},P.defaultOptions=D,!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);"<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)".replace(/NAME/g,O.nameRegexp),new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");var $={};function R(e,t,i){let s;const n={};for(let r=0;r<e.length;r++){const o=e[r],a=T(o);let l="";if(l=void 0===i?a:i+"."+a,a===t.textNodeName)void 0===s?s=o[a]:s+=""+o[a];else{if(void 0===a)continue;if(o[a]){let e=R(o[a],t,l);const i=B(e,t);o[":@"]?z(e,o[":@"],l,t):1!==Object.keys(e).length||void 0===e[t.textNodeName]||t.alwaysCreateTextNode?0===Object.keys(e).length&&(t.alwaysCreateTextNode?e[t.textNodeName]="":e=""):e=e[t.textNodeName],void 0!==n[a]&&n.hasOwnProperty(a)?(Array.isArray(n[a])||(n[a]=[n[a]]),n[a].push(e)):t.isArray(a,l,i)?n[a]=[e]:n[a]=e}}}return"string"==typeof s?s.length>0&&(n[t.textNodeName]=s):void 0!==s&&(n[t.textNodeName]=s),n}function T(e){const t=Object.keys(e);for(let e=0;e<t.length;e++){const i=t[e];if(":@"!==i)return i}}function z(e,t,i,s){if(t){const n=Object.keys(t),r=n.length;for(let o=0;o<r;o++){const r=n[o];s.isArray(r,i+"."+r,!0,!0)?e[r]=[t[r]]:e[r]=t[r]}}}function B(e,t){const{textNodeName:i}=t,s=Object.keys(e).length;return!(0!==s&&(1!==s||!e[i]&&"boolean"!=typeof e[i]&&0!==e[i]))}$.prettify=function(e,t){return R(e,t)};const{buildOptions:F}=P,{prettify:H}=$;function M(e,t,i,s){let n="",r=!1;for(let o=0;o<e.length;o++){const a=e[o],l=Z(a);if(void 0===l)continue;let c="";if(c=0===i.length?l:`${i}.${l}`,l===t.textNodeName){let e=a[l];q(c,t)||(e=t.tagValueProcessor(l,e),e=W(e,t)),r&&(n+=s),n+=e,r=!1;continue}if(l===t.cdataPropName){r&&(n+=s),n+=`<![CDATA[${a[l][0][t.textNodeName]}]]>`,r=!1;continue}if(l===t.commentPropName){n+=s+`\x3c!--${a[l][0][t.textNodeName]}--\x3e`,r=!0;continue}if("?"===l[0]){const e=U(a[":@"],t),i="?xml"===l?"":s;let o=a[l][0][t.textNodeName];o=0!==o.length?" "+o:"",n+=i+`<${l}${o}${e}?>`,r=!0;continue}let d=s;""!==d&&(d+=t.indentBy);const u=s+`<${l}${U(a[":@"],t)}`,p=M(a[l],t,c,d);-1!==t.unpairedTags.indexOf(l)?t.suppressUnpairedNode?n+=u+">":n+=u+"/>":p&&0!==p.length||!t.suppressEmptyNode?p&&p.endsWith(">")?n+=u+`>${p}${s}</${l}>`:(n+=u+">",p&&""!==s&&(p.includes("/>")||p.includes("</"))?n+=s+t.indentBy+p+s:n+=p,n+=`</${l}>`):n+=u+"/>",r=!0}return n}function Z(e){const t=Object.keys(e);for(let i=0;i<t.length;i++){const s=t[i];if(e.hasOwnProperty(s)&&":@"!==s)return s}}function U(e,t){let i="";if(e&&!t.ignoreAttributes)for(let s in e){if(!e.hasOwnProperty(s))continue;let n=t.attributeValueProcessor(s,e[s]);n=W(n,t),!0===n&&t.suppressBooleanAttributes?i+=` ${s.substr(t.attributeNamePrefix.length)}`:i+=` ${s.substr(t.attributeNamePrefix.length)}="${n}"`}return i}function q(e,t){let i=(e=e.substr(0,e.length-t.textNodeName.length-1)).substr(e.lastIndexOf(".")+1);for(let s in t.stopNodes)if(t.stopNodes[s]===e||t.stopNodes[s]==="*."+i)return!0;return!1}function W(e,t){if(e&&e.length>0&&t.processEntities)for(let i=0;i<t.entities.length;i++){const s=t.entities[i];e=e.replace(s.regex,s.val)}return e}const G=function(e,t){let i="";return t.format&&t.indentBy.length>0&&(i="\n"),M(e,t,"",i)},K={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:"  ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&amp;"},{regex:new RegExp(">","g"),val:"&gt;"},{regex:new RegExp("<","g"),val:"&lt;"},{regex:new RegExp("'","g"),val:"&apos;"},{regex:new RegExp('"',"g"),val:"&quot;"}],processEntities:!0,stopNodes:[],oneListGroup:!1};function Y(e){this.options=Object.assign({},K,e),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=J),this.processTextOrObjNode=X,this.options.format?(this.indentate=Q,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function X(e,t,i){const s=this.j2x(e,i+1);return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,s.attrStr,i):this.buildObjectNode(s.val,t,s.attrStr,i)}function Q(e){return this.options.indentBy.repeat(e)}function J(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}Y.prototype.build=function(e){return this.options.preserveOrder?G(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0).val)},Y.prototype.j2x=function(e,t){let i="",s="";for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n))if(typeof e[n]>"u")this.isAttribute(n)&&(s+="");else if(null===e[n])this.isAttribute(n)?s+="":"?"===n[0]?s+=this.indentate(t)+"<"+n+"?"+this.tagEndChar:s+=this.indentate(t)+"<"+n+"/"+this.tagEndChar;else if(e[n]instanceof Date)s+=this.buildTextValNode(e[n],n,"",t);else if("object"!=typeof e[n]){const r=this.isAttribute(n);if(r)i+=this.buildAttrPairStr(r,""+e[n]);else if(n===this.options.textNodeName){let t=this.options.tagValueProcessor(n,""+e[n]);s+=this.replaceEntitiesValue(t)}else s+=this.buildTextValNode(e[n],n,"",t)}else if(Array.isArray(e[n])){const i=e[n].length;let r="";for(let o=0;o<i;o++){const i=e[n][o];typeof i>"u"||(null===i?"?"===n[0]?s+=this.indentate(t)+"<"+n+"?"+this.tagEndChar:s+=this.indentate(t)+"<"+n+"/"+this.tagEndChar:"object"==typeof i?this.options.oneListGroup?r+=this.j2x(i,t+1).val:r+=this.processTextOrObjNode(i,n,t):r+=this.buildTextValNode(i,n,"",t))}this.options.oneListGroup&&(r=this.buildObjectNode(r,n,"",t)),s+=r}else if(this.options.attributesGroupName&&n===this.options.attributesGroupName){const t=Object.keys(e[n]),s=t.length;for(let r=0;r<s;r++)i+=this.buildAttrPairStr(t[r],""+e[n][t[r]])}else s+=this.processTextOrObjNode(e[n],n,t);return{attrStr:i,val:s}},Y.prototype.buildAttrPairStr=function(e,t){return t=this.options.attributeValueProcessor(e,""+t),t=this.replaceEntitiesValue(t),this.options.suppressBooleanAttributes&&"true"===t?" "+e:" "+e+'="'+t+'"'},Y.prototype.buildObjectNode=function(e,t,i,s){if(""===e)return"?"===t[0]?this.indentate(s)+"<"+t+i+"?"+this.tagEndChar:this.indentate(s)+"<"+t+i+this.closeTag(t)+this.tagEndChar;{let n="</"+t+this.tagEndChar,r="";return"?"===t[0]&&(r="?",n=""),!i&&""!==i||-1!==e.indexOf("<")?!1!==this.options.commentPropName&&t===this.options.commentPropName&&0===r.length?this.indentate(s)+`\x3c!--${e}--\x3e`+this.newLine:this.indentate(s)+"<"+t+i+r+this.tagEndChar+e+this.indentate(s)+n:this.indentate(s)+"<"+t+i+r+">"+e+n}},Y.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`></${e}`,t},Y.prototype.buildTextValNode=function(e,t,i,s){if(!1!==this.options.cdataPropName&&t===this.options.cdataPropName)return this.indentate(s)+`<![CDATA[${e}]]>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(s)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(s)+"<"+t+i+"?"+this.tagEndChar;{let n=this.options.tagValueProcessor(t,e);return n=this.replaceEntitiesValue(n),""===n?this.indentate(s)+"<"+t+i+this.closeTag(t)+this.tagEndChar:this.indentate(s)+"<"+t+i+">"+n+"</"+t+this.tagEndChar}},Y.prototype.replaceEntitiesValue=function(e){if(e&&e.length>0&&this.options.processEntities)for(let t=0;t<this.options.entities.length;t++){const i=this.options.entities[t];e=e.replace(i.regex,i.val)}return e}}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,loaded:!1,exports:{}};return n[e].call(i.exports,i,i.exports,o),i.loaded=!0,i.exports}o.m=n,e=[],o.O=(t,i,s,n)=>{if(!i){var r=1/0;for(d=0;d<e.length;d++){i=e[d][0],s=e[d][1],n=e[d][2];for(var a=!0,l=0;l<i.length;l++)(!1&n||r>=n)&&Object.keys(o.O).every((e=>o.O[e](i[l])))?i.splice(l--,1):(a=!1,n<r&&(r=n));if(a){e.splice(d--,1);var c=s();void 0!==c&&(t=c)}}return t}n=n||0;for(var d=e.length;d>0&&e[d-1][2]>n;d--)e[d]=e[d-1];e[d]=[i,s,n]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var i in t)o.o(t,i)&&!o.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((t,i)=>(o.f[i](e,t),t)),[])),o.u=e=>e+"-"+e+".js?v="+{4720:"67ff1816113751e83e78",6512:"4e739934e594e992c605"}[e],o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i={},s="nextcloud:",o.l=(e,t,n,r)=>{if(i[e])i[e].push(t);else{var a,l;if(void 0!==n)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")==s+n){a=u;break}}a||(l=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,o.nc&&a.setAttribute("nonce",o.nc),a.setAttribute("data-webpack",s+n),a.src=e),i[e]=[t];var p=(t,s)=>{a.onerror=a.onload=null,clearTimeout(h);var n=i[e];if(delete i[e],a.parentNode&&a.parentNode.removeChild(a),n&&n.forEach((e=>e(s))),t)return t(s)},h=setTimeout(p.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=p.bind(null,a.onerror),a.onload=p.bind(null,a.onload),l&&document.head.appendChild(a)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),o.j=1358,(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var t=o.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var i=t.getElementsByTagName("script");if(i.length)for(var s=i.length-1;s>-1&&!e;)e=i[s--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})(),(()=>{o.b=document.baseURI||self.location.href;var e={1358:0};o.f.j=(t,i)=>{var s=o.o(e,t)?e[t]:void 0;if(0!==s)if(s)i.push(s[2]);else{var n=new Promise(((i,n)=>s=e[t]=[i,n]));i.push(s[2]=n);var r=o.p+o.u(t),a=new Error;o.l(r,(i=>{if(o.o(e,t)&&(0!==(s=e[t])&&(e[t]=void 0),s)){var n=i&&("load"===i.type?"missing":i.type),r=i&&i.target&&i.target.src;a.message="Loading chunk "+t+" failed.\n("+n+": "+r+")",a.name="ChunkLoadError",a.type=n,a.request=r,s[1](a)}}),"chunk-"+t,t)}},o.O.j=t=>0===e[t];var t=(t,i)=>{var s,n,r=i[0],a=i[1],l=i[2],c=0;if(r.some((t=>0!==e[t]))){for(s in a)o.o(a,s)&&(o.m[s]=a[s]);if(l)var d=l(o)}for(t&&t(i);c<r.length;c++)n=r[c],o.o(e,n)&&e[n]&&e[n][0](),e[n]=0;return o.O(d)},i=self.webpackChunknextcloud=self.webpackChunknextcloud||[];i.forEach(t.bind(null,0)),i.push=t.bind(null,i.push.bind(i))})(),o.nc=void 0;var a=o.O(void 0,[7874],(()=>o(64913)));a=o.O(a)})();
+//# sourceMappingURL=files_versions-files_versions.js.map?v=136ebdb239ed86df0d9b
\ No newline at end of file
index 7f1c28bbd7d7922e5639d18ca36834d22b98c654..54140a01925b646f795996eae520f09ca008da8d 100644 (file)
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
 
+/**
+ * @copyright 2022 Louis Chmn <louis@chmn.me>
+ *
+ * @author Louis Chmn <louis@chmn.me>
+ *
+ * @license AGPL-3.0-or-later
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
 /**
  * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>
  *
index 6d2d0d10c2a3f01d2d7fc13b376f4fcc0c0cd0a2..5560392adb4d5772b96c6218b11629621d8126d9 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"files_versions-files_versions.js?v=ddb3c3ede073c93ebeba","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files/src/utils/fileUtils.ts","webpack:///nextcloud/apps/files_versions/src/utils/davClient.js","webpack:///nextcloud/apps/files_versions/src/utils/logger.js","webpack:///nextcloud/node_modules/vue-material-design-icons/BackupRestore.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/BackupRestore.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/BackupRestore.vue?6cf7","webpack:///nextcloud/node_modules/vue-material-design-icons/BackupRestore.vue?vue&type=template&id=7529504e","webpack:///nextcloud/node_modules/vue-material-design-icons/Download.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Download.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Download.vue?b226","webpack:///nextcloud/node_modules/vue-material-design-icons/Download.vue?vue&type=template&id=67aea606","webpack:///nextcloud/node_modules/vue-material-design-icons/FileCompare.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/FileCompare.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/FileCompare.vue?5fdf","webpack:///nextcloud/node_modules/vue-material-design-icons/FileCompare.vue?vue&type=template&id=400d4998","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageOffOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageOffOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/ImageOffOutline.vue?e0b5","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageOffOutline.vue?vue&type=template&id=0a153844","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?1c83","webpack://nextcloud/./apps/files_versions/src/components/Version.vue?0a31","webpack://nextcloud/./apps/files_versions/src/components/Version.vue?f787","webpack:///nextcloud/apps/files_versions/src/components/VirtualScrolling.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files_versions/src/components/VirtualScrolling.vue","webpack://nextcloud/./apps/files_versions/src/components/VirtualScrolling.vue?3e31","webpack://nextcloud/./apps/files_versions/src/components/VirtualScrolling.vue?fc23","webpack:///nextcloud/apps/files_versions/src/components/VersionLabelForm.vue","webpack:///nextcloud/apps/files_versions/src/components/VersionLabelForm.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files_versions/src/components/VersionLabelForm.vue?8728","webpack://nextcloud/./apps/files_versions/src/components/VersionLabelForm.vue?dbea","webpack:///nextcloud/apps/files_versions/src/views/VersionTab.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files_versions/src/views/VersionTab.vue","webpack:///nextcloud/apps/files_versions/src/utils/versions.ts","webpack:///nextcloud/apps/files_versions/src/utils/davRequest.js","webpack://nextcloud/./apps/files_versions/src/views/VersionTab.vue?492e","webpack://nextcloud/./apps/files_versions/src/views/VersionTab.vue?d7ee","webpack://nextcloud/./apps/files_versions/src/views/VersionTab.vue?4309","webpack:///nextcloud/apps/files_versions/src/files_versions_tab.js","webpack:///nextcloud/apps/files_versions/src/components/Version.vue?vue&type=style&index=0&id=3cb7975c&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files_versions/src/components/VersionLabelForm.vue?vue&type=style&index=0&id=58311f0c&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files_versions/src/components/VirtualScrolling.vue?vue&type=style&index=0&id=11dbbae6&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files_versions/src/views/VersionTab.vue?vue&type=style&index=0&id=9f52be8e&prod&lang=scss","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { FileType } from '@nextcloud/files';\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n';\nimport { basename, extname } from 'path';\n// TODO: move to @nextcloud/files\n/**\n * Create an unique file name\n * @param name The initial name to use\n * @param otherNames Other names that are already used\n * @param suffix A function that takes an index an returns a suffix to add, defaults to '(index)'\n * @return Either the initial name, if unique, or the name with the suffix so that the name is unique\n */\nexport const getUniqueName = (name, otherNames, suffix = (n) => `(${n})`) => {\n    let newName = name;\n    let i = 1;\n    while (otherNames.includes(newName)) {\n        const ext = extname(name);\n        newName = `${basename(name, ext)} ${suffix(i++)}${ext}`;\n    }\n    return newName;\n};\nexport const encodeFilePath = function (path) {\n    const pathSections = (path.startsWith('/') ? path : `/${path}`).split('/');\n    let relativePath = '';\n    pathSections.forEach((section) => {\n        if (section !== '') {\n            relativePath += '/' + encodeURIComponent(section);\n        }\n    });\n    return relativePath;\n};\n/**\n * Extract dir and name from file path\n *\n * @param {string} path the full path\n * @return {string[]} [dirPath, fileName]\n */\nexport const extractFilePaths = function (path) {\n    const pathSections = path.split('/');\n    const fileName = pathSections[pathSections.length - 1];\n    const dirPath = pathSections.slice(0, pathSections.length - 1).join('/');\n    return [dirPath, fileName];\n};\n/**\n * Generate a translated summary of an array of nodes\n * @param {Node[]} nodes the nodes to summarize\n * @return {string}\n */\nexport const getSummaryFor = (nodes) => {\n    const fileCount = nodes.filter(node => node.type === FileType.File).length;\n    const folderCount = nodes.filter(node => node.type === FileType.Folder).length;\n    if (fileCount === 0) {\n        return n('files', '{folderCount} folder', '{folderCount} folders', folderCount, { folderCount });\n    }\n    else if (folderCount === 0) {\n        return n('files', '{fileCount} file', '{fileCount} files', fileCount, { fileCount });\n    }\n    if (fileCount === 1) {\n        return n('files', '1 file and {folderCount} folder', '1 file and {folderCount} folders', folderCount, { folderCount });\n    }\n    if (folderCount === 1) {\n        return n('files', '{fileCount} file and 1 folder', '{fileCount} files and 1 folder', fileCount, { fileCount });\n    }\n    return t('files', '{fileCount} files and {folderCount} folders', { fileCount, folderCount });\n};\n","/**\n * @copyright 2022 Louis Chemineau <mlouis@chmn.me>\n *\n * @author Louis Chemineau <mlouis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { createClient } from 'webdav'\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { getRequestToken } 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","<template>\n  <span v-bind=\"$attrs\"\n        :aria-hidden=\"!title\"\n        :aria-label=\"title\"\n        class=\"material-design-icon backup-restore-icon\"\n        role=\"img\"\n        @click=\"$emit('click', $event)\">\n    <svg :fill=\"fillColor\"\n         class=\"material-design-icon__svg\"\n         :width=\"size\"\n         :height=\"size\"\n         viewBox=\"0 0 24 24\">\n      <path d=\"M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z\">\n        <title v-if=\"title\">{{ title }}</title>\n      </path>\n    </svg>\n  </span>\n</template>\n\n<script>\nexport default {\n  name: \"BackupRestoreIcon\",\n  emits: ['click'],\n  props: {\n    title: {\n      type: String,\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./BackupRestore.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./BackupRestore.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./BackupRestore.vue?vue&type=template&id=7529504e\"\nimport script from \"./BackupRestore.vue?vue&type=script&lang=js\"\nexport * from \"./BackupRestore.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon backup-restore-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Download.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Download.vue?vue&type=script&lang=js\"","<template>\n  <span v-bind=\"$attrs\"\n        :aria-hidden=\"!title\"\n        :aria-label=\"title\"\n        class=\"material-design-icon download-icon\"\n        role=\"img\"\n        @click=\"$emit('click', $event)\">\n    <svg :fill=\"fillColor\"\n         class=\"material-design-icon__svg\"\n         :width=\"size\"\n         :height=\"size\"\n         viewBox=\"0 0 24 24\">\n      <path d=\"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z\">\n        <title v-if=\"title\">{{ title }}</title>\n      </path>\n    </svg>\n  </span>\n</template>\n\n<script>\nexport default {\n  name: \"DownloadIcon\",\n  emits: ['click'],\n  props: {\n    title: {\n      type: String,\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n}\n</script>","import { render, staticRenderFns } from \"./Download.vue?vue&type=template&id=67aea606\"\nimport script from \"./Download.vue?vue&type=script&lang=js\"\nexport * from \"./Download.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon download-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileCompare.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileCompare.vue?vue&type=script&lang=js\"","<template>\n  <span v-bind=\"$attrs\"\n        :aria-hidden=\"!title\"\n        :aria-label=\"title\"\n        class=\"material-design-icon file-compare-icon\"\n        role=\"img\"\n        @click=\"$emit('click', $event)\">\n    <svg :fill=\"fillColor\"\n         class=\"material-design-icon__svg\"\n         :width=\"size\"\n         :height=\"size\"\n         viewBox=\"0 0 24 24\">\n      <path d=\"M10,18H6V16H10V18M10,14H6V12H10V14M10,1V2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V23H12V1H10M20,8V20C20,21.11 19.11,22 18,22H14V20H18V11H14V9H18.5L14,4.5V2L20,8M16,14H14V12H16V14M16,18H14V16H16V18Z\">\n        <title v-if=\"title\">{{ title }}</title>\n      </path>\n    </svg>\n  </span>\n</template>\n\n<script>\nexport default {\n  name: \"FileCompareIcon\",\n  emits: ['click'],\n  props: {\n    title: {\n      type: String,\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n}\n</script>","import { render, staticRenderFns } from \"./FileCompare.vue?vue&type=template&id=400d4998\"\nimport script from \"./FileCompare.vue?vue&type=script&lang=js\"\nexport * from \"./FileCompare.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon file-compare-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,18H6V16H10V18M10,14H6V12H10V14M10,1V2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V23H12V1H10M20,8V20C20,21.11 19.11,22 18,22H14V20H18V11H14V9H18.5L14,4.5V2L20,8M16,14H14V12H16V14M16,18H14V16H16V18Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <span v-bind=\"$attrs\"\n        :aria-hidden=\"!title\"\n        :aria-label=\"title\"\n        class=\"material-design-icon image-off-outline-icon\"\n        role=\"img\"\n        @click=\"$emit('click', $event)\">\n    <svg :fill=\"fillColor\"\n         class=\"material-design-icon__svg\"\n         :width=\"size\"\n         :height=\"size\"\n         viewBox=\"0 0 24 24\">\n      <path d=\"M22 20.7L3.3 2L2 3.3L3 4.3V19C3 20.1 3.9 21 5 21H19.7L20.7 22L22 20.7M5 19V6.3L12.6 13.9L11.1 15.8L9 13.1L6 17H15.7L17.7 19H5M8.8 5L6.8 3H19C20.1 3 21 3.9 21 5V17.2L19 15.2V5H8.8\">\n        <title v-if=\"title\">{{ title }}</title>\n      </path>\n    </svg>\n  </span>\n</template>\n\n<script>\nexport default {\n  name: \"ImageOffOutlineIcon\",\n  emits: ['click'],\n  props: {\n    title: {\n      type: String,\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageOffOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageOffOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ImageOffOutline.vue?vue&type=template&id=0a153844\"\nimport script from \"./ImageOffOutline.vue?vue&type=script&lang=js\"\nexport * from \"./ImageOffOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon image-off-outline-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M22 20.7L3.3 2L2 3.3L3 4.3V19C3 20.1 3.9 21 5 21H19.7L20.7 22L22 20.7M5 19V6.3L12.6 13.9L11.1 15.8L9 13.1L6 17H15.7L17.7 19H5M8.8 5L6.8 3H19C20.1 3 21 3.9 21 5V17.2L19 15.2V5H8.8\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2022 Carl Schwan <carl@carlschwan.eu>\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n<template>\n\t<NcListItem class=\"version\"\n\t\t:name=\"versionLabel\"\n\t\t:force-display-actions=\"true\"\n\t\tdata-files-versions-version\n\t\t@click=\"click\">\n\t\t<template #icon>\n\t\t\t<div v-if=\"!(loadPreview || previewLoaded)\" class=\"version__image\" />\n\t\t\t<img v-else-if=\"(isCurrent || version.hasPreview) && !previewErrored\"\n\t\t\t\t:src=\"version.previewUrl\"\n\t\t\t\talt=\"\"\n\t\t\t\tdecoding=\"async\"\n\t\t\t\tfetchpriority=\"low\"\n\t\t\t\tloading=\"lazy\"\n\t\t\t\tclass=\"version__image\"\n\t\t\t\t@load=\"previewLoaded = true\"\n\t\t\t\t@error=\"previewErrored = true\">\n\t\t\t<div v-else\n\t\t\t\tclass=\"version__image\">\n\t\t\t\t<ImageOffOutline :size=\"20\" />\n\t\t\t</div>\n\t\t</template>\n\t\t<template #subname>\n\t\t\t<div class=\"version__info\">\n\t\t\t\t<span :title=\"formattedDate\">{{ version.mtime | humanDateFromNow }}</span>\n\t\t\t\t<!-- Separate dot to improve alignement -->\n\t\t\t\t<span class=\"version__info__size\">•</span>\n\t\t\t\t<span class=\"version__info__size\">{{ version.size | humanReadableSize }}</span>\n\t\t\t</div>\n\t\t</template>\n\t\t<template #actions>\n\t\t\t<NcActionButton v-if=\"enableLabeling\"\n\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t@click=\"labelUpdate\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Pencil :size=\"22\" />\n\t\t\t\t</template>\n\t\t\t\t{{ version.label === '' ? t('files_versions', 'Name this version') : t('files_versions', 'Edit version name') }}\n\t\t\t</NcActionButton>\n\t\t\t<NcActionButton v-if=\"!isCurrent && canView && canCompare\"\n\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t@click=\"compareVersion\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<FileCompare :size=\"22\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('files_versions', 'Compare to current version') }}\n\t\t\t</NcActionButton>\n\t\t\t<NcActionButton v-if=\"!isCurrent\"\n\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t@click=\"restoreVersion\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<BackupRestore :size=\"22\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('files_versions', 'Restore version') }}\n\t\t\t</NcActionButton>\n\t\t\t<NcActionLink :href=\"downloadURL\"\n\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t:download=\"downloadURL\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Download :size=\"22\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('files_versions', 'Download version') }}\n\t\t\t</NcActionLink>\n\t\t\t<NcActionButton v-if=\"!isCurrent && enableDeletion\"\n\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t@click=\"deleteVersion\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Delete :size=\"22\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('files_versions', 'Delete version') }}\n\t\t\t</NcActionButton>\n\t\t</template>\n\t</NcListItem>\n</template>\n\n<script>\nimport BackupRestore from 'vue-material-design-icons/BackupRestore.vue'\nimport Download from 'vue-material-design-icons/Download.vue'\nimport FileCompare from 'vue-material-design-icons/FileCompare.vue'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\nimport ImageOffOutline from 'vue-material-design-icons/ImageOffOutline.vue'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport NcListItem from '@nextcloud/vue/dist/Components/NcListItem.js'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip.js'\nimport moment from '@nextcloud/moment'\nimport { translate as t } from '@nextcloud/l10n'\nimport { joinPaths } from '@nextcloud/paths'\nimport { getRootUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\n\nexport default {\n\tname: 'Version',\n\tcomponents: {\n\t\tNcActionLink,\n\t\tNcActionButton,\n\t\tNcListItem,\n\t\tBackupRestore,\n\t\tDownload,\n\t\tFileCompare,\n\t\tPencil,\n\t\tDelete,\n\t\tImageOffOutline,\n\t},\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\tfilters: {\n\t\t/**\n\t\t * @param {number} bytes\n\t\t * @return {string}\n\t\t */\n\t\thumanReadableSize(bytes) {\n\t\t\treturn OC.Util.humanFileSize(bytes)\n\t\t},\n\t\t/**\n\t\t * @param {number} timestamp\n\t\t * @return {string}\n\t\t */\n\t\thumanDateFromNow(timestamp) {\n\t\t\treturn moment(timestamp).fromNow()\n\t\t},\n\t},\n\tprops: {\n\t\t/** @type {Vue.PropOptions<import('../utils/versions.ts').Version>} */\n\t\tversion: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tisCurrent: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisFirstVersion: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tloadPreview: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tcanView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tcanCompare: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpreviewLoaded: false,\n\t\t\tpreviewErrored: false,\n\t\t\tcapabilities: loadState('core', 'capabilities', { files: { version_labeling: false, version_deletion: false } }),\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tversionLabel() {\n\t\t\tconst label = this.version.label ?? ''\n\n\t\t\tif (this.isCurrent) {\n\t\t\t\tif (label === '') {\n\t\t\t\t\treturn t('files_versions', 'Current version')\n\t\t\t\t} else {\n\t\t\t\t\treturn `${label} (${t('files_versions', 'Current version')})`\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.isFirstVersion && label === '') {\n\t\t\t\treturn t('files_versions', 'Initial version')\n\t\t\t}\n\n\t\t\treturn label\n\t\t},\n\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tdownloadURL() {\n\t\t\tif (this.isCurrent) {\n\t\t\t\treturn getRootUrl() + joinPaths('/remote.php/webdav', this.fileInfo.path, this.fileInfo.name)\n\t\t\t} else {\n\t\t\t\treturn getRootUrl() + this.version.url\n\t\t\t}\n\t\t},\n\n\t\t/** @return {string} */\n\t\tformattedDate() {\n\t\t\treturn moment(this.version.mtime).format('LLL')\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\tenableLabeling() {\n\t\t\treturn this.capabilities.files.version_labeling === true\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\tenableDeletion() {\n\t\t\treturn this.capabilities.files.version_deletion === true\n\t\t},\n\t},\n\tmethods: {\n\t\tlabelUpdate() {\n\t\t\tthis.$emit('label-update-request')\n\t\t},\n\n\t\trestoreVersion() {\n\t\t\tthis.$emit('restore', this.version)\n\t\t},\n\n\t\tdeleteVersion() {\n\t\t\tthis.$emit('delete', this.version)\n\t\t},\n\n\t\tclick() {\n\t\t\tif (!this.canView) {\n\t\t\t\twindow.location = this.downloadURL\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.$emit('click', { version: this.version })\n\t\t},\n\n\t\tcompareVersion() {\n\t\t\tif (!this.canView) {\n\t\t\t\tthrow new Error('Cannot compare version of this file')\n\t\t\t}\n\t\t\tthis.$emit('compare', { version: this.version })\n\t\t},\n\n\t\tt,\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.version {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\t&__info {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\talign-items: center;\n\t\tgap: 0.5rem;\n\n\t\t&__size {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\t}\n\n\t&__image {\n\t\twidth: 3rem;\n\t\theight: 3rem;\n\t\tborder: 1px solid var(--color-border);\n\t\tborder-radius: var(--border-radius-large);\n\n\t\t// Useful to display no preview icon.\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tcolor: var(--color-text-light);\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Version.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Version.vue?vue&type=script&lang=js\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Version.vue?vue&type=style&index=0&id=3cb7975c&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=3cb7975c&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=3cb7975c&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=3cb7975c&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  \"3cb7975c\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcListItem',{staticClass:\"version\",attrs:{\"name\":_vm.versionLabel,\"force-display-actions\":true,\"data-files-versions-version\":\"\"},on:{\"click\":_vm.click},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(!(_vm.loadPreview || _vm.previewLoaded))?_c('div',{staticClass:\"version__image\"}):((_vm.isCurrent || _vm.version.hasPreview) && !_vm.previewErrored)?_c('img',{staticClass:\"version__image\",attrs:{\"src\":_vm.version.previewUrl,\"alt\":\"\",\"decoding\":\"async\",\"fetchpriority\":\"low\",\"loading\":\"lazy\"},on:{\"load\":function($event){_vm.previewLoaded = true},\"error\":function($event){_vm.previewErrored = true}}}):_c('div',{staticClass:\"version__image\"},[_c('ImageOffOutline',{attrs:{\"size\":20}})],1)]},proxy:true},{key:\"subname\",fn:function(){return [_c('div',{staticClass:\"version__info\"},[_c('span',{attrs:{\"title\":_vm.formattedDate}},[_vm._v(_vm._s(_vm._f(\"humanDateFromNow\")(_vm.version.mtime)))]),_vm._v(\" \"),_c('span',{staticClass:\"version__info__size\"},[_vm._v(\"•\")]),_vm._v(\" \"),_c('span',{staticClass:\"version__info__size\"},[_vm._v(_vm._s(_vm._f(\"humanReadableSize\")(_vm.version.size)))])])]},proxy:true},{key:\"actions\",fn:function(){return [(_vm.enableLabeling)?_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":_vm.labelUpdate},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":22}})]},proxy:true}],null,false,3072546167)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.version.label === '' ? _vm.t('files_versions', 'Name this version') : _vm.t('files_versions', 'Edit version name'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isCurrent && _vm.canView && _vm.canCompare)?_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":_vm.compareVersion},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('FileCompare',{attrs:{\"size\":22}})]},proxy:true}],null,false,1958207595)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Compare to current version'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isCurrent)?_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\"+_vm._s(_vm.t('files_versions', 'Restore version'))+\"\\n\\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\"+_vm._s(_vm.t('files_versions', 'Download version'))+\"\\n\\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\"+_vm._s(_vm.t('files_versions', 'Delete version'))+\"\\n\\t\\t\")]):_vm._e()]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualScrolling.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualScrolling.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (!_vm.useWindow && _vm.containerElement === null)?_c('div',{ref:\"container\",staticClass:\"vs-container\"},[_c('div',{ref:\"rowsContainer\",staticClass:\"vs-rows-container\",style:(_vm.rowsContainerStyle)},[_vm._t(\"default\",null,{\"visibleSections\":_vm.visibleSections}),_vm._v(\" \"),_vm._t(\"loader\")],2)]):_c('div',{ref:\"rowsContainer\",staticClass:\"vs-rows-container\",style:(_vm.rowsContainerStyle)},[_vm._t(\"default\",null,{\"visibleSections\":_vm.visibleSections}),_vm._v(\" \"),_vm._t(\"loader\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualScrolling.vue?vue&type=style&index=0&id=11dbbae6&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualScrolling.vue?vue&type=style&index=0&id=11dbbae6&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VirtualScrolling.vue?vue&type=template&id=11dbbae6&scoped=true\"\nimport script from \"./VirtualScrolling.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualScrolling.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VirtualScrolling.vue?vue&type=style&index=0&id=11dbbae6&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"11dbbae6\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('form',{staticClass:\"version-label-modal\",on:{\"submit\":function($event){$event.preventDefault();return _vm.setVersionLabel(_vm.innerVersionLabel)}}},[_c('label',[_c('div',{staticClass:\"version-label-modal__title\"},[_vm._v(_vm._s(_vm.t('files_versions', 'Version name')))]),_vm._v(\" \"),_c('NcTextField',{ref:\"labelInput\",attrs:{\"value\":_vm.innerVersionLabel,\"placeholder\":_vm.t('files_versions', 'Version name'),\"label-outside\":true},on:{\"update:value\":function($event){_vm.innerVersionLabel=$event}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"version-label-modal__info\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_versions', 'Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"version-label-modal__actions\"},[_c('NcButton',{attrs:{\"disabled\":_vm.innerVersionLabel.trim().length === 0},on:{\"click\":function($event){return _vm.setVersionLabel('')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Remove version name'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\",\"native-type\":\"submit\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Check')]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Save version name'))+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VersionLabelForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VersionLabelForm.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VersionLabelForm.vue?vue&type=style&index=0&id=58311f0c&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VersionLabelForm.vue?vue&type=style&index=0&id=58311f0c&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VersionLabelForm.vue?vue&type=template&id=58311f0c&scoped=true\"\nimport script from \"./VersionLabelForm.vue?vue&type=script&lang=ts\"\nexport * from \"./VersionLabelForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VersionLabelForm.vue?vue&type=style&index=0&id=58311f0c&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"58311f0c\",\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VersionTab.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VersionTab.vue?vue&type=script&lang=js\"","<!--\n - @copyright 2022 Carl Schwan <carl@carlschwan.eu>\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n<template>\n\t<div class=\"versions-tab__container\">\n\t\t<VirtualScrolling :sections=\"sections\"\n\t\t\t:header-height=\"0\">\n\t\t\t<template slot-scope=\"{visibleSections}\">\n\t\t\t\t<ul data-files-versions-versions-list>\n\t\t\t\t\t<template v-if=\"visibleSections.length === 1\">\n\t\t\t\t\t\t<Version v-for=\"(row) of visibleSections[0].rows\"\n\t\t\t\t\t\t\t:key=\"row.items[0].mtime\"\n\t\t\t\t\t\t\t:can-view=\"canView\"\n\t\t\t\t\t\t\t:can-compare=\"canCompare\"\n\t\t\t\t\t\t\t:load-preview=\"isActive\"\n\t\t\t\t\t\t\t:version=\"row.items[0]\"\n\t\t\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t\t\t:is-current=\"row.items[0].mtime === fileInfo.mtime\"\n\t\t\t\t\t\t\t:is-first-version=\"row.items[0].mtime === initialVersionMtime\"\n\t\t\t\t\t\t\t@click=\"openVersion\"\n\t\t\t\t\t\t\t@compare=\"compareVersion\"\n\t\t\t\t\t\t\t@restore=\"handleRestore\"\n\t\t\t\t\t\t\t@label-update-request=\"handleLabelUpdateRequest(row.items[0])\"\n\t\t\t\t\t\t\t@delete=\"handleDelete\" />\n\t\t\t\t\t</template>\n\t\t\t\t</ul>\n\t\t\t</template>\n\t\t\t<NcLoadingIcon v-if=\"loading\" slot=\"loader\" class=\"files-list-viewer__loader\" />\n\t\t</VirtualScrolling>\n\t\t<NcModal v-if=\"showVersionLabelForm\"\n\t\t\t:title=\"t('files_versions', 'Name this version')\"\n\t\t\t@close=\"showVersionLabelForm = false\">\n\t\t\t<VersionLabelForm :version-label=\"editedVersion.label\" @label-update=\"handleLabelUpdate\" />\n\t\t</NcModal>\n\t</div>\n</template>\n\n<script>\nimport path from 'path'\n\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport isMobile from '@nextcloud/vue/dist/Mixins/isMobile.js'\nimport { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\n\nimport { fetchVersions, deleteVersion, restoreVersion, setVersionLabel } from '../utils/versions.ts'\nimport Version from '../components/Version.vue'\nimport VirtualScrolling from '../components/VirtualScrolling.vue'\nimport VersionLabelForm from '../components/VersionLabelForm.vue'\n\nexport default {\n\tname: 'VersionTab',\n\tcomponents: {\n\t\tVersion,\n\t\tVirtualScrolling,\n\t\tVersionLabelForm,\n\t\tNcLoadingIcon,\n\t\tNcModal,\n\t},\n\tmixins: [\n\t\tisMobile,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tfileInfo: null,\n\t\t\tisActive: false,\n\t\t\t/** @type {import('../utils/versions.ts').Version[]} */\n\t\t\tversions: [],\n\t\t\tloading: false,\n\t\t\tshowVersionLabelForm: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tsections() {\n\t\t\tconst rows = this.orderedVersions.map(version => ({ key: version.mtime, height: 68, sectionKey: 'versions', items: [version] }))\n\t\t\treturn [{ key: 'versions', rows, height: 68 * this.orderedVersions.length }]\n\t\t},\n\n\t\t/**\n\t\t * Order versions by mtime.\n\t\t * Put the current version at the top.\n\t\t *\n\t\t * @return {import('../utils/versions.ts').Version[]}\n\t\t */\n\t\torderedVersions() {\n\t\t\treturn [...this.versions].sort((a, b) => {\n\t\t\t\tif (a.mtime === this.fileInfo.mtime) {\n\t\t\t\t\treturn -1\n\t\t\t\t} else if (b.mtime === this.fileInfo.mtime) {\n\t\t\t\t\treturn 1\n\t\t\t\t} else {\n\t\t\t\t\treturn b.mtime - a.mtime\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Return the mtime of the first version to display \"Initial version\" label\n\t\t *\n\t\t * @return {number}\n\t\t */\n\t\tinitialVersionMtime() {\n\t\t\treturn this.versions\n\t\t\t\t.map(version => version.mtime)\n\t\t\t\t.reduce((a, b) => Math.min(a, b))\n\t\t},\n\n\t\tviewerFileInfo() {\n\t\t\t// We need to remap bitmask to dav permissions as the file info we have is converted through client.js\n\t\t\tlet davPermissions = ''\n\t\t\tif (this.fileInfo.permissions & 1) {\n\t\t\t\tdavPermissions += 'R'\n\t\t\t}\n\t\t\tif (this.fileInfo.permissions & 2) {\n\t\t\t\tdavPermissions += 'W'\n\t\t\t}\n\t\t\tif (this.fileInfo.permissions & 8) {\n\t\t\t\tdavPermissions += 'D'\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...this.fileInfo,\n\t\t\t\tmime: this.fileInfo.mimetype,\n\t\t\t\tbasename: this.fileInfo.name,\n\t\t\t\tfilename: this.fileInfo.path + '/' + this.fileInfo.name,\n\t\t\t\tpermissions: davPermissions,\n\t\t\t\tfileid: this.fileInfo.id,\n\t\t\t}\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\tcanView() {\n\t\t\treturn window.OCA.Viewer?.mimetypesCompare?.includes(this.fileInfo.mimetype)\n\t\t},\n\n\t\tcanCompare() {\n\t\t\treturn !this.isMobile\n\t\t},\n\t},\n\tmounted() {\n\t\tsubscribe('files_versions:restore:restored', this.fetchVersions)\n\t},\n\tbeforeUnmount() {\n\t\tunsubscribe('files_versions:restore:restored', this.fetchVersions)\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Update current fileInfo and fetch new data\n\t\t *\n\t\t * @param {object} fileInfo the current file FileInfo\n\t\t */\n\t\tasync update(fileInfo) {\n\t\t\tthis.fileInfo = fileInfo\n\t\t\tthis.resetState()\n\t\t\tthis.fetchVersions()\n\t\t},\n\n\t\t/**\n\t\t * @param {boolean} isActive whether the tab is active\n\t\t */\n\t\tasync setIsActive(isActive) {\n\t\t\tthis.isActive = isActive\n\t\t},\n\n\t\t/**\n\t\t * Get the existing versions infos\n\t\t */\n\t\tasync fetchVersions() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.versions = await fetchVersions(this.fileInfo)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle restored event from Version.vue\n\t\t *\n\t\t * @param {import('../utils/versions.ts').Version} version\n\t\t */\n\t\tasync handleRestore(version) {\n\t\t\t// Update local copy of fileInfo as rendering depends on it.\n\t\t\tconst oldFileInfo = this.fileInfo\n\t\t\tthis.fileInfo = {\n\t\t\t\t...this.fileInfo,\n\t\t\t\tsize: version.size,\n\t\t\t\tmtime: version.mtime,\n\t\t\t}\n\n\t\t\tconst restoreStartedEventState = {\n\t\t\t\tpreventDefault: false,\n\t\t\t\tfileInfo: this.fileInfo,\n\t\t\t\tversion,\n\t\t\t}\n\t\t\temit('files_versions:restore:requested', restoreStartedEventState)\n\t\t\tif (restoreStartedEventState.preventDefault) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tawait restoreVersion(version)\n\t\t\t\tif (version.label !== '') {\n\t\t\t\t\tshowSuccess(t('files_versions', `${version.label} restored`))\n\t\t\t\t} else if (version.mtime === this.initialVersionMtime) {\n\t\t\t\t\tshowSuccess(t('files_versions', 'Initial version restored'))\n\t\t\t\t} else {\n\t\t\t\t\tshowSuccess(t('files_versions', 'Version restored'))\n\t\t\t\t}\n\t\t\t\temit('files_versions:restore:restored', version)\n\t\t\t} catch (exception) {\n\t\t\t\tthis.fileInfo = oldFileInfo\n\t\t\t\tshowError(t('files_versions', 'Could not restore version'))\n\t\t\t\temit('files_versions:restore:failed', version)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle label-updated event from Version.vue\n\t\t * @param {import('../utils/versions.ts').Version} version\n\t\t */\n\t\thandleLabelUpdateRequest(version) {\n\t\t\tthis.showVersionLabelForm = true\n\t\t\tthis.editedVersion = version\n\t\t},\n\n\t\t/**\n\t\t * Handle label-updated event from Version.vue\n\t\t * @param {string} newLabel\n\t\t */\n\t\tasync handleLabelUpdate(newLabel) {\n\t\t\tconst oldLabel = this.editedVersion.label\n\t\t\tthis.editedVersion.label = newLabel\n\t\t\tthis.showVersionLabelForm = false\n\n\t\t\ttry {\n\t\t\t\tawait setVersionLabel(this.editedVersion, newLabel)\n\t\t\t\tthis.editedVersion = null\n\t\t\t} catch (exception) {\n\t\t\t\tthis.editedVersion.label = oldLabel\n\t\t\t\tshowError(this.t('files_versions', 'Could not set version label'))\n\t\t\t\tlogger.error('Could not set version label', { exception })\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle deleted event from Version.vue\n\t\t *\n\t\t * @param {import('../utils/versions.ts').Version} version\n\t\t * @param {string} newName\n\t\t */\n\t\tasync handleDelete(version) {\n\t\t\tconst index = this.versions.indexOf(version)\n\t\t\tthis.versions.splice(index, 1)\n\n\t\t\ttry {\n\t\t\t\tawait deleteVersion(version)\n\t\t\t} catch (exception) {\n\t\t\t\tthis.versions.push(version)\n\t\t\t\tshowError(t('files_versions', 'Could not delete version'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.$set(this, 'versions', [])\n\t\t},\n\n\t\topenVersion({ version }) {\n\t\t\t// Open current file view instead of read only\n\t\t\tif (version.mtime === this.fileInfo.mtime) {\n\t\t\t\tOCA.Viewer.open({ fileInfo: this.viewerFileInfo })\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Versions previews are too small for our use case, so we override hasPreview and previewUrl\n\t\t\t// which makes the viewer render the original file.\n\t\t\t// We also point to the original filename if the version is the current one.\n\t\t\tconst versions = this.versions.map(version => ({\n\t\t\t\t...version,\n\t\t\t\tfilename: version.mtime === this.fileInfo.mtime ? path.join('files', getCurrentUser()?.uid ?? '', this.fileInfo.path, this.fileInfo.name) : version.filename,\n\t\t\t\thasPreview: false,\n\t\t\t\tpreviewUrl: undefined,\n\t\t\t}))\n\n\t\t\tOCA.Viewer.open({\n\t\t\t\tfileInfo: versions.find(v => v.source === version.source),\n\t\t\t\tenableSidebar: false,\n\t\t\t})\n\t\t},\n\n\t\tcompareVersion({ version }) {\n\t\t\tconst versions = this.versions.map(version => ({ ...version, hasPreview: false, previewUrl: undefined }))\n\n\t\t\tOCA.Viewer.compare(this.viewerFileInfo, versions.find(v => v.source === version.source))\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\">\n.versions-tab__container {\n\theight: 100%;\n}\n</style>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable jsdoc/require-jsdoc */\n/**\n * @copyright 2022 Louis Chemineau <mlouis@chmn.me>\n *\n * @author Louis Chemineau <mlouis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { joinPaths } from '@nextcloud/paths';\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router';\nimport moment from '@nextcloud/moment';\nimport { encodeFilePath } from '../../../files/src/utils/fileUtils.ts';\nimport client from '../utils/davClient.js';\nimport davRequest from '../utils/davRequest.js';\nimport logger from '../utils/logger.js';\nexport async function fetchVersions(fileInfo) {\n    const path = `/versions/${getCurrentUser()?.uid}/versions/${fileInfo.id}`;\n    try {\n        const response = await client.getDirectoryContents(path, {\n            data: davRequest,\n            details: true,\n        });\n        return response.data\n            // Filter out root\n            .filter(({ mime }) => mime !== '')\n            .map(version => formatVersion(version, fileInfo));\n    }\n    catch (exception) {\n        logger.error('Could not fetch version', { exception });\n        throw exception;\n    }\n}\n/**\n * Restore the given version\n */\nexport async function restoreVersion(version) {\n    try {\n        logger.debug('Restoring version', { url: version.url });\n        await client.moveFile(`/versions/${getCurrentUser()?.uid}/versions/${version.fileId}/${version.fileVersion}`, `/versions/${getCurrentUser()?.uid}/restore/target`);\n    }\n    catch (exception) {\n        logger.error('Could not restore version', { exception });\n        throw exception;\n    }\n}\n/**\n * Format version\n */\nfunction formatVersion(version, fileInfo) {\n    const mtime = moment(version.lastmod).unix() * 1000;\n    let previewUrl = '';\n    if (mtime === fileInfo.mtime) { // Version is the current one\n        previewUrl = generateUrl('/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0', {\n            fileId: fileInfo.id,\n            fileEtag: fileInfo.etag,\n        });\n    }\n    else {\n        previewUrl = generateUrl('/apps/files_versions/preview?file={file}&version={fileVersion}', {\n            file: joinPaths(fileInfo.path, fileInfo.name),\n            fileVersion: version.basename,\n        });\n    }\n    return {\n        fileId: fileInfo.id,\n        label: version.props['version-label'],\n        filename: version.filename,\n        basename: moment(mtime).format('LLL'),\n        mime: version.mime,\n        etag: `${version.props.getetag}`,\n        size: version.size,\n        type: version.type,\n        mtime,\n        permissions: 'R',\n        hasPreview: version.props['has-preview'] === 1,\n        previewUrl,\n        url: joinPaths('/remote.php/dav', version.filename),\n        source: generateRemoteUrl('dav') + encodeFilePath(version.filename),\n        fileVersion: version.basename,\n    };\n}\nexport async function setVersionLabel(version, newLabel) {\n    return await client.customRequest(version.filename, {\n        method: 'PROPPATCH',\n        data: `<?xml version=\"1.0\"?>\n\t\t\t\t\t<d:propertyupdate xmlns:d=\"DAV:\"\n\t\t\t\t\t\txmlns:oc=\"http://owncloud.org/ns\"\n\t\t\t\t\t\txmlns:nc=\"http://nextcloud.org/ns\"\n\t\t\t\t\t\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t\t\t\t\t<d:set>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t<nc:version-label>${newLabel}</nc:version-label>\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t</d:set>\n\t\t\t\t\t</d:propertyupdate>`,\n    });\n}\nexport async function deleteVersion(version) {\n    await client.deleteFile(version.filename);\n}\n","/**\n * @copyright Copyright (c) 2019 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default `<?xml version=\"1.0\"?>\n<d:propfind xmlns:d=\"DAV:\"\n\txmlns:oc=\"http://owncloud.org/ns\"\n\txmlns:nc=\"http://nextcloud.org/ns\"\n\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t<d:prop>\n\t\t<d:getcontentlength />\n\t\t<d:getcontenttype />\n\t\t<d:getlastmodified />\n\t\t<d:getetag />\n\t\t<nc:version-label />\n\t\t<nc:has-preview />\n\t</d:prop>\n</d:propfind>`\n","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VersionTab.vue?vue&type=style&index=0&id=9f52be8e&prod&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VersionTab.vue?vue&type=style&index=0&id=9f52be8e&prod&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VersionTab.vue?vue&type=template&id=9f52be8e\"\nimport script from \"./VersionTab.vue?vue&type=script&lang=js\"\nexport * from \"./VersionTab.vue?vue&type=script&lang=js\"\nimport style0 from \"./VersionTab.vue?vue&type=style&index=0&id=9f52be8e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"versions-tab__container\"},[_c('VirtualScrolling',{attrs:{\"sections\":_vm.sections,\"header-height\":0},scopedSlots:_vm._u([{key:\"default\",fn:function({visibleSections}){return [_c('ul',{attrs:{\"data-files-versions-versions-list\":\"\"}},[(visibleSections.length === 1)?_vm._l((visibleSections[0].rows),function(row){return _c('Version',{key:row.items[0].mtime,attrs:{\"can-view\":_vm.canView,\"can-compare\":_vm.canCompare,\"load-preview\":_vm.isActive,\"version\":row.items[0],\"file-info\":_vm.fileInfo,\"is-current\":row.items[0].mtime === _vm.fileInfo.mtime,\"is-first-version\":row.items[0].mtime === _vm.initialVersionMtime},on:{\"click\":_vm.openVersion,\"compare\":_vm.compareVersion,\"restore\":_vm.handleRestore,\"label-update-request\":function($event){return _vm.handleLabelUpdateRequest(row.items[0])},\"delete\":_vm.handleDelete}})}):_vm._e()],2)]}}])},[_vm._v(\" \"),(_vm.loading)?_c('NcLoadingIcon',{staticClass:\"files-list-viewer__loader\",attrs:{\"slot\":\"loader\"},slot:\"loader\"}):_vm._e()],1),_vm._v(\" \"),(_vm.showVersionLabelForm)?_c('NcModal',{attrs:{\"title\":_vm.t('files_versions', 'Name this version')},on:{\"close\":function($event){_vm.showVersionLabelForm = false}}},[_c('VersionLabelForm',{attrs:{\"version-label\":_vm.editedVersion.label},on:{\"label-update\":_vm.handleLabelUpdate}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Carl Schwan <carl@carlschwan.eu>\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\nimport VersionTab from './views/VersionTab.vue'\nimport VTooltip from 'v-tooltip'\n// eslint-disable-next-line n/no-missing-import, import/no-unresolved\nimport BackupRestore from '@mdi/svg/svg/backup-restore.svg?raw'\n\nVue.prototype.t = t\nVue.prototype.n = n\n\nVue.use(VTooltip)\n\n// Init Sharing tab component\nconst View = Vue.extend(VersionTab)\nlet TabInstance = null\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (OCA.Files?.Sidebar === undefined) {\n\t\treturn\n\t}\n\n\tOCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({\n\t\tid: 'version_vue',\n\t\tname: t('files_versions', 'Versions'),\n\t\ticonSvg: BackupRestore,\n\n\t\tasync mount(el, fileInfo, context) {\n\t\t\tif (TabInstance) {\n\t\t\t\tTabInstance.$destroy()\n\t\t\t}\n\t\t\tTabInstance = new View({\n\t\t\t\t// Better integration with vue parent component\n\t\t\t\tparent: context,\n\t\t\t})\n\t\t\t// Only mount after we have all the info we need\n\t\t\tawait TabInstance.update(fileInfo)\n\t\t\tTabInstance.$mount(el)\n\t\t},\n\t\tupdate(fileInfo) {\n\t\t\tTabInstance.update(fileInfo)\n\t\t},\n\t\tsetIsActive(isActive) {\n\t\t\tif (!TabInstance) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tTabInstance.setIsActive(isActive)\n\t\t},\n\t\tdestroy() {\n\t\t\tTabInstance.$destroy()\n\t\t\tTabInstance = null\n\t\t},\n\t\tenabled(fileInfo) {\n\t\t\treturn !(fileInfo?.isDirectory() ?? true)\n\t\t},\n\t}))\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.version[data-v-3cb7975c]{display:flex;flex-direction:row}.version__info[data-v-3cb7975c]{display:flex;flex-direction:row;align-items:center;gap:.5rem}.version__info__size[data-v-3cb7975c]{color:var(--color-text-lighter)}.version__image[data-v-3cb7975c]{width:3rem;height:3rem;border:1px solid var(--color-border);border-radius:var(--border-radius-large);display:flex;justify-content:center;color:var(--color-text-light)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_versions/src/components/Version.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,kBAAA,CAEA,gCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,SAAA,CAEA,sCACC,+BAAA,CAIF,iCACC,UAAA,CACA,WAAA,CACA,oCAAA,CACA,wCAAA,CAGA,YAAA,CACA,sBAAA,CACA,6BAAA\",\"sourcesContent\":[\"\\n.version {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\n\\t&__info {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\talign-items: center;\\n\\t\\tgap: 0.5rem;\\n\\n\\t\\t&__size {\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t}\\n\\t}\\n\\n\\t&__image {\\n\\t\\twidth: 3rem;\\n\\t\\theight: 3rem;\\n\\t\\tborder: 1px solid var(--color-border);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\n\\t\\t// Useful to display no preview icon.\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\tcolor: var(--color-text-light);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.version-label-modal[data-v-58311f0c]{display:flex;justify-content:space-between;flex-direction:column;height:250px;padding:16px}.version-label-modal__title[data-v-58311f0c]{margin-bottom:12px;font-weight:600}.version-label-modal__info[data-v-58311f0c]{margin-top:12px;color:var(--color-text-maxcontrast)}.version-label-modal__actions[data-v-58311f0c]{display:flex;justify-content:space-between;margin-top:64px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_versions/src/components/VersionLabelForm.vue\"],\"names\":[],\"mappings\":\"AACA,sCACC,YAAA,CACA,6BAAA,CACA,qBAAA,CACA,YAAA,CACA,YAAA,CAEA,6CACC,kBAAA,CACA,eAAA,CAGD,4CACC,eAAA,CACA,mCAAA,CAGD,+CACC,YAAA,CACA,6BAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.version-label-modal {\\n\\tdisplay: flex;\\n\\tjustify-content: space-between;\\n\\tflex-direction: column;\\n\\theight: 250px;\\n\\tpadding: 16px;\\n\\n\\t&__title {\\n\\t\\tmargin-bottom: 12px;\\n\\t\\tfont-weight: 600;\\n\\t}\\n\\n\\t&__info {\\n\\t\\tmargin-top: 12px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&__actions {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: space-between;\\n\\t\\tmargin-top: 64px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.vs-container[data-v-11dbbae6]{overflow-y:scroll;height:100%}.vs-rows-container[data-v-11dbbae6]{box-sizing:border-box;will-change:scroll-position,padding;contain:layout paint style}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_versions/src/components/VirtualScrolling.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,iBAAA,CACA,WAAA,CAGD,oCACC,qBAAA,CACA,mCAAA,CACA,0BAAA\",\"sourcesContent\":[\"\\n.vs-container {\\n\\toverflow-y: scroll;\\n\\theight: 100%;\\n}\\n\\n.vs-rows-container {\\n\\tbox-sizing: border-box;\\n\\twill-change: scroll-position, padding;\\n\\tcontain: layout paint style;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.versions-tab__container{height:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_versions/src/views/VersionTab.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,WAAA\",\"sourcesContent\":[\"\\n.versions-tab__container {\\n\\theight: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","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-ps\": 20315,\n\t\"./ar-ps.js\": 20315,\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-kmr\": 90563,\n\t\"./ku-kmr.js\": 90563,\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;","import { getCurrentUser as A, onRequestTokenUpdate as ue, getRequestToken as de } from \"@nextcloud/auth\";\nimport { getLoggerBuilder as q } from \"@nextcloud/logger\";\nimport { getCanonicalLocale as ae } from \"@nextcloud/l10n\";\nimport { join as le, basename as fe, extname as ce, dirname as I } from \"path\";\nimport { encodePath as he } from \"@nextcloud/paths\";\nimport { generateRemoteUrl as pe } from \"@nextcloud/router\";\nimport { createClient as ge, getPatcher as we } from \"webdav\";\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 */\nconst me = (e) => e === null ? q().setApp(\"files\").build() : q().setApp(\"files\").setUid(e.uid).build(), m = me(A());\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 */\nclass Ne {\n  _entries = [];\n  registerEntry(t) {\n    this.validateEntry(t), this._entries.push(t);\n  }\n  unregisterEntry(t) {\n    const r = typeof t == \"string\" ? this.getEntryIndex(t) : this.getEntryIndex(t.id);\n    if (r === -1) {\n      m.warn(\"Entry not found, nothing removed\", { entry: t, entries: this.getEntries() });\n      return;\n    }\n    this._entries.splice(r, 1);\n  }\n  /**\n   * Get the list of registered entries\n   *\n   * @param {Folder} context the creation context. Usually the current folder\n   */\n  getEntries(t) {\n    return t ? this._entries.filter((r) => typeof r.enabled == \"function\" ? r.enabled(t) : !0) : this._entries;\n  }\n  getEntryIndex(t) {\n    return this._entries.findIndex((r) => r.id === t);\n  }\n  validateEntry(t) {\n    if (!t.id || !t.displayName || !(t.iconSvgInline || t.iconClass) || !t.handler)\n      throw new Error(\"Invalid entry\");\n    if (typeof t.id != \"string\" || typeof t.displayName != \"string\")\n      throw new Error(\"Invalid id or displayName property\");\n    if (t.iconClass && typeof t.iconClass != \"string\" || t.iconSvgInline && typeof t.iconSvgInline != \"string\")\n      throw new Error(\"Invalid icon provided\");\n    if (t.enabled !== void 0 && typeof t.enabled != \"function\")\n      throw new Error(\"Invalid enabled property\");\n    if (typeof t.handler != \"function\")\n      throw new Error(\"Invalid handler property\");\n    if (\"order\" in t && typeof t.order != \"number\")\n      throw new Error(\"Invalid order property\");\n    if (this.getEntryIndex(t.id) !== -1)\n      throw new Error(\"Duplicate entry\");\n  }\n}\nconst F = function() {\n  return typeof window._nc_newfilemenu > \"u\" && (window._nc_newfilemenu = new Ne(), m.debug(\"NewFileMenu initialized\")), window._nc_newfilemenu;\n};\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 */\nconst C = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"], P = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction Yt(e, t = !1, r = !1, s = !1) {\n  r = r && !s, typeof e == \"string\" && (e = Number(e));\n  let n = e > 0 ? Math.floor(Math.log(e) / Math.log(s ? 1e3 : 1024)) : 0;\n  n = Math.min((r ? P.length : C.length) - 1, n);\n  const i = r ? P[n] : C[n];\n  let d = (e / Math.pow(s ? 1e3 : 1024, n)).toFixed(1);\n  return t === !0 && n === 0 ? (d !== \"0.0\" ? \"< 1 \" : \"0 \") + (r ? P[1] : C[1]) : (n < 2 ? d = parseFloat(d).toFixed(0) : d = parseFloat(d).toLocaleString(ae()), d + \" \" + i);\n}\nfunction Jt(e, t = !1) {\n  try {\n    e = `${e}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n  } catch {\n    return null;\n  }\n  const r = e.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n  if (r === null || r[1] === \".\" || r[1] === \"\")\n    return null;\n  const s = {\n    \"\": 0,\n    k: 1,\n    m: 2,\n    g: 3,\n    t: 4,\n    p: 5,\n    e: 6\n  }, n = `${r[1]}`, i = r[4] === \"i\" || t ? 1024 : 1e3;\n  return Math.round(Number.parseFloat(n) * i ** s[r[3]]);\n}\n/**\n * @copyright Copyright (c) 2023 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 */\nvar Z = /* @__PURE__ */ ((e) => (e.DEFAULT = \"default\", e.HIDDEN = \"hidden\", e))(Z || {});\nclass Qt {\n  _action;\n  constructor(t) {\n    this.validateAction(t), this._action = t;\n  }\n  get id() {\n    return this._action.id;\n  }\n  get displayName() {\n    return this._action.displayName;\n  }\n  get title() {\n    return this._action.title;\n  }\n  get iconSvgInline() {\n    return this._action.iconSvgInline;\n  }\n  get enabled() {\n    return this._action.enabled;\n  }\n  get exec() {\n    return this._action.exec;\n  }\n  get execBatch() {\n    return this._action.execBatch;\n  }\n  get order() {\n    return this._action.order;\n  }\n  get parent() {\n    return this._action.parent;\n  }\n  get default() {\n    return this._action.default;\n  }\n  get inline() {\n    return this._action.inline;\n  }\n  get renderInline() {\n    return this._action.renderInline;\n  }\n  validateAction(t) {\n    if (!t.id || typeof t.id != \"string\")\n      throw new Error(\"Invalid id\");\n    if (!t.displayName || typeof t.displayName != \"function\")\n      throw new Error(\"Invalid displayName function\");\n    if (\"title\" in t && typeof t.title != \"function\")\n      throw new Error(\"Invalid title function\");\n    if (!t.iconSvgInline || typeof t.iconSvgInline != \"function\")\n      throw new Error(\"Invalid iconSvgInline function\");\n    if (!t.exec || typeof t.exec != \"function\")\n      throw new Error(\"Invalid exec function\");\n    if (\"enabled\" in t && typeof t.enabled != \"function\")\n      throw new Error(\"Invalid enabled function\");\n    if (\"execBatch\" in t && typeof t.execBatch != \"function\")\n      throw new Error(\"Invalid execBatch function\");\n    if (\"order\" in t && typeof t.order != \"number\")\n      throw new Error(\"Invalid order\");\n    if (\"parent\" in t && typeof t.parent != \"string\")\n      throw new Error(\"Invalid parent\");\n    if (t.default && !Object.values(Z).includes(t.default))\n      throw new Error(\"Invalid default\");\n    if (\"inline\" in t && typeof t.inline != \"function\")\n      throw new Error(\"Invalid inline function\");\n    if (\"renderInline\" in t && typeof t.renderInline != \"function\")\n      throw new Error(\"Invalid renderInline function\");\n  }\n}\nconst Dt = function(e) {\n  if (typeof window._nc_fileactions > \"u\" && (window._nc_fileactions = [], m.debug(\"FileActions initialized\")), window._nc_fileactions.find((t) => t.id === e.id)) {\n    m.error(`FileAction ${e.id} already registered`, { action: e });\n    return;\n  }\n  window._nc_fileactions.push(e);\n}, er = function() {\n  return typeof window._nc_fileactions > \"u\" && (window._nc_fileactions = [], m.debug(\"FileActions initialized\")), window._nc_fileactions;\n};\n/**\n * @copyright Copyright (c) 2023 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 */\nclass tr {\n  _header;\n  constructor(t) {\n    this.validateHeader(t), this._header = t;\n  }\n  get id() {\n    return this._header.id;\n  }\n  get order() {\n    return this._header.order;\n  }\n  get enabled() {\n    return this._header.enabled;\n  }\n  get render() {\n    return this._header.render;\n  }\n  get updated() {\n    return this._header.updated;\n  }\n  validateHeader(t) {\n    if (!t.id || !t.render || !t.updated)\n      throw new Error(\"Invalid header: id, render and updated are required\");\n    if (typeof t.id != \"string\")\n      throw new Error(\"Invalid id property\");\n    if (t.enabled !== void 0 && typeof t.enabled != \"function\")\n      throw new Error(\"Invalid enabled property\");\n    if (t.render && typeof t.render != \"function\")\n      throw new Error(\"Invalid render property\");\n    if (t.updated && typeof t.updated != \"function\")\n      throw new Error(\"Invalid updated property\");\n  }\n}\nconst rr = function(e) {\n  if (typeof window._nc_filelistheader > \"u\" && (window._nc_filelistheader = [], m.debug(\"FileListHeaders initialized\")), window._nc_filelistheader.find((t) => t.id === e.id)) {\n    m.error(`Header ${e.id} already registered`, { header: e });\n    return;\n  }\n  window._nc_filelistheader.push(e);\n}, nr = function() {\n  return typeof window._nc_filelistheader > \"u\" && (window._nc_filelistheader = [], m.debug(\"FileListHeaders initialized\")), window._nc_filelistheader;\n};\n/**\n * @copyright Copyright (c) 2022 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 */\nvar N = /* @__PURE__ */ ((e) => (e[e.NONE = 0] = \"NONE\", e[e.CREATE = 4] = \"CREATE\", e[e.READ = 1] = \"READ\", e[e.UPDATE = 2] = \"UPDATE\", e[e.DELETE = 8] = \"DELETE\", e[e.SHARE = 16] = \"SHARE\", e[e.ALL = 31] = \"ALL\", e))(N || {});\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\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 */\nconst j = [\n  \"d:getcontentlength\",\n  \"d:getcontenttype\",\n  \"d:getetag\",\n  \"d:getlastmodified\",\n  \"d:quota-available-bytes\",\n  \"d:resourcetype\",\n  \"nc:has-preview\",\n  \"nc:is-encrypted\",\n  \"nc:mount-type\",\n  \"nc:share-attributes\",\n  \"oc:comments-unread\",\n  \"oc:favorite\",\n  \"oc:fileid\",\n  \"oc:owner-display-name\",\n  \"oc:owner-id\",\n  \"oc:permissions\",\n  \"oc:share-types\",\n  \"oc:size\",\n  \"ocs:share-permissions\"\n], Y = {\n  d: \"DAV:\",\n  nc: \"http://nextcloud.org/ns\",\n  oc: \"http://owncloud.org/ns\",\n  ocs: \"http://open-collaboration-services.org/ns\"\n}, ir = function(e, t = { nc: \"http://nextcloud.org/ns\" }) {\n  typeof window._nc_dav_properties > \"u\" && (window._nc_dav_properties = [...j], window._nc_dav_namespaces = { ...Y });\n  const r = { ...window._nc_dav_namespaces, ...t };\n  if (window._nc_dav_properties.find((n) => n === e))\n    return m.error(`${e} already registered`, { prop: e }), !1;\n  if (e.startsWith(\"<\") || e.split(\":\").length !== 2)\n    return m.error(`${e} is not valid. See example: 'oc:fileid'`, { prop: e }), !1;\n  const s = e.split(\":\")[0];\n  return r[s] ? (window._nc_dav_properties.push(e), window._nc_dav_namespaces = r, !0) : (m.error(`${e} namespace unknown`, { prop: e, namespaces: r }), !1);\n}, V = function() {\n  return typeof window._nc_dav_properties > \"u\" && (window._nc_dav_properties = [...j]), window._nc_dav_properties.map((e) => `<${e} />`).join(\" \");\n}, L = function() {\n  return typeof window._nc_dav_namespaces > \"u\" && (window._nc_dav_namespaces = { ...Y }), Object.keys(window._nc_dav_namespaces).map((e) => `xmlns:${e}=\"${window._nc_dav_namespaces?.[e]}\"`).join(\" \");\n}, sr = function() {\n  return `<?xml version=\"1.0\"?>\n\t\t<d:propfind ${L()}>\n\t\t\t<d:prop>\n\t\t\t\t${V()}\n\t\t\t</d:prop>\n\t\t</d:propfind>`;\n}, Ee = function() {\n  return `<?xml version=\"1.0\"?>\n\t\t<oc:filter-files ${L()}>\n\t\t\t<d:prop>\n\t\t\t\t${V()}\n\t\t\t</d:prop>\n\t\t\t<oc:filter-rules>\n\t\t\t\t<oc:favorite>1</oc:favorite>\n\t\t\t</oc:filter-rules>\n\t\t</oc:filter-files>`;\n}, or = function(e) {\n  return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<d:searchrequest ${L()}\n\txmlns:ns=\"https://github.com/icewind1991/SearchDAV/ns\">\n\t<d:basicsearch>\n\t\t<d:select>\n\t\t\t<d:prop>\n\t\t\t\t${V()}\n\t\t\t</d:prop>\n\t\t</d:select>\n\t\t<d:from>\n\t\t\t<d:scope>\n\t\t\t\t<d:href>/files/${A()?.uid}/</d:href>\n\t\t\t\t<d:depth>infinity</d:depth>\n\t\t\t</d:scope>\n\t\t</d:from>\n\t\t<d:where>\n\t\t\t<d:and>\n\t\t\t\t<d:or>\n\t\t\t\t\t<d:not>\n\t\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t\t<d:getcontenttype/>\n\t\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t\t<d:literal>httpd/unix-directory</d:literal>\n\t\t\t\t\t\t</d:eq>\n\t\t\t\t\t</d:not>\n\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t<oc:size/>\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t<d:literal>0</d:literal>\n\t\t\t\t\t</d:eq>\n\t\t\t\t</d:or>\n\t\t\t\t<d:gt>\n\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t\t</d:prop>\n\t\t\t\t\t<d:literal>${e}</d:literal>\n\t\t\t\t</d:gt>\n\t\t\t</d:and>\n\t\t</d:where>\n\t\t<d:orderby>\n\t\t\t<d:order>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t</d:prop>\n\t\t\t\t<d:descending/>\n\t\t\t</d:order>\n\t\t</d:orderby>\n\t\t<d:limit>\n\t\t\t<d:nresults>100</d:nresults>\n\t\t\t<ns:firstresult>0</ns:firstresult>\n\t\t</d:limit>\n\t</d:basicsearch>\n</d:searchrequest>`;\n};\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\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 */\nconst be = function(e = \"\") {\n  let t = N.NONE;\n  return e && ((e.includes(\"C\") || e.includes(\"K\")) && (t |= N.CREATE), e.includes(\"G\") && (t |= N.READ), (e.includes(\"W\") || e.includes(\"N\") || e.includes(\"V\")) && (t |= N.UPDATE), e.includes(\"D\") && (t |= N.DELETE), e.includes(\"R\") && (t |= N.SHARE)), t;\n};\n/**\n * @copyright Copyright (c) 2022 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 */\nvar R = /* @__PURE__ */ ((e) => (e.Folder = \"folder\", e.File = \"file\", e))(R || {});\n/**\n * @copyright Copyright (c) 2022 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 */\nconst J = function(e, t) {\n  return e.match(t) !== null;\n}, X = (e, t) => {\n  if (e.id && typeof e.id != \"number\")\n    throw new Error(\"Invalid id type of value\");\n  if (!e.source)\n    throw new Error(\"Missing mandatory source\");\n  try {\n    new URL(e.source);\n  } catch {\n    throw new Error(\"Invalid source format, source must be a valid URL\");\n  }\n  if (!e.source.startsWith(\"http\"))\n    throw new Error(\"Invalid source format, only http(s) is supported\");\n  if (e.mtime && !(e.mtime instanceof Date))\n    throw new Error(\"Invalid mtime type\");\n  if (e.crtime && !(e.crtime instanceof Date))\n    throw new Error(\"Invalid crtime type\");\n  if (!e.mime || typeof e.mime != \"string\" || !e.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi))\n    throw new Error(\"Missing or invalid mandatory mime\");\n  if (\"size\" in e && typeof e.size != \"number\" && e.size !== void 0)\n    throw new Error(\"Invalid size type\");\n  if (\"permissions\" in e && e.permissions !== void 0 && !(typeof e.permissions == \"number\" && e.permissions >= N.NONE && e.permissions <= N.ALL))\n    throw new Error(\"Invalid permissions\");\n  if (e.owner && e.owner !== null && typeof e.owner != \"string\")\n    throw new Error(\"Invalid owner type\");\n  if (e.attributes && typeof e.attributes != \"object\")\n    throw new Error(\"Invalid attributes type\");\n  if (e.root && typeof e.root != \"string\")\n    throw new Error(\"Invalid root type\");\n  if (e.root && !e.root.startsWith(\"/\"))\n    throw new Error(\"Root must start with a leading slash\");\n  if (e.root && !e.source.includes(e.root))\n    throw new Error(\"Root must be part of the source\");\n  if (e.root && J(e.source, t)) {\n    const r = e.source.match(t)[0];\n    if (!e.source.includes(le(r, e.root)))\n      throw new Error(\"The root must be relative to the service. e.g /files/emma\");\n  }\n  if (e.status && !Object.values(Q).includes(e.status))\n    throw new Error(\"Status must be a valid NodeStatus\");\n};\n/**\n * @copyright Copyright (c) 2022 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 */\nvar Q = /* @__PURE__ */ ((e) => (e.NEW = \"new\", e.FAILED = \"failed\", e.LOADING = \"loading\", e.LOCKED = \"locked\", e))(Q || {});\nclass D {\n  _data;\n  _attributes;\n  _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n  constructor(t, r) {\n    X(t, r || this._knownDavService), this._data = t;\n    const s = {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      set: (n, i, d) => (this.updateMtime(), Reflect.set(n, i, d)),\n      deleteProperty: (n, i) => (this.updateMtime(), Reflect.deleteProperty(n, i))\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    };\n    this._attributes = new Proxy(t.attributes || {}, s), delete this._data.attributes, r && (this._knownDavService = r);\n  }\n  /**\n   * Get the source url to this object\n   */\n  get source() {\n    return this._data.source.replace(/\\/$/i, \"\");\n  }\n  /**\n   * Get the encoded source url to this object for requests purposes\n   */\n  get encodedSource() {\n    const { origin: t } = new URL(this.source);\n    return t + he(this.source.slice(t.length));\n  }\n  /**\n   * Get this object name\n   */\n  get basename() {\n    return fe(this.source);\n  }\n  /**\n   * Get this object's extension\n   */\n  get extension() {\n    return ce(this.source);\n  }\n  /**\n   * Get the directory path leading to this object\n   * Will use the relative path to root if available\n   */\n  get dirname() {\n    if (this.root) {\n      let r = this.source;\n      this.isDavRessource && (r = r.split(this._knownDavService).pop());\n      const s = r.indexOf(this.root), n = this.root.replace(/\\/$/, \"\");\n      return I(r.slice(s + n.length) || \"/\");\n    }\n    const t = new URL(this.source);\n    return I(t.pathname);\n  }\n  /**\n   * Get the file mime\n   */\n  get mime() {\n    return this._data.mime;\n  }\n  /**\n   * Get the file modification time\n   */\n  get mtime() {\n    return this._data.mtime;\n  }\n  /**\n   * Get the file creation time\n   */\n  get crtime() {\n    return this._data.crtime;\n  }\n  /**\n   * Get the file size\n   */\n  get size() {\n    return this._data.size;\n  }\n  /**\n   * Get the file attribute\n   */\n  get attributes() {\n    return this._attributes;\n  }\n  /**\n   * Get the file permissions\n   */\n  get permissions() {\n    return this.owner === null && !this.isDavRessource ? N.READ : this._data.permissions !== void 0 ? this._data.permissions : N.NONE;\n  }\n  /**\n   * Get the file owner\n   */\n  get owner() {\n    return this.isDavRessource ? this._data.owner : null;\n  }\n  /**\n   * Is this a dav-related ressource ?\n   */\n  get isDavRessource() {\n    return J(this.source, this._knownDavService);\n  }\n  /**\n   * Get the dav root of this object\n   */\n  get root() {\n    return this._data.root ? this._data.root.replace(/^(.+)\\/$/, \"$1\") : this.isDavRessource && I(this.source).split(this._knownDavService).pop() || null;\n  }\n  /**\n   * Get the absolute path of this object relative to the root\n   */\n  get path() {\n    if (this.root) {\n      let t = this.source;\n      this.isDavRessource && (t = t.split(this._knownDavService).pop());\n      const r = t.indexOf(this.root), s = this.root.replace(/\\/$/, \"\");\n      return t.slice(r + s.length) || \"/\";\n    }\n    return (this.dirname + \"/\" + this.basename).replace(/\\/\\//g, \"/\");\n  }\n  /**\n   * Get the node id if defined.\n   * Will look for the fileid in attributes if undefined.\n   */\n  get fileid() {\n    return this._data?.id || this.attributes?.fileid;\n  }\n  /**\n   * Get the node status.\n   */\n  get status() {\n    return this._data?.status;\n  }\n  /**\n   * Set the node status.\n   */\n  set status(t) {\n    this._data.status = t;\n  }\n  /**\n   * Move the node to a new destination\n   *\n   * @param {string} destination the new source.\n   * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n   */\n  move(t) {\n    X({ ...this._data, source: t }, this._knownDavService), this._data.source = t, this.updateMtime();\n  }\n  /**\n   * Rename the node\n   * This aliases the move method for easier usage\n   *\n   * @param basename The new name of the node\n   */\n  rename(t) {\n    if (t.includes(\"/\"))\n      throw new Error(\"Invalid basename\");\n    this.move(I(this.source) + \"/\" + t);\n  }\n  /**\n   * Update the mtime if exists.\n   */\n  updateMtime() {\n    this._data.mtime && (this._data.mtime = /* @__PURE__ */ new Date());\n  }\n}\n/**\n * @copyright Copyright (c) 2022 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 */\nclass ye extends D {\n  get type() {\n    return R.File;\n  }\n}\n/**\n * @copyright Copyright (c) 2022 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 */\nclass _e extends D {\n  constructor(t) {\n    super({\n      ...t,\n      mime: \"httpd/unix-directory\"\n    });\n  }\n  get type() {\n    return R.Folder;\n  }\n  get extension() {\n    return null;\n  }\n  get mime() {\n    return \"httpd/unix-directory\";\n  }\n}\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\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 */\nconst ee = `/files/${A()?.uid}`, te = pe(\"dav\"), ur = function(e = te, t = {}) {\n  const r = ge(e, { headers: t });\n  function s(i) {\n    r.setHeaders({\n      ...t,\n      // Add this so the server knows it is an request from the browser\n      \"X-Requested-With\": \"XMLHttpRequest\",\n      // Inject user auth\n      requesttoken: i ?? \"\"\n    });\n  }\n  return ue(s), s(de()), we().patch(\"fetch\", (i, d) => {\n    const u = d.headers;\n    return u?.method && (d.method = u.method, delete u.method), fetch(i, d);\n  }), r;\n}, dr = async (e, t = \"/\", r = ee) => (await e.getDirectoryContents(`${r}${t}`, {\n  details: !0,\n  data: Ee(),\n  headers: {\n    // see davGetClient for patched webdav client\n    method: \"REPORT\"\n  },\n  includeSelf: !0\n})).data.filter((n) => n.filename !== t).map((n) => ve(n, r)), ve = function(e, t = ee, r = te) {\n  const s = e.props, n = be(s?.permissions), i = s?.[\"owner-id\"] || A()?.uid, d = {\n    id: s?.fileid || 0,\n    source: `${r}${e.filename}`,\n    mtime: new Date(Date.parse(e.lastmod)),\n    mime: e.mime,\n    size: s?.size || Number.parseInt(s.getcontentlength || \"0\"),\n    permissions: n,\n    owner: i,\n    root: t,\n    attributes: {\n      ...e,\n      ...s,\n      hasPreview: s?.[\"has-preview\"]\n    }\n  };\n  return delete d.attributes?.props, e.type === \"file\" ? new ye(d) : new _e(d);\n};\n/**\n * @copyright Copyright (c) 2022 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 */\nclass Te {\n  _views = [];\n  _currentView = null;\n  register(t) {\n    if (this._views.find((r) => r.id === t.id))\n      throw new Error(`View id ${t.id} is already registered`);\n    this._views.push(t);\n  }\n  remove(t) {\n    const r = this._views.findIndex((s) => s.id === t);\n    r !== -1 && this._views.splice(r, 1);\n  }\n  get views() {\n    return this._views;\n  }\n  setActive(t) {\n    this._currentView = t;\n  }\n  get active() {\n    return this._currentView;\n  }\n}\nconst ar = function() {\n  return typeof window._nc_navigation > \"u\" && (window._nc_navigation = new Te(), m.debug(\"Navigation service initialized\")), window._nc_navigation;\n};\n/**\n * @copyright Copyright (c) 2022 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 */\nclass Ie {\n  _column;\n  constructor(t) {\n    Ae(t), this._column = t;\n  }\n  get id() {\n    return this._column.id;\n  }\n  get title() {\n    return this._column.title;\n  }\n  get render() {\n    return this._column.render;\n  }\n  get sort() {\n    return this._column.sort;\n  }\n  get summary() {\n    return this._column.summary;\n  }\n}\nconst Ae = function(e) {\n  if (!e.id || typeof e.id != \"string\")\n    throw new Error(\"A column id is required\");\n  if (!e.title || typeof e.title != \"string\")\n    throw new Error(\"A column title is required\");\n  if (!e.render || typeof e.render != \"function\")\n    throw new Error(\"A render function is required\");\n  if (e.sort && typeof e.sort != \"function\")\n    throw new Error(\"Column sortFunction must be a function\");\n  if (e.summary && typeof e.summary != \"function\")\n    throw new Error(\"Column summary must be a function\");\n  return !0;\n};\nvar S = {}, O = {};\n(function(e) {\n  const t = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\", r = t + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\", s = \"[\" + t + \"][\" + r + \"]*\", n = new RegExp(\"^\" + s + \"$\"), i = function(u, o) {\n    const a = [];\n    let l = o.exec(u);\n    for (; l; ) {\n      const f = [];\n      f.startIndex = o.lastIndex - l[0].length;\n      const c = l.length;\n      for (let g = 0; g < c; g++)\n        f.push(l[g]);\n      a.push(f), l = o.exec(u);\n    }\n    return a;\n  }, d = function(u) {\n    const o = n.exec(u);\n    return !(o === null || typeof o > \"u\");\n  };\n  e.isExist = function(u) {\n    return typeof u < \"u\";\n  }, e.isEmptyObject = function(u) {\n    return Object.keys(u).length === 0;\n  }, e.merge = function(u, o, a) {\n    if (o) {\n      const l = Object.keys(o), f = l.length;\n      for (let c = 0; c < f; c++)\n        a === \"strict\" ? u[l[c]] = [o[l[c]]] : u[l[c]] = o[l[c]];\n    }\n  }, e.getValue = function(u) {\n    return e.isExist(u) ? u : \"\";\n  }, e.isName = d, e.getAllMatches = i, e.nameRegexp = s;\n})(O);\nconst M = O, Oe = {\n  allowBooleanAttributes: !1,\n  //A tag can have attributes without any value\n  unpairedTags: []\n};\nS.validate = function(e, t) {\n  t = Object.assign({}, Oe, t);\n  const r = [];\n  let s = !1, n = !1;\n  e[0] === \"\\uFEFF\" && (e = e.substr(1));\n  for (let i = 0; i < e.length; i++)\n    if (e[i] === \"<\" && e[i + 1] === \"?\") {\n      if (i += 2, i = G(e, i), i.err)\n        return i;\n    } else if (e[i] === \"<\") {\n      let d = i;\n      if (i++, e[i] === \"!\") {\n        i = z(e, i);\n        continue;\n      } else {\n        let u = !1;\n        e[i] === \"/\" && (u = !0, i++);\n        let o = \"\";\n        for (; i < e.length && e[i] !== \">\" && e[i] !== \" \" && e[i] !== \"\t\" && e[i] !== `\n` && e[i] !== \"\\r\"; i++)\n          o += e[i];\n        if (o = o.trim(), o[o.length - 1] === \"/\" && (o = o.substring(0, o.length - 1), i--), !Re(o)) {\n          let f;\n          return o.trim().length === 0 ? f = \"Invalid space after '<'.\" : f = \"Tag '\" + o + \"' is an invalid name.\", p(\"InvalidTag\", f, w(e, i));\n        }\n        const a = xe(e, i);\n        if (a === !1)\n          return p(\"InvalidAttr\", \"Attributes for '\" + o + \"' have open quote.\", w(e, i));\n        let l = a.value;\n        if (i = a.index, l[l.length - 1] === \"/\") {\n          const f = i - l.length;\n          l = l.substring(0, l.length - 1);\n          const c = H(l, t);\n          if (c === !0)\n            s = !0;\n          else\n            return p(c.err.code, c.err.msg, w(e, f + c.err.line));\n        } else if (u)\n          if (a.tagClosed) {\n            if (l.trim().length > 0)\n              return p(\"InvalidTag\", \"Closing tag '\" + o + \"' can't have attributes or invalid starting.\", w(e, d));\n            {\n              const f = r.pop();\n              if (o !== f.tagName) {\n                let c = w(e, f.tagStartPos);\n                return p(\n                  \"InvalidTag\",\n                  \"Expected closing tag '\" + f.tagName + \"' (opened in line \" + c.line + \", col \" + c.col + \") instead of closing tag '\" + o + \"'.\",\n                  w(e, d)\n                );\n              }\n              r.length == 0 && (n = !0);\n            }\n          } else\n            return p(\"InvalidTag\", \"Closing tag '\" + o + \"' doesn't have proper closing.\", w(e, i));\n        else {\n          const f = H(l, t);\n          if (f !== !0)\n            return p(f.err.code, f.err.msg, w(e, i - l.length + f.err.line));\n          if (n === !0)\n            return p(\"InvalidXml\", \"Multiple possible root nodes found.\", w(e, i));\n          t.unpairedTags.indexOf(o) !== -1 || r.push({ tagName: o, tagStartPos: d }), s = !0;\n        }\n        for (i++; i < e.length; i++)\n          if (e[i] === \"<\")\n            if (e[i + 1] === \"!\") {\n              i++, i = z(e, i);\n              continue;\n            } else if (e[i + 1] === \"?\") {\n              if (i = G(e, ++i), i.err)\n                return i;\n            } else\n              break;\n          else if (e[i] === \"&\") {\n            const f = Ve(e, i);\n            if (f == -1)\n              return p(\"InvalidChar\", \"char '&' is not expected.\", w(e, i));\n            i = f;\n          } else if (n === !0 && !U(e[i]))\n            return p(\"InvalidXml\", \"Extra text at the end\", w(e, i));\n        e[i] === \"<\" && i--;\n      }\n    } else {\n      if (U(e[i]))\n        continue;\n      return p(\"InvalidChar\", \"char '\" + e[i] + \"' is not expected.\", w(e, i));\n    }\n  if (s) {\n    if (r.length == 1)\n      return p(\"InvalidTag\", \"Unclosed tag '\" + r[0].tagName + \"'.\", w(e, r[0].tagStartPos));\n    if (r.length > 0)\n      return p(\"InvalidXml\", \"Invalid '\" + JSON.stringify(r.map((i) => i.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n  } else\n    return p(\"InvalidXml\", \"Start tag expected.\", 1);\n  return !0;\n};\nfunction U(e) {\n  return e === \" \" || e === \"\t\" || e === `\n` || e === \"\\r\";\n}\nfunction G(e, t) {\n  const r = t;\n  for (; t < e.length; t++)\n    if (e[t] == \"?\" || e[t] == \" \") {\n      const s = e.substr(r, t - r);\n      if (t > 5 && s === \"xml\")\n        return p(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", w(e, t));\n      if (e[t] == \"?\" && e[t + 1] == \">\") {\n        t++;\n        break;\n      } else\n        continue;\n    }\n  return t;\n}\nfunction z(e, t) {\n  if (e.length > t + 5 && e[t + 1] === \"-\" && e[t + 2] === \"-\") {\n    for (t += 3; t < e.length; t++)\n      if (e[t] === \"-\" && e[t + 1] === \"-\" && e[t + 2] === \">\") {\n        t += 2;\n        break;\n      }\n  } else if (e.length > t + 8 && e[t + 1] === \"D\" && e[t + 2] === \"O\" && e[t + 3] === \"C\" && e[t + 4] === \"T\" && e[t + 5] === \"Y\" && e[t + 6] === \"P\" && e[t + 7] === \"E\") {\n    let r = 1;\n    for (t += 8; t < e.length; t++)\n      if (e[t] === \"<\")\n        r++;\n      else if (e[t] === \">\" && (r--, r === 0))\n        break;\n  } else if (e.length > t + 9 && e[t + 1] === \"[\" && e[t + 2] === \"C\" && e[t + 3] === \"D\" && e[t + 4] === \"A\" && e[t + 5] === \"T\" && e[t + 6] === \"A\" && e[t + 7] === \"[\") {\n    for (t += 8; t < e.length; t++)\n      if (e[t] === \"]\" && e[t + 1] === \"]\" && e[t + 2] === \">\") {\n        t += 2;\n        break;\n      }\n  }\n  return t;\n}\nconst Ce = '\"', Pe = \"'\";\nfunction xe(e, t) {\n  let r = \"\", s = \"\", n = !1;\n  for (; t < e.length; t++) {\n    if (e[t] === Ce || e[t] === Pe)\n      s === \"\" ? s = e[t] : s !== e[t] || (s = \"\");\n    else if (e[t] === \">\" && s === \"\") {\n      n = !0;\n      break;\n    }\n    r += e[t];\n  }\n  return s !== \"\" ? !1 : {\n    value: r,\n    index: t,\n    tagClosed: n\n  };\n}\nconst $e = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\nfunction H(e, t) {\n  const r = M.getAllMatches(e, $e), s = {};\n  for (let n = 0; n < r.length; n++) {\n    if (r[n][1].length === 0)\n      return p(\"InvalidAttr\", \"Attribute '\" + r[n][2] + \"' has no space in starting.\", v(r[n]));\n    if (r[n][3] !== void 0 && r[n][4] === void 0)\n      return p(\"InvalidAttr\", \"Attribute '\" + r[n][2] + \"' is without value.\", v(r[n]));\n    if (r[n][3] === void 0 && !t.allowBooleanAttributes)\n      return p(\"InvalidAttr\", \"boolean attribute '\" + r[n][2] + \"' is not allowed.\", v(r[n]));\n    const i = r[n][2];\n    if (!Le(i))\n      return p(\"InvalidAttr\", \"Attribute '\" + i + \"' is an invalid name.\", v(r[n]));\n    if (!s.hasOwnProperty(i))\n      s[i] = 1;\n    else\n      return p(\"InvalidAttr\", \"Attribute '\" + i + \"' is repeated.\", v(r[n]));\n  }\n  return !0;\n}\nfunction Fe(e, t) {\n  let r = /\\d/;\n  for (e[t] === \"x\" && (t++, r = /[\\da-fA-F]/); t < e.length; t++) {\n    if (e[t] === \";\")\n      return t;\n    if (!e[t].match(r))\n      break;\n  }\n  return -1;\n}\nfunction Ve(e, t) {\n  if (t++, e[t] === \";\")\n    return -1;\n  if (e[t] === \"#\")\n    return t++, Fe(e, t);\n  let r = 0;\n  for (; t < e.length; t++, r++)\n    if (!(e[t].match(/\\w/) && r < 20)) {\n      if (e[t] === \";\")\n        break;\n      return -1;\n    }\n  return t;\n}\nfunction p(e, t, r) {\n  return {\n    err: {\n      code: e,\n      msg: t,\n      line: r.line || r,\n      col: r.col\n    }\n  };\n}\nfunction Le(e) {\n  return M.isName(e);\n}\nfunction Re(e) {\n  return M.isName(e);\n}\nfunction w(e, t) {\n  const r = e.substring(0, t).split(/\\r?\\n/);\n  return {\n    line: r.length,\n    // column number is last line's length + 1, because column numbering starts at 1:\n    col: r[r.length - 1].length + 1\n  };\n}\nfunction v(e) {\n  return e.startIndex + e[1].length;\n}\nvar k = {};\nconst re = {\n  preserveOrder: !1,\n  attributeNamePrefix: \"@_\",\n  attributesGroupName: !1,\n  textNodeName: \"#text\",\n  ignoreAttributes: !0,\n  removeNSPrefix: !1,\n  // remove NS from tag name or attribute name if true\n  allowBooleanAttributes: !1,\n  //a tag can have attributes without any value\n  //ignoreRootElement : false,\n  parseTagValue: !0,\n  parseAttributeValue: !1,\n  trimValues: !0,\n  //Trim string values of tag and attributes\n  cdataPropName: !1,\n  numberParseOptions: {\n    hex: !0,\n    leadingZeros: !0,\n    eNotation: !0\n  },\n  tagValueProcessor: function(e, t) {\n    return t;\n  },\n  attributeValueProcessor: function(e, t) {\n    return t;\n  },\n  stopNodes: [],\n  //nested tags will not be parsed even for errors\n  alwaysCreateTextNode: !1,\n  isArray: () => !1,\n  commentPropName: !1,\n  unpairedTags: [],\n  processEntities: !0,\n  htmlEntities: !1,\n  ignoreDeclaration: !1,\n  ignorePiTags: !1,\n  transformTagName: !1,\n  transformAttributeName: !1,\n  updateTag: function(e, t, r) {\n    return e;\n  }\n  // skipEmptyListItem: false\n}, Se = function(e) {\n  return Object.assign({}, re, e);\n};\nk.buildOptions = Se;\nk.defaultOptions = re;\nclass Me {\n  constructor(t) {\n    this.tagname = t, this.child = [], this[\":@\"] = {};\n  }\n  add(t, r) {\n    t === \"__proto__\" && (t = \"#__proto__\"), this.child.push({ [t]: r });\n  }\n  addChild(t) {\n    t.tagname === \"__proto__\" && (t.tagname = \"#__proto__\"), t[\":@\"] && Object.keys(t[\":@\"]).length > 0 ? this.child.push({ [t.tagname]: t.child, \":@\": t[\":@\"] }) : this.child.push({ [t.tagname]: t.child });\n  }\n}\nvar ke = Me;\nconst Be = O;\nfunction qe(e, t) {\n  const r = {};\n  if (e[t + 3] === \"O\" && e[t + 4] === \"C\" && e[t + 5] === \"T\" && e[t + 6] === \"Y\" && e[t + 7] === \"P\" && e[t + 8] === \"E\") {\n    t = t + 9;\n    let s = 1, n = !1, i = !1, d = \"\";\n    for (; t < e.length; t++)\n      if (e[t] === \"<\" && !i) {\n        if (n && Ge(e, t))\n          t += 7, [entityName, val, t] = Xe(e, t + 1), val.indexOf(\"&\") === -1 && (r[We(entityName)] = {\n            regx: RegExp(`&${entityName};`, \"g\"),\n            val\n          });\n        else if (n && ze(e, t))\n          t += 8;\n        else if (n && He(e, t))\n          t += 8;\n        else if (n && Ke(e, t))\n          t += 9;\n        else if (Ue)\n          i = !0;\n        else\n          throw new Error(\"Invalid DOCTYPE\");\n        s++, d = \"\";\n      } else if (e[t] === \">\") {\n        if (i ? e[t - 1] === \"-\" && e[t - 2] === \"-\" && (i = !1, s--) : s--, s === 0)\n          break;\n      } else\n        e[t] === \"[\" ? n = !0 : d += e[t];\n    if (s !== 0)\n      throw new Error(\"Unclosed DOCTYPE\");\n  } else\n    throw new Error(\"Invalid Tag instead of DOCTYPE\");\n  return { entities: r, i: t };\n}\nfunction Xe(e, t) {\n  let r = \"\";\n  for (; t < e.length && e[t] !== \"'\" && e[t] !== '\"'; t++)\n    r += e[t];\n  if (r = r.trim(), r.indexOf(\" \") !== -1)\n    throw new Error(\"External entites are not supported\");\n  const s = e[t++];\n  let n = \"\";\n  for (; t < e.length && e[t] !== s; t++)\n    n += e[t];\n  return [r, n, t];\n}\nfunction Ue(e, t) {\n  return e[t + 1] === \"!\" && e[t + 2] === \"-\" && e[t + 3] === \"-\";\n}\nfunction Ge(e, t) {\n  return e[t + 1] === \"!\" && e[t + 2] === \"E\" && e[t + 3] === \"N\" && e[t + 4] === \"T\" && e[t + 5] === \"I\" && e[t + 6] === \"T\" && e[t + 7] === \"Y\";\n}\nfunction ze(e, t) {\n  return e[t + 1] === \"!\" && e[t + 2] === \"E\" && e[t + 3] === \"L\" && e[t + 4] === \"E\" && e[t + 5] === \"M\" && e[t + 6] === \"E\" && e[t + 7] === \"N\" && e[t + 8] === \"T\";\n}\nfunction He(e, t) {\n  return e[t + 1] === \"!\" && e[t + 2] === \"A\" && e[t + 3] === \"T\" && e[t + 4] === \"T\" && e[t + 5] === \"L\" && e[t + 6] === \"I\" && e[t + 7] === \"S\" && e[t + 8] === \"T\";\n}\nfunction Ke(e, t) {\n  return e[t + 1] === \"!\" && e[t + 2] === \"N\" && e[t + 3] === \"O\" && e[t + 4] === \"T\" && e[t + 5] === \"A\" && e[t + 6] === \"T\" && e[t + 7] === \"I\" && e[t + 8] === \"O\" && e[t + 9] === \"N\";\n}\nfunction We(e) {\n  if (Be.isName(e))\n    return e;\n  throw new Error(`Invalid entity name ${e}`);\n}\nvar Ze = qe;\nconst je = /^[-+]?0x[a-fA-F0-9]+$/, Ye = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n!Number.parseInt && window.parseInt && (Number.parseInt = window.parseInt);\n!Number.parseFloat && window.parseFloat && (Number.parseFloat = window.parseFloat);\nconst Je = {\n  hex: !0,\n  leadingZeros: !0,\n  decimalPoint: \".\",\n  eNotation: !0\n  //skipLike: /regex/\n};\nfunction Qe(e, t = {}) {\n  if (t = Object.assign({}, Je, t), !e || typeof e != \"string\")\n    return e;\n  let r = e.trim();\n  if (t.skipLike !== void 0 && t.skipLike.test(r))\n    return e;\n  if (t.hex && je.test(r))\n    return Number.parseInt(r, 16);\n  {\n    const s = Ye.exec(r);\n    if (s) {\n      const n = s[1], i = s[2];\n      let d = De(s[3]);\n      const u = s[4] || s[6];\n      if (!t.leadingZeros && i.length > 0 && n && r[2] !== \".\")\n        return e;\n      if (!t.leadingZeros && i.length > 0 && !n && r[1] !== \".\")\n        return e;\n      {\n        const o = Number(r), a = \"\" + o;\n        return a.search(/[eE]/) !== -1 || u ? t.eNotation ? o : e : r.indexOf(\".\") !== -1 ? a === \"0\" && d === \"\" || a === d || n && a === \"-\" + d ? o : e : i ? d === a || n + d === a ? o : e : r === a || r === n + a ? o : e;\n      }\n    } else\n      return e;\n  }\n}\nfunction De(e) {\n  return e && e.indexOf(\".\") !== -1 && (e = e.replace(/0+$/, \"\"), e === \".\" ? e = \"0\" : e[0] === \".\" ? e = \"0\" + e : e[e.length - 1] === \".\" && (e = e.substr(0, e.length - 1))), e;\n}\nvar et = Qe;\nconst B = O, T = ke, tt = Ze, rt = et;\n\"<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)\".replace(/NAME/g, B.nameRegexp);\nlet nt = class {\n  constructor(t) {\n    this.options = t, this.currentNode = null, this.tagsNodeStack = [], this.docTypeEntities = {}, this.lastEntities = {\n      apos: { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n      gt: { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n      lt: { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n      quot: { regex: /&(quot|#34|#x22);/g, val: '\"' }\n    }, this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" }, this.htmlEntities = {\n      space: { regex: /&(nbsp|#160);/g, val: \" \" },\n      // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n      // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n      // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n      // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n      // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n      cent: { regex: /&(cent|#162);/g, val: \"¢\" },\n      pound: { regex: /&(pound|#163);/g, val: \"£\" },\n      yen: { regex: /&(yen|#165);/g, val: \"¥\" },\n      euro: { regex: /&(euro|#8364);/g, val: \"€\" },\n      copyright: { regex: /&(copy|#169);/g, val: \"©\" },\n      reg: { regex: /&(reg|#174);/g, val: \"®\" },\n      inr: { regex: /&(inr|#8377);/g, val: \"₹\" }\n    }, this.addExternalEntities = it, this.parseXml = at, this.parseTextData = st, this.resolveNameSpace = ot, this.buildAttributesMap = dt, this.isItStopNode = ht, this.replaceEntitiesValue = ft, this.readStopNodeData = gt, this.saveTextToParentTag = ct, this.addChild = lt;\n  }\n};\nfunction it(e) {\n  const t = Object.keys(e);\n  for (let r = 0; r < t.length; r++) {\n    const s = t[r];\n    this.lastEntities[s] = {\n      regex: new RegExp(\"&\" + s + \";\", \"g\"),\n      val: e[s]\n    };\n  }\n}\nfunction st(e, t, r, s, n, i, d) {\n  if (e !== void 0 && (this.options.trimValues && !s && (e = e.trim()), e.length > 0)) {\n    d || (e = this.replaceEntitiesValue(e));\n    const u = this.options.tagValueProcessor(t, e, r, n, i);\n    return u == null ? e : typeof u != typeof e || u !== e ? u : this.options.trimValues ? $(e, this.options.parseTagValue, this.options.numberParseOptions) : e.trim() === e ? $(e, this.options.parseTagValue, this.options.numberParseOptions) : e;\n  }\n}\nfunction ot(e) {\n  if (this.options.removeNSPrefix) {\n    const t = e.split(\":\"), r = e.charAt(0) === \"/\" ? \"/\" : \"\";\n    if (t[0] === \"xmlns\")\n      return \"\";\n    t.length === 2 && (e = r + t[1]);\n  }\n  return e;\n}\nconst ut = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\nfunction dt(e, t, r) {\n  if (!this.options.ignoreAttributes && typeof e == \"string\") {\n    const s = B.getAllMatches(e, ut), n = s.length, i = {};\n    for (let d = 0; d < n; d++) {\n      const u = this.resolveNameSpace(s[d][1]);\n      let o = s[d][4], a = this.options.attributeNamePrefix + u;\n      if (u.length)\n        if (this.options.transformAttributeName && (a = this.options.transformAttributeName(a)), a === \"__proto__\" && (a = \"#__proto__\"), o !== void 0) {\n          this.options.trimValues && (o = o.trim()), o = this.replaceEntitiesValue(o);\n          const l = this.options.attributeValueProcessor(u, o, t);\n          l == null ? i[a] = o : typeof l != typeof o || l !== o ? i[a] = l : i[a] = $(\n            o,\n            this.options.parseAttributeValue,\n            this.options.numberParseOptions\n          );\n        } else\n          this.options.allowBooleanAttributes && (i[a] = !0);\n    }\n    if (!Object.keys(i).length)\n      return;\n    if (this.options.attributesGroupName) {\n      const d = {};\n      return d[this.options.attributesGroupName] = i, d;\n    }\n    return i;\n  }\n}\nconst at = function(e) {\n  e = e.replace(/\\r\\n?/g, `\n`);\n  const t = new T(\"!xml\");\n  let r = t, s = \"\", n = \"\";\n  for (let i = 0; i < e.length; i++)\n    if (e[i] === \"<\")\n      if (e[i + 1] === \"/\") {\n        const u = y(e, \">\", i, \"Closing Tag is not closed.\");\n        let o = e.substring(i + 2, u).trim();\n        if (this.options.removeNSPrefix) {\n          const f = o.indexOf(\":\");\n          f !== -1 && (o = o.substr(f + 1));\n        }\n        this.options.transformTagName && (o = this.options.transformTagName(o)), r && (s = this.saveTextToParentTag(s, r, n));\n        const a = n.substring(n.lastIndexOf(\".\") + 1);\n        if (o && this.options.unpairedTags.indexOf(o) !== -1)\n          throw new Error(`Unpaired tag can not be used as closing tag: </${o}>`);\n        let l = 0;\n        a && this.options.unpairedTags.indexOf(a) !== -1 ? (l = n.lastIndexOf(\".\", n.lastIndexOf(\".\") - 1), this.tagsNodeStack.pop()) : l = n.lastIndexOf(\".\"), n = n.substring(0, l), r = this.tagsNodeStack.pop(), s = \"\", i = u;\n      } else if (e[i + 1] === \"?\") {\n        let u = x(e, i, !1, \"?>\");\n        if (!u)\n          throw new Error(\"Pi Tag is not closed.\");\n        if (s = this.saveTextToParentTag(s, r, n), !(this.options.ignoreDeclaration && u.tagName === \"?xml\" || this.options.ignorePiTags)) {\n          const o = new T(u.tagName);\n          o.add(this.options.textNodeName, \"\"), u.tagName !== u.tagExp && u.attrExpPresent && (o[\":@\"] = this.buildAttributesMap(u.tagExp, n, u.tagName)), this.addChild(r, o, n);\n        }\n        i = u.closeIndex + 1;\n      } else if (e.substr(i + 1, 3) === \"!--\") {\n        const u = y(e, \"-->\", i + 4, \"Comment is not closed.\");\n        if (this.options.commentPropName) {\n          const o = e.substring(i + 4, u - 2);\n          s = this.saveTextToParentTag(s, r, n), r.add(this.options.commentPropName, [{ [this.options.textNodeName]: o }]);\n        }\n        i = u;\n      } else if (e.substr(i + 1, 2) === \"!D\") {\n        const u = tt(e, i);\n        this.docTypeEntities = u.entities, i = u.i;\n      } else if (e.substr(i + 1, 2) === \"![\") {\n        const u = y(e, \"]]>\", i, \"CDATA is not closed.\") - 2, o = e.substring(i + 9, u);\n        if (s = this.saveTextToParentTag(s, r, n), this.options.cdataPropName)\n          r.add(this.options.cdataPropName, [{ [this.options.textNodeName]: o }]);\n        else {\n          let a = this.parseTextData(o, r.tagname, n, !0, !1, !0);\n          a == null && (a = \"\"), r.add(this.options.textNodeName, a);\n        }\n        i = u + 2;\n      } else {\n        let u = x(e, i, this.options.removeNSPrefix), o = u.tagName;\n        const a = u.rawTagName;\n        let l = u.tagExp, f = u.attrExpPresent, c = u.closeIndex;\n        this.options.transformTagName && (o = this.options.transformTagName(o)), r && s && r.tagname !== \"!xml\" && (s = this.saveTextToParentTag(s, r, n, !1));\n        const g = r;\n        if (g && this.options.unpairedTags.indexOf(g.tagname) !== -1 && (r = this.tagsNodeStack.pop(), n = n.substring(0, n.lastIndexOf(\".\"))), o !== t.tagname && (n += n ? \".\" + o : o), this.isItStopNode(this.options.stopNodes, n, o)) {\n          let h = \"\";\n          if (l.length > 0 && l.lastIndexOf(\"/\") === l.length - 1)\n            i = u.closeIndex;\n          else if (this.options.unpairedTags.indexOf(o) !== -1)\n            i = u.closeIndex;\n          else {\n            const E = this.readStopNodeData(e, a, c + 1);\n            if (!E)\n              throw new Error(`Unexpected end of ${a}`);\n            i = E.i, h = E.tagContent;\n          }\n          const _ = new T(o);\n          o !== l && f && (_[\":@\"] = this.buildAttributesMap(l, n, o)), h && (h = this.parseTextData(h, o, n, !0, f, !0, !0)), n = n.substr(0, n.lastIndexOf(\".\")), _.add(this.options.textNodeName, h), this.addChild(r, _, n);\n        } else {\n          if (l.length > 0 && l.lastIndexOf(\"/\") === l.length - 1) {\n            o[o.length - 1] === \"/\" ? (o = o.substr(0, o.length - 1), n = n.substr(0, n.length - 1), l = o) : l = l.substr(0, l.length - 1), this.options.transformTagName && (o = this.options.transformTagName(o));\n            const h = new T(o);\n            o !== l && f && (h[\":@\"] = this.buildAttributesMap(l, n, o)), this.addChild(r, h, n), n = n.substr(0, n.lastIndexOf(\".\"));\n          } else {\n            const h = new T(o);\n            this.tagsNodeStack.push(r), o !== l && f && (h[\":@\"] = this.buildAttributesMap(l, n, o)), this.addChild(r, h, n), r = h;\n          }\n          s = \"\", i = c;\n        }\n      }\n    else\n      s += e[i];\n  return t.child;\n};\nfunction lt(e, t, r) {\n  const s = this.options.updateTag(t.tagname, r, t[\":@\"]);\n  s === !1 || (typeof s == \"string\" && (t.tagname = s), e.addChild(t));\n}\nconst ft = function(e) {\n  if (this.options.processEntities) {\n    for (let t in this.docTypeEntities) {\n      const r = this.docTypeEntities[t];\n      e = e.replace(r.regx, r.val);\n    }\n    for (let t in this.lastEntities) {\n      const r = this.lastEntities[t];\n      e = e.replace(r.regex, r.val);\n    }\n    if (this.options.htmlEntities)\n      for (let t in this.htmlEntities) {\n        const r = this.htmlEntities[t];\n        e = e.replace(r.regex, r.val);\n      }\n    e = e.replace(this.ampEntity.regex, this.ampEntity.val);\n  }\n  return e;\n};\nfunction ct(e, t, r, s) {\n  return e && (s === void 0 && (s = Object.keys(t.child).length === 0), e = this.parseTextData(\n    e,\n    t.tagname,\n    r,\n    !1,\n    t[\":@\"] ? Object.keys(t[\":@\"]).length !== 0 : !1,\n    s\n  ), e !== void 0 && e !== \"\" && t.add(this.options.textNodeName, e), e = \"\"), e;\n}\nfunction ht(e, t, r) {\n  const s = \"*.\" + r;\n  for (const n in e) {\n    const i = e[n];\n    if (s === i || t === i)\n      return !0;\n  }\n  return !1;\n}\nfunction pt(e, t, r = \">\") {\n  let s, n = \"\";\n  for (let i = t; i < e.length; i++) {\n    let d = e[i];\n    if (s)\n      d === s && (s = \"\");\n    else if (d === '\"' || d === \"'\")\n      s = d;\n    else if (d === r[0])\n      if (r[1]) {\n        if (e[i + 1] === r[1])\n          return {\n            data: n,\n            index: i\n          };\n      } else\n        return {\n          data: n,\n          index: i\n        };\n    else\n      d === \"\t\" && (d = \" \");\n    n += d;\n  }\n}\nfunction y(e, t, r, s) {\n  const n = e.indexOf(t, r);\n  if (n === -1)\n    throw new Error(s);\n  return n + t.length - 1;\n}\nfunction x(e, t, r, s = \">\") {\n  const n = pt(e, t + 1, s);\n  if (!n)\n    return;\n  let i = n.data;\n  const d = n.index, u = i.search(/\\s/);\n  let o = i, a = !0;\n  u !== -1 && (o = i.substr(0, u).replace(/\\s\\s*$/, \"\"), i = i.substr(u + 1));\n  const l = o;\n  if (r) {\n    const f = o.indexOf(\":\");\n    f !== -1 && (o = o.substr(f + 1), a = o !== n.data.substr(f + 1));\n  }\n  return {\n    tagName: o,\n    tagExp: i,\n    closeIndex: d,\n    attrExpPresent: a,\n    rawTagName: l\n  };\n}\nfunction gt(e, t, r) {\n  const s = r;\n  let n = 1;\n  for (; r < e.length; r++)\n    if (e[r] === \"<\")\n      if (e[r + 1] === \"/\") {\n        const i = y(e, \">\", r, `${t} is not closed`);\n        if (e.substring(r + 2, i).trim() === t && (n--, n === 0))\n          return {\n            tagContent: e.substring(s, r),\n            i\n          };\n        r = i;\n      } else if (e[r + 1] === \"?\")\n        r = y(e, \"?>\", r + 1, \"StopNode is not closed.\");\n      else if (e.substr(r + 1, 3) === \"!--\")\n        r = y(e, \"-->\", r + 3, \"StopNode is not closed.\");\n      else if (e.substr(r + 1, 2) === \"![\")\n        r = y(e, \"]]>\", r, \"StopNode is not closed.\") - 2;\n      else {\n        const i = x(e, r, \">\");\n        i && ((i && i.tagName) === t && i.tagExp[i.tagExp.length - 1] !== \"/\" && n++, r = i.closeIndex);\n      }\n}\nfunction $(e, t, r) {\n  if (t && typeof e == \"string\") {\n    const s = e.trim();\n    return s === \"true\" ? !0 : s === \"false\" ? !1 : rt(e, r);\n  } else\n    return B.isExist(e) ? e : \"\";\n}\nvar wt = nt, ne = {};\nfunction mt(e, t) {\n  return ie(e, t);\n}\nfunction ie(e, t, r) {\n  let s;\n  const n = {};\n  for (let i = 0; i < e.length; i++) {\n    const d = e[i], u = Nt(d);\n    let o = \"\";\n    if (r === void 0 ? o = u : o = r + \".\" + u, u === t.textNodeName)\n      s === void 0 ? s = d[u] : s += \"\" + d[u];\n    else {\n      if (u === void 0)\n        continue;\n      if (d[u]) {\n        let a = ie(d[u], t, o);\n        const l = bt(a, t);\n        d[\":@\"] ? Et(a, d[\":@\"], o, t) : Object.keys(a).length === 1 && a[t.textNodeName] !== void 0 && !t.alwaysCreateTextNode ? a = a[t.textNodeName] : Object.keys(a).length === 0 && (t.alwaysCreateTextNode ? a[t.textNodeName] = \"\" : a = \"\"), n[u] !== void 0 && n.hasOwnProperty(u) ? (Array.isArray(n[u]) || (n[u] = [n[u]]), n[u].push(a)) : t.isArray(u, o, l) ? n[u] = [a] : n[u] = a;\n      }\n    }\n  }\n  return typeof s == \"string\" ? s.length > 0 && (n[t.textNodeName] = s) : s !== void 0 && (n[t.textNodeName] = s), n;\n}\nfunction Nt(e) {\n  const t = Object.keys(e);\n  for (let r = 0; r < t.length; r++) {\n    const s = t[r];\n    if (s !== \":@\")\n      return s;\n  }\n}\nfunction Et(e, t, r, s) {\n  if (t) {\n    const n = Object.keys(t), i = n.length;\n    for (let d = 0; d < i; d++) {\n      const u = n[d];\n      s.isArray(u, r + \".\" + u, !0, !0) ? e[u] = [t[u]] : e[u] = t[u];\n    }\n  }\n}\nfunction bt(e, t) {\n  const { textNodeName: r } = t, s = Object.keys(e).length;\n  return !!(s === 0 || s === 1 && (e[r] || typeof e[r] == \"boolean\" || e[r] === 0));\n}\nne.prettify = mt;\nconst { buildOptions: yt } = k, _t = wt, { prettify: vt } = ne, Tt = S;\nlet It = class {\n  constructor(t) {\n    this.externalEntities = {}, this.options = yt(t);\n  }\n  /**\n   * Parse XML dats to JS object \n   * @param {string|Buffer} xmlData \n   * @param {boolean|Object} validationOption \n   */\n  parse(t, r) {\n    if (typeof t != \"string\")\n      if (t.toString)\n        t = t.toString();\n      else\n        throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n    if (r) {\n      r === !0 && (r = {});\n      const i = Tt.validate(t, r);\n      if (i !== !0)\n        throw Error(`${i.err.msg}:${i.err.line}:${i.err.col}`);\n    }\n    const s = new _t(this.options);\n    s.addExternalEntities(this.externalEntities);\n    const n = s.parseXml(t);\n    return this.options.preserveOrder || n === void 0 ? n : vt(n, this.options);\n  }\n  /**\n   * Add Entity which is not by default supported by this library\n   * @param {string} key \n   * @param {string} value \n   */\n  addEntity(t, r) {\n    if (r.indexOf(\"&\") !== -1)\n      throw new Error(\"Entity value can't have '&'\");\n    if (t.indexOf(\"&\") !== -1 || t.indexOf(\";\") !== -1)\n      throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'\");\n    if (r === \"&\")\n      throw new Error(\"An entity with value '&' is not permitted\");\n    this.externalEntities[t] = r;\n  }\n};\nvar At = It;\nconst Ot = `\n`;\nfunction Ct(e, t) {\n  let r = \"\";\n  return t.format && t.indentBy.length > 0 && (r = Ot), se(e, t, \"\", r);\n}\nfunction se(e, t, r, s) {\n  let n = \"\", i = !1;\n  for (let d = 0; d < e.length; d++) {\n    const u = e[d], o = Pt(u);\n    if (o === void 0)\n      continue;\n    let a = \"\";\n    if (r.length === 0 ? a = o : a = `${r}.${o}`, o === t.textNodeName) {\n      let h = u[o];\n      xt(a, t) || (h = t.tagValueProcessor(o, h), h = oe(h, t)), i && (n += s), n += h, i = !1;\n      continue;\n    } else if (o === t.cdataPropName) {\n      i && (n += s), n += `<![CDATA[${u[o][0][t.textNodeName]}]]>`, i = !1;\n      continue;\n    } else if (o === t.commentPropName) {\n      n += s + `<!--${u[o][0][t.textNodeName]}-->`, i = !0;\n      continue;\n    } else if (o[0] === \"?\") {\n      const h = K(u[\":@\"], t), _ = o === \"?xml\" ? \"\" : s;\n      let E = u[o][0][t.textNodeName];\n      E = E.length !== 0 ? \" \" + E : \"\", n += _ + `<${o}${E}${h}?>`, i = !0;\n      continue;\n    }\n    let l = s;\n    l !== \"\" && (l += t.indentBy);\n    const f = K(u[\":@\"], t), c = s + `<${o}${f}`, g = se(u[o], t, a, l);\n    t.unpairedTags.indexOf(o) !== -1 ? t.suppressUnpairedNode ? n += c + \">\" : n += c + \"/>\" : (!g || g.length === 0) && t.suppressEmptyNode ? n += c + \"/>\" : g && g.endsWith(\">\") ? n += c + `>${g}${s}</${o}>` : (n += c + \">\", g && s !== \"\" && (g.includes(\"/>\") || g.includes(\"</\")) ? n += s + t.indentBy + g + s : n += g, n += `</${o}>`), i = !0;\n  }\n  return n;\n}\nfunction Pt(e) {\n  const t = Object.keys(e);\n  for (let r = 0; r < t.length; r++) {\n    const s = t[r];\n    if (e.hasOwnProperty(s) && s !== \":@\")\n      return s;\n  }\n}\nfunction K(e, t) {\n  let r = \"\";\n  if (e && !t.ignoreAttributes)\n    for (let s in e) {\n      if (!e.hasOwnProperty(s))\n        continue;\n      let n = t.attributeValueProcessor(s, e[s]);\n      n = oe(n, t), n === !0 && t.suppressBooleanAttributes ? r += ` ${s.substr(t.attributeNamePrefix.length)}` : r += ` ${s.substr(t.attributeNamePrefix.length)}=\"${n}\"`;\n    }\n  return r;\n}\nfunction xt(e, t) {\n  e = e.substr(0, e.length - t.textNodeName.length - 1);\n  let r = e.substr(e.lastIndexOf(\".\") + 1);\n  for (let s in t.stopNodes)\n    if (t.stopNodes[s] === e || t.stopNodes[s] === \"*.\" + r)\n      return !0;\n  return !1;\n}\nfunction oe(e, t) {\n  if (e && e.length > 0 && t.processEntities)\n    for (let r = 0; r < t.entities.length; r++) {\n      const s = t.entities[r];\n      e = e.replace(s.regex, s.val);\n    }\n  return e;\n}\nvar $t = Ct;\nconst Ft = $t, Vt = {\n  attributeNamePrefix: \"@_\",\n  attributesGroupName: !1,\n  textNodeName: \"#text\",\n  ignoreAttributes: !0,\n  cdataPropName: !1,\n  format: !1,\n  indentBy: \"  \",\n  suppressEmptyNode: !1,\n  suppressUnpairedNode: !0,\n  suppressBooleanAttributes: !0,\n  tagValueProcessor: function(e, t) {\n    return t;\n  },\n  attributeValueProcessor: function(e, t) {\n    return t;\n  },\n  preserveOrder: !1,\n  commentPropName: !1,\n  unpairedTags: [],\n  entities: [\n    { regex: new RegExp(\"&\", \"g\"), val: \"&amp;\" },\n    //it must be on top\n    { regex: new RegExp(\">\", \"g\"), val: \"&gt;\" },\n    { regex: new RegExp(\"<\", \"g\"), val: \"&lt;\" },\n    { regex: new RegExp(\"'\", \"g\"), val: \"&apos;\" },\n    { regex: new RegExp('\"', \"g\"), val: \"&quot;\" }\n  ],\n  processEntities: !0,\n  stopNodes: [],\n  // transformTagName: false,\n  // transformAttributeName: false,\n  oneListGroup: !1\n};\nfunction b(e) {\n  this.options = Object.assign({}, Vt, e), this.options.ignoreAttributes || this.options.attributesGroupName ? this.isAttribute = function() {\n    return !1;\n  } : (this.attrPrefixLen = this.options.attributeNamePrefix.length, this.isAttribute = St), this.processTextOrObjNode = Lt, this.options.format ? (this.indentate = Rt, this.tagEndChar = `>\n`, this.newLine = `\n`) : (this.indentate = function() {\n    return \"\";\n  }, this.tagEndChar = \">\", this.newLine = \"\");\n}\nb.prototype.build = function(e) {\n  return this.options.preserveOrder ? Ft(e, this.options) : (Array.isArray(e) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1 && (e = {\n    [this.options.arrayNodeName]: e\n  }), this.j2x(e, 0).val);\n};\nb.prototype.j2x = function(e, t) {\n  let r = \"\", s = \"\";\n  for (let n in e)\n    if (Object.prototype.hasOwnProperty.call(e, n))\n      if (typeof e[n] > \"u\")\n        this.isAttribute(n) && (s += \"\");\n      else if (e[n] === null)\n        this.isAttribute(n) ? s += \"\" : n[0] === \"?\" ? s += this.indentate(t) + \"<\" + n + \"?\" + this.tagEndChar : s += this.indentate(t) + \"<\" + n + \"/\" + this.tagEndChar;\n      else if (e[n] instanceof Date)\n        s += this.buildTextValNode(e[n], n, \"\", t);\n      else if (typeof e[n] != \"object\") {\n        const i = this.isAttribute(n);\n        if (i)\n          r += this.buildAttrPairStr(i, \"\" + e[n]);\n        else if (n === this.options.textNodeName) {\n          let d = this.options.tagValueProcessor(n, \"\" + e[n]);\n          s += this.replaceEntitiesValue(d);\n        } else\n          s += this.buildTextValNode(e[n], n, \"\", t);\n      } else if (Array.isArray(e[n])) {\n        const i = e[n].length;\n        let d = \"\";\n        for (let u = 0; u < i; u++) {\n          const o = e[n][u];\n          typeof o > \"u\" || (o === null ? n[0] === \"?\" ? s += this.indentate(t) + \"<\" + n + \"?\" + this.tagEndChar : s += this.indentate(t) + \"<\" + n + \"/\" + this.tagEndChar : typeof o == \"object\" ? this.options.oneListGroup ? d += this.j2x(o, t + 1).val : d += this.processTextOrObjNode(o, n, t) : d += this.buildTextValNode(o, n, \"\", t));\n        }\n        this.options.oneListGroup && (d = this.buildObjectNode(d, n, \"\", t)), s += d;\n      } else if (this.options.attributesGroupName && n === this.options.attributesGroupName) {\n        const i = Object.keys(e[n]), d = i.length;\n        for (let u = 0; u < d; u++)\n          r += this.buildAttrPairStr(i[u], \"\" + e[n][i[u]]);\n      } else\n        s += this.processTextOrObjNode(e[n], n, t);\n  return { attrStr: r, val: s };\n};\nb.prototype.buildAttrPairStr = function(e, t) {\n  return t = this.options.attributeValueProcessor(e, \"\" + t), t = this.replaceEntitiesValue(t), this.options.suppressBooleanAttributes && t === \"true\" ? \" \" + e : \" \" + e + '=\"' + t + '\"';\n};\nfunction Lt(e, t, r) {\n  const s = this.j2x(e, r + 1);\n  return e[this.options.textNodeName] !== void 0 && Object.keys(e).length === 1 ? this.buildTextValNode(e[this.options.textNodeName], t, s.attrStr, r) : this.buildObjectNode(s.val, t, s.attrStr, r);\n}\nb.prototype.buildObjectNode = function(e, t, r, s) {\n  if (e === \"\")\n    return t[0] === \"?\" ? this.indentate(s) + \"<\" + t + r + \"?\" + this.tagEndChar : this.indentate(s) + \"<\" + t + r + this.closeTag(t) + this.tagEndChar;\n  {\n    let n = \"</\" + t + this.tagEndChar, i = \"\";\n    return t[0] === \"?\" && (i = \"?\", n = \"\"), (r || r === \"\") && e.indexOf(\"<\") === -1 ? this.indentate(s) + \"<\" + t + r + i + \">\" + e + n : this.options.commentPropName !== !1 && t === this.options.commentPropName && i.length === 0 ? this.indentate(s) + `<!--${e}-->` + this.newLine : this.indentate(s) + \"<\" + t + r + i + this.tagEndChar + e + this.indentate(s) + n;\n  }\n};\nb.prototype.closeTag = function(e) {\n  let t = \"\";\n  return this.options.unpairedTags.indexOf(e) !== -1 ? this.options.suppressUnpairedNode || (t = \"/\") : this.options.suppressEmptyNode ? t = \"/\" : t = `></${e}`, t;\n};\nb.prototype.buildTextValNode = function(e, t, r, s) {\n  if (this.options.cdataPropName !== !1 && t === this.options.cdataPropName)\n    return this.indentate(s) + `<![CDATA[${e}]]>` + this.newLine;\n  if (this.options.commentPropName !== !1 && t === this.options.commentPropName)\n    return this.indentate(s) + `<!--${e}-->` + this.newLine;\n  if (t[0] === \"?\")\n    return this.indentate(s) + \"<\" + t + r + \"?\" + this.tagEndChar;\n  {\n    let n = this.options.tagValueProcessor(t, e);\n    return n = this.replaceEntitiesValue(n), n === \"\" ? this.indentate(s) + \"<\" + t + r + this.closeTag(t) + this.tagEndChar : this.indentate(s) + \"<\" + t + r + \">\" + n + \"</\" + t + this.tagEndChar;\n  }\n};\nb.prototype.replaceEntitiesValue = function(e) {\n  if (e && e.length > 0 && this.options.processEntities)\n    for (let t = 0; t < this.options.entities.length; t++) {\n      const r = this.options.entities[t];\n      e = e.replace(r.regex, r.val);\n    }\n  return e;\n};\nfunction Rt(e) {\n  return this.options.indentBy.repeat(e);\n}\nfunction St(e) {\n  return e.startsWith(this.options.attributeNamePrefix) && e !== this.options.textNodeName ? e.substr(this.attrPrefixLen) : !1;\n}\nvar Mt = b;\nconst kt = S, Bt = At, qt = Mt;\nvar W = {\n  XMLParser: Bt,\n  XMLValidator: kt,\n  XMLBuilder: qt\n};\nfunction Xt(e) {\n  if (typeof e != \"string\")\n    throw new TypeError(`Expected a \\`string\\`, got \\`${typeof e}\\``);\n  if (e = e.trim(), e.length === 0 || W.XMLValidator.validate(e) !== !0)\n    return !1;\n  let t;\n  const r = new W.XMLParser();\n  try {\n    t = r.parse(e);\n  } catch {\n    return !1;\n  }\n  return !(!t || !(\"svg\" in t));\n}\n/**\n * @copyright Copyright (c) 2022 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 */\nclass cr {\n  _view;\n  constructor(t) {\n    Ut(t), this._view = t;\n  }\n  get id() {\n    return this._view.id;\n  }\n  get name() {\n    return this._view.name;\n  }\n  get caption() {\n    return this._view.caption;\n  }\n  get emptyTitle() {\n    return this._view.emptyTitle;\n  }\n  get emptyCaption() {\n    return this._view.emptyCaption;\n  }\n  get getContents() {\n    return this._view.getContents;\n  }\n  get icon() {\n    return this._view.icon;\n  }\n  set icon(t) {\n    this._view.icon = t;\n  }\n  get order() {\n    return this._view.order;\n  }\n  set order(t) {\n    this._view.order = t;\n  }\n  get params() {\n    return this._view.params;\n  }\n  set params(t) {\n    this._view.params = t;\n  }\n  get columns() {\n    return this._view.columns;\n  }\n  get emptyView() {\n    return this._view.emptyView;\n  }\n  get parent() {\n    return this._view.parent;\n  }\n  get sticky() {\n    return this._view.sticky;\n  }\n  get expanded() {\n    return this._view.expanded;\n  }\n  set expanded(t) {\n    this._view.expanded = t;\n  }\n  get defaultSortKey() {\n    return this._view.defaultSortKey;\n  }\n}\nconst Ut = function(e) {\n  if (!e.id || typeof e.id != \"string\")\n    throw new Error(\"View id is required and must be a string\");\n  if (!e.name || typeof e.name != \"string\")\n    throw new Error(\"View name is required and must be a string\");\n  if (e.columns && e.columns.length > 0 && (!e.caption || typeof e.caption != \"string\"))\n    throw new Error(\"View caption is required for top-level views and must be a string\");\n  if (!e.getContents || typeof e.getContents != \"function\")\n    throw new Error(\"View getContents is required and must be a function\");\n  if (!e.icon || typeof e.icon != \"string\" || !Xt(e.icon))\n    throw new Error(\"View icon is required and must be a valid svg string\");\n  if (!(\"order\" in e) || typeof e.order != \"number\")\n    throw new Error(\"View order is required and must be a number\");\n  if (e.columns && e.columns.forEach((t) => {\n    if (!(t instanceof Ie))\n      throw new Error(\"View columns must be an array of Column. Invalid column found\");\n  }), e.emptyView && typeof e.emptyView != \"function\")\n    throw new Error(\"View emptyView must be a function\");\n  if (e.parent && typeof e.parent != \"string\")\n    throw new Error(\"View parent must be a string\");\n  if (\"sticky\" in e && typeof e.sticky != \"boolean\")\n    throw new Error(\"View sticky must be a boolean\");\n  if (\"expanded\" in e && typeof e.expanded != \"boolean\")\n    throw new Error(\"View expanded must be a boolean\");\n  if (e.defaultSortKey && typeof e.defaultSortKey != \"string\")\n    throw new Error(\"View defaultSortKey must be a string\");\n  return !0;\n};\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 */\nconst hr = function(e) {\n  return F().registerEntry(e);\n}, pr = function(e) {\n  return F().unregisterEntry(e);\n}, gr = function(e) {\n  return F().getEntries(e).sort((r, s) => r.order !== void 0 && s.order !== void 0 && r.order !== s.order ? r.order - s.order : r.displayName.localeCompare(s.displayName, void 0, { numeric: !0, sensitivity: \"base\" }));\n};\nexport {\n  Ie as Column,\n  Z as DefaultType,\n  ye as File,\n  Qt as FileAction,\n  R as FileType,\n  _e as Folder,\n  tr as Header,\n  Te as Navigation,\n  D as Node,\n  Q as NodeStatus,\n  N as Permission,\n  cr as View,\n  hr as addNewFileMenuEntry,\n  ur as davGetClient,\n  sr as davGetDefaultPropfind,\n  Ee as davGetFavoritesReport,\n  or as davGetRecentSearch,\n  be as davParsePermissions,\n  te as davRemoteURL,\n  ve as davResultToNode,\n  ee as davRootPath,\n  Y as defaultDavNamespaces,\n  j as defaultDavProperties,\n  Yt as formatFileSize,\n  L as getDavNameSpaces,\n  V as getDavProperties,\n  dr as getFavoriteNodes,\n  er as getFileActions,\n  nr as getFileListHeaders,\n  ar as getNavigation,\n  gr as getNewFileMenuEntries,\n  Jt as parseFileSize,\n  ir as registerDavProperty,\n  Dt as registerFileAction,\n  rr as registerFileListHeaders,\n  pr as removeNewFileMenuEntry\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"4720\":\"67ff1816113751e83e78\",\"6512\":\"4e739934e594e992c605\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 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) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\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}\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__(13108)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","encodeFilePath","path","pathSections","startsWith","split","relativePath","forEach","section","encodeURIComponent","remote","generateRemoteUrl","createClient","headers","requesttoken","getRequestToken","getLoggerBuilder","setApp","detectUser","build","name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","components","NcActionLink","NcActionButton","NcListItem","BackupRestore","Download","FileCompare","Pencil","Delete","ImageOffOutline","directives","tooltip","Tooltip","filters","humanReadableSize","bytes","OC","Util","humanFileSize","humanDateFromNow","timestamp","moment","fromNow","version","Object","required","fileInfo","isCurrent","Boolean","isFirstVersion","loadPreview","canView","canCompare","data","previewLoaded","previewErrored","capabilities","loadState","files","version_labeling","version_deletion","computed","versionLabel","label","t","downloadURL","getRootUrl","joinPaths","url","formattedDate","mtime","format","enableLabeling","enableDeletion","methods","labelUpdate","restoreVersion","deleteVersion","click","window","location","compareVersion","Error","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","scopedSlots","_u","key","fn","hasPreview","previewUrl","proxy","_f","defineComponent","sections","Array","containerElement","HTMLElement","useWindow","headerHeight","renderDistance","bottomBufferRatio","scrollToKey","scrollPosition","containerHeight","rowsContainerHeight","resizeObserver","visibleSections","logger","debug","containerTop","containerBottom","currentRowTop","currentRowBottom","map","rows","reduce","visibleRows","row","height","distance","filter","length","visibleItems","flatMap","_ref","_ref2","items","rowIdToKeyMap","_rowIdToKeyMap","item","id","usedTokens","_ref3","undefined","unusedTokens","values","includes","_ref4","pop","Math","random","toString","substr","finalMapping","_ref5","totalHeight","sectionHeight","paddingTop","sectionKey","rowsContainerStyle","isNearBottom","buffer","container","$refs","watch","value","currentRowTopDistanceFromTop","scrollTo","top","behavior","beforeCreate","mounted","ResizeObserver","entries","entry","cr","contentRect","target","classList","contains","addEventListener","updateContainerSize","passive","innerHeight","observe","rowsContainer","updateScrollPosition","beforeDestroy","removeEventListener","disconnect","_onScrollHandle","requestAnimationFrame","scrollY","scrollTop","_setupProxy","ref","style","_t","NcButton","NcTextField","Check","innerVersionLabel","$nextTick","labelInput","$el","getElementsByTagName","focus","setVersionLabel","translate","Version","VirtualScrolling","VersionLabelForm","preventDefault","trim","NcLoadingIcon","NcModal","mixins","isMobile","isActive","versions","loading","showVersionLabelForm","orderedVersions","sort","a","b","initialVersionMtime","min","viewerFileInfo","davPermissions","permissions","mime","mimetype","basename","filename","fileid","OCA","Viewer","mimetypesCompare","subscribe","fetchVersions","beforeUnmount","unsubscribe","update","resetState","setIsActive","async","getCurrentUser","uid","client","getDirectoryContents","details","lastmod","unix","generateUrl","fileId","fileEtag","etag","file","fileVersion","getetag","source","formatVersion","exception","error","handleRestore","oldFileInfo","restoreStartedEventState","emit","moveFile","showSuccess","showError","handleLabelUpdateRequest","editedVersion","handleLabelUpdate","newLabel","oldLabel","customRequest","method","handleDelete","index","indexOf","splice","deleteFile","push","$set","openVersion","open","find","v","enableSidebar","compare","_l","slot","Vue","prototype","n","use","VTooltip","View","extend","VersionTab","TabInstance","Files","Sidebar","registerTab","Tab","iconSvg","mount","el","context","$destroy","parent","$mount","destroy","enabled","isDirectory","___CSS_LOADER_EXPORT___","module","webpackContext","req","webpackContextResolve","__webpack_require__","o","e","code","keys","resolve","exports","setUid","C","P","Yt","r","s","floor","log","i","d","pow","toFixed","parseFloat","toLocaleString","N","NONE","CREATE","READ","UPDATE","DELETE","SHARE","ALL","j","Y","nc","oc","ocs","V","_nc_dav_properties","join","L","_nc_dav_namespaces","sr","or","R","Folder","File","J","match","X","URL","Date","crtime","owner","attributes","root","status","Q","NEW","FAILED","LOADING","LOCKED","D","_data","_attributes","_knownDavService","constructor","set","updateMtime","Reflect","deleteProperty","Proxy","replace","encodedSource","origin","slice","extension","dirname","isDavRessource","pathname","move","rename","ye","super","ee","te","ur","setHeaders","patch","u","fetch","dr","includeSelf","ve","be","parse","parseInt","getcontentlength","O","RegExp","isExist","isEmptyObject","merge","l","f","c","getValue","isName","exec","getAllMatches","startIndex","lastIndex","g","nameRegexp","k","re","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","allowBooleanAttributes","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","attributeValueProcessor","stopNodes","alwaysCreateTextNode","isArray","commentPropName","unpairedTags","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","buildOptions","assign","defaultOptions","ne","ie","Nt","bt","Et","hasOwnProperty","prettify","yt","vt","se","Pt","h","xt","oe","K","_","E","indentBy","suppressUnpairedNode","suppressEmptyNode","endsWith","suppressBooleanAttributes","lastIndexOf","entities","regex","val","Ft","Vt","oneListGroup","isAttribute","attrPrefixLen","St","processTextOrObjNode","Lt","indentate","Rt","tagEndChar","newLine","j2x","buildTextValNode","attrStr","buildObjectNode","repeat","arrayNodeName","call","buildAttrPairStr","replaceEntitiesValue","closeTag","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","m","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","getter","__esModule","definition","defineProperty","enumerable","get","chunkId","Promise","all","promises","globalThis","Function","obj","prop","done","script","needAttach","scripts","document","getAttribute","createElement","charset","timeout","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","head","appendChild","Symbol","toStringTag","nmd","paths","children","scriptUrl","importScripts","currentScript","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=136ebdb239ed86df0d9b","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files/src/utils/fileUtils.ts","webpack:///nextcloud/apps/files_versions/src/utils/davClient.js","webpack:///nextcloud/apps/files_versions/src/utils/logger.js","webpack:///nextcloud/node_modules/vue-material-design-icons/BackupRestore.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/BackupRestore.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/BackupRestore.vue?6cf7","webpack:///nextcloud/node_modules/vue-material-design-icons/BackupRestore.vue?vue&type=template&id=7529504e","webpack:///nextcloud/node_modules/vue-material-design-icons/Download.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Download.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Download.vue?b226","webpack:///nextcloud/node_modules/vue-material-design-icons/Download.vue?vue&type=template&id=67aea606","webpack:///nextcloud/node_modules/vue-material-design-icons/FileCompare.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/FileCompare.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/FileCompare.vue?5fdf","webpack:///nextcloud/node_modules/vue-material-design-icons/FileCompare.vue?vue&type=template&id=400d4998","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageOffOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageOffOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/ImageOffOutline.vue?e0b5","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageOffOutline.vue?vue&type=template&id=0a153844","webpack:///nextcloud/apps/files_sharing/src/lib/SharePermissionsToolBox.js","webpack:///nextcloud/apps/files_versions/src/components/Version.vue","webpack:///nextcloud/apps/files_versions/src/components/Version.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/files_versions/src/components/Version.vue?95a1","webpack://nextcloud/./apps/files_versions/src/components/Version.vue?0a31","webpack://nextcloud/./apps/files_versions/src/components/Version.vue?f787","webpack:///nextcloud/apps/files_versions/src/components/VirtualScrolling.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files_versions/src/components/VirtualScrolling.vue","webpack://nextcloud/./apps/files_versions/src/components/VirtualScrolling.vue?3e31","webpack://nextcloud/./apps/files_versions/src/components/VirtualScrolling.vue?fc23","webpack:///nextcloud/apps/files_versions/src/components/VersionLabelForm.vue","webpack:///nextcloud/apps/files_versions/src/components/VersionLabelForm.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files_versions/src/components/VersionLabelForm.vue?8728","webpack://nextcloud/./apps/files_versions/src/components/VersionLabelForm.vue?dbea","webpack:///nextcloud/apps/files_versions/src/views/VersionTab.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files_versions/src/views/VersionTab.vue","webpack:///nextcloud/apps/files_versions/src/utils/versions.ts","webpack:///nextcloud/apps/files_versions/src/utils/davRequest.js","webpack://nextcloud/./apps/files_versions/src/views/VersionTab.vue?492e","webpack://nextcloud/./apps/files_versions/src/views/VersionTab.vue?d7ee","webpack://nextcloud/./apps/files_versions/src/views/VersionTab.vue?4309","webpack:///nextcloud/apps/files_versions/src/files_versions_tab.js","webpack:///nextcloud/apps/files_versions/src/components/Version.vue?vue&type=style&index=0&id=5b3703ac&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files_versions/src/components/VersionLabelForm.vue?vue&type=style&index=0&id=58311f0c&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files_versions/src/components/VirtualScrolling.vue?vue&type=style&index=0&id=11dbbae6&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files_versions/src/views/VersionTab.vue?vue&type=style&index=0&id=9f52be8e&prod&lang=scss","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { FileType } from '@nextcloud/files';\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n';\nimport { basename, extname } from 'path';\n// TODO: move to @nextcloud/files\n/**\n * Create an unique file name\n * @param name The initial name to use\n * @param otherNames Other names that are already used\n * @param suffix A function that takes an index an returns a suffix to add, defaults to '(index)'\n * @return Either the initial name, if unique, or the name with the suffix so that the name is unique\n */\nexport const getUniqueName = (name, otherNames, suffix = (n) => `(${n})`) => {\n    let newName = name;\n    let i = 1;\n    while (otherNames.includes(newName)) {\n        const ext = extname(name);\n        newName = `${basename(name, ext)} ${suffix(i++)}${ext}`;\n    }\n    return newName;\n};\nexport const encodeFilePath = function (path) {\n    const pathSections = (path.startsWith('/') ? path : `/${path}`).split('/');\n    let relativePath = '';\n    pathSections.forEach((section) => {\n        if (section !== '') {\n            relativePath += '/' + encodeURIComponent(section);\n        }\n    });\n    return relativePath;\n};\n/**\n * Extract dir and name from file path\n *\n * @param {string} path the full path\n * @return {string[]} [dirPath, fileName]\n */\nexport const extractFilePaths = function (path) {\n    const pathSections = path.split('/');\n    const fileName = pathSections[pathSections.length - 1];\n    const dirPath = pathSections.slice(0, pathSections.length - 1).join('/');\n    return [dirPath, fileName];\n};\n/**\n * Generate a translated summary of an array of nodes\n * @param {Node[]} nodes the nodes to summarize\n * @return {string}\n */\nexport const getSummaryFor = (nodes) => {\n    const fileCount = nodes.filter(node => node.type === FileType.File).length;\n    const folderCount = nodes.filter(node => node.type === FileType.Folder).length;\n    if (fileCount === 0) {\n        return n('files', '{folderCount} folder', '{folderCount} folders', folderCount, { folderCount });\n    }\n    else if (folderCount === 0) {\n        return n('files', '{fileCount} file', '{fileCount} files', fileCount, { fileCount });\n    }\n    if (fileCount === 1) {\n        return n('files', '1 file and {folderCount} folder', '1 file and {folderCount} folders', folderCount, { folderCount });\n    }\n    if (folderCount === 1) {\n        return n('files', '{fileCount} file and 1 folder', '{fileCount} files and 1 folder', fileCount, { fileCount });\n    }\n    return t('files', '{fileCount} files and {folderCount} folders', { fileCount, folderCount });\n};\n","/**\n * @copyright 2022 Louis Chemineau <mlouis@chmn.me>\n *\n * @author Louis Chemineau <mlouis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { createClient } from 'webdav'\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { getRequestToken } 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","<template>\n  <span v-bind=\"$attrs\"\n        :aria-hidden=\"!title\"\n        :aria-label=\"title\"\n        class=\"material-design-icon backup-restore-icon\"\n        role=\"img\"\n        @click=\"$emit('click', $event)\">\n    <svg :fill=\"fillColor\"\n         class=\"material-design-icon__svg\"\n         :width=\"size\"\n         :height=\"size\"\n         viewBox=\"0 0 24 24\">\n      <path d=\"M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z\">\n        <title v-if=\"title\">{{ title }}</title>\n      </path>\n    </svg>\n  </span>\n</template>\n\n<script>\nexport default {\n  name: \"BackupRestoreIcon\",\n  emits: ['click'],\n  props: {\n    title: {\n      type: String,\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./BackupRestore.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./BackupRestore.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./BackupRestore.vue?vue&type=template&id=7529504e\"\nimport script from \"./BackupRestore.vue?vue&type=script&lang=js\"\nexport * from \"./BackupRestore.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon backup-restore-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Download.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Download.vue?vue&type=script&lang=js\"","<template>\n  <span v-bind=\"$attrs\"\n        :aria-hidden=\"!title\"\n        :aria-label=\"title\"\n        class=\"material-design-icon download-icon\"\n        role=\"img\"\n        @click=\"$emit('click', $event)\">\n    <svg :fill=\"fillColor\"\n         class=\"material-design-icon__svg\"\n         :width=\"size\"\n         :height=\"size\"\n         viewBox=\"0 0 24 24\">\n      <path d=\"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z\">\n        <title v-if=\"title\">{{ title }}</title>\n      </path>\n    </svg>\n  </span>\n</template>\n\n<script>\nexport default {\n  name: \"DownloadIcon\",\n  emits: ['click'],\n  props: {\n    title: {\n      type: String,\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n}\n</script>","import { render, staticRenderFns } from \"./Download.vue?vue&type=template&id=67aea606\"\nimport script from \"./Download.vue?vue&type=script&lang=js\"\nexport * from \"./Download.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon download-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileCompare.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileCompare.vue?vue&type=script&lang=js\"","<template>\n  <span v-bind=\"$attrs\"\n        :aria-hidden=\"!title\"\n        :aria-label=\"title\"\n        class=\"material-design-icon file-compare-icon\"\n        role=\"img\"\n        @click=\"$emit('click', $event)\">\n    <svg :fill=\"fillColor\"\n         class=\"material-design-icon__svg\"\n         :width=\"size\"\n         :height=\"size\"\n         viewBox=\"0 0 24 24\">\n      <path d=\"M10,18H6V16H10V18M10,14H6V12H10V14M10,1V2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V23H12V1H10M20,8V20C20,21.11 19.11,22 18,22H14V20H18V11H14V9H18.5L14,4.5V2L20,8M16,14H14V12H16V14M16,18H14V16H16V18Z\">\n        <title v-if=\"title\">{{ title }}</title>\n      </path>\n    </svg>\n  </span>\n</template>\n\n<script>\nexport default {\n  name: \"FileCompareIcon\",\n  emits: ['click'],\n  props: {\n    title: {\n      type: String,\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n}\n</script>","import { render, staticRenderFns } from \"./FileCompare.vue?vue&type=template&id=400d4998\"\nimport script from \"./FileCompare.vue?vue&type=script&lang=js\"\nexport * from \"./FileCompare.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon file-compare-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,18H6V16H10V18M10,14H6V12H10V14M10,1V2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V23H12V1H10M20,8V20C20,21.11 19.11,22 18,22H14V20H18V11H14V9H18.5L14,4.5V2L20,8M16,14H14V12H16V14M16,18H14V16H16V18Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <span v-bind=\"$attrs\"\n        :aria-hidden=\"!title\"\n        :aria-label=\"title\"\n        class=\"material-design-icon image-off-outline-icon\"\n        role=\"img\"\n        @click=\"$emit('click', $event)\">\n    <svg :fill=\"fillColor\"\n         class=\"material-design-icon__svg\"\n         :width=\"size\"\n         :height=\"size\"\n         viewBox=\"0 0 24 24\">\n      <path d=\"M22 20.7L3.3 2L2 3.3L3 4.3V19C3 20.1 3.9 21 5 21H19.7L20.7 22L22 20.7M5 19V6.3L12.6 13.9L11.1 15.8L9 13.1L6 17H15.7L17.7 19H5M8.8 5L6.8 3H19C20.1 3 21 3.9 21 5V17.2L19 15.2V5H8.8\">\n        <title v-if=\"title\">{{ title }}</title>\n      </path>\n    </svg>\n  </span>\n</template>\n\n<script>\nexport default {\n  name: \"ImageOffOutlineIcon\",\n  emits: ['click'],\n  props: {\n    title: {\n      type: String,\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageOffOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageOffOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ImageOffOutline.vue?vue&type=template&id=0a153844\"\nimport script from \"./ImageOffOutline.vue?vue&type=script&lang=js\"\nexport * from \"./ImageOffOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon image-off-outline-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M22 20.7L3.3 2L2 3.3L3 4.3V19C3 20.1 3.9 21 5 21H19.7L20.7 22L22 20.7M5 19V6.3L12.6 13.9L11.1 15.8L9 13.1L6 17H15.7L17.7 19H5M8.8 5L6.8 3H19C20.1 3 21 3.9 21 5V17.2L19 15.2V5H8.8\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const ATOMIC_PERMISSIONS = {\n\tNONE: 0,\n\tREAD: 1,\n\tUPDATE: 2,\n\tCREATE: 4,\n\tDELETE: 8,\n\tSHARE: 16,\n}\n\nexport const BUNDLED_PERMISSIONS = {\n\tREAD_ONLY: ATOMIC_PERMISSIONS.READ,\n\tUPLOAD_AND_UPDATE: ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE,\n\tFILE_DROP: ATOMIC_PERMISSIONS.CREATE,\n\tALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE,\n\tALL_FILE: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.SHARE,\n}\n\n/**\n * Return whether a given permissions set contains some permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToCheck - the permissions to check.\n * @return {boolean}\n */\nexport function hasPermissions(initialPermissionSet, permissionsToCheck) {\n\treturn initialPermissionSet !== ATOMIC_PERMISSIONS.NONE && (initialPermissionSet & permissionsToCheck) === permissionsToCheck\n}\n\n/**\n * Return whether a given permissions set is valid.\n *\n * @param {number} permissionsSet - the permissions set.\n *\n * @return {boolean}\n */\nexport function permissionsSetIsValid(permissionsSet) {\n\t// Must have at least READ or CREATE permission.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && !hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.CREATE)) {\n\t\treturn false\n\t}\n\n\t// Must have READ permission if have UPDATE or DELETE.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && (\n\t\thasPermissions(permissionsSet, ATOMIC_PERMISSIONS.UPDATE) || hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.DELETE)\n\t)) {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n/**\n * Add some permissions to an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToAdd - the permissions to add.\n *\n * @return {number}\n */\nexport function addPermissions(initialPermissionSet, permissionsToAdd) {\n\treturn initialPermissionSet | permissionsToAdd\n}\n\n/**\n * Remove some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToSubtract - the permissions to remove.\n *\n * @return {number}\n */\nexport function subtractPermissions(initialPermissionSet, permissionsToSubtract) {\n\treturn initialPermissionSet & ~permissionsToSubtract\n}\n\n/**\n * Toggle some permissions from  an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {number}\n */\nexport function togglePermissions(initialPermissionSet, permissionsToToggle) {\n\tif (hasPermissions(initialPermissionSet, permissionsToToggle)) {\n\t\treturn subtractPermissions(initialPermissionSet, permissionsToToggle)\n\t} else {\n\t\treturn addPermissions(initialPermissionSet, permissionsToToggle)\n\t}\n}\n\n/**\n * Return whether some given permissions can be toggled from a permission set.\n *\n * @param {number} permissionSet - the initial permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {boolean}\n */\nexport function canTogglePermissions(permissionSet, permissionsToToggle) {\n\treturn permissionsSetIsValid(togglePermissions(permissionSet, permissionsToToggle))\n}\n","<!--\n - @copyright 2022 Carl Schwan <carl@carlschwan.eu>\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n<template>\n\t<NcListItem class=\"version\"\n\t\t:name=\"versionLabel\"\n\t\t:force-display-actions=\"true\"\n\t\tdata-files-versions-version\n\t\t@click=\"click\">\n\t\t<template #icon>\n\t\t\t<div v-if=\"!(loadPreview || previewLoaded)\" class=\"version__image\" />\n\t\t\t<img v-else-if=\"(isCurrent || version.hasPreview) && !previewErrored\"\n\t\t\t\t:src=\"version.previewUrl\"\n\t\t\t\talt=\"\"\n\t\t\t\tdecoding=\"async\"\n\t\t\t\tfetchpriority=\"low\"\n\t\t\t\tloading=\"lazy\"\n\t\t\t\tclass=\"version__image\"\n\t\t\t\t@load=\"previewLoaded = true\"\n\t\t\t\t@error=\"previewErrored = true\">\n\t\t\t<div v-else\n\t\t\t\tclass=\"version__image\">\n\t\t\t\t<ImageOffOutline :size=\"20\" />\n\t\t\t</div>\n\t\t</template>\n\t\t<template #subname>\n\t\t\t<div class=\"version__info\">\n\t\t\t\t<span :title=\"formattedDate\">{{ version.mtime | humanDateFromNow }}</span>\n\t\t\t\t<!-- Separate dot to improve alignement -->\n\t\t\t\t<span class=\"version__info__size\">•</span>\n\t\t\t\t<span class=\"version__info__size\">{{ version.size | humanReadableSize }}</span>\n\t\t\t</div>\n\t\t</template>\n\t\t<template #actions>\n\t\t\t<NcActionButton v-if=\"enableLabeling && hasUpdatePermissions\"\n\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t@click=\"labelUpdate\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Pencil :size=\"22\" />\n\t\t\t\t</template>\n\t\t\t\t{{ version.label === '' ? t('files_versions', 'Name this version') : t('files_versions', 'Edit version name') }}\n\t\t\t</NcActionButton>\n\t\t\t<NcActionButton v-if=\"!isCurrent && canView && canCompare\"\n\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t@click=\"compareVersion\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<FileCompare :size=\"22\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('files_versions', 'Compare to current version') }}\n\t\t\t</NcActionButton>\n\t\t\t<NcActionButton v-if=\"!isCurrent && hasUpdatePermissions\"\n\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t@click=\"restoreVersion\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<BackupRestore :size=\"22\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('files_versions', 'Restore version') }}\n\t\t\t</NcActionButton>\n\t\t\t<NcActionLink v-if=\"isDownloadable\"\n\t\t\t\t:href=\"downloadURL\"\n\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t:download=\"downloadURL\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Download :size=\"22\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('files_versions', 'Download version') }}\n\t\t\t</NcActionLink>\n\t\t\t<NcActionButton v-if=\"!isCurrent && enableDeletion && hasDeletePermissions\"\n\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t@click=\"deleteVersion\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Delete :size=\"22\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('files_versions', 'Delete version') }}\n\t\t\t</NcActionButton>\n\t\t</template>\n\t</NcListItem>\n</template>\n\n<script>\nimport BackupRestore from 'vue-material-design-icons/BackupRestore.vue'\nimport Download from 'vue-material-design-icons/Download.vue'\nimport FileCompare from 'vue-material-design-icons/FileCompare.vue'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\nimport ImageOffOutline from 'vue-material-design-icons/ImageOffOutline.vue'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport NcListItem from '@nextcloud/vue/dist/Components/NcListItem.js'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip.js'\nimport moment from '@nextcloud/moment'\nimport { translate as t } from '@nextcloud/l10n'\nimport { joinPaths } from '@nextcloud/paths'\nimport { getRootUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport { Permission } from '@nextcloud/files'\n\nimport { hasPermissions } from '../../../files_sharing/src/lib/SharePermissionsToolBox.js'\n\nexport default {\n\tname: 'Version',\n\tcomponents: {\n\t\tNcActionLink,\n\t\tNcActionButton,\n\t\tNcListItem,\n\t\tBackupRestore,\n\t\tDownload,\n\t\tFileCompare,\n\t\tPencil,\n\t\tDelete,\n\t\tImageOffOutline,\n\t},\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\tfilters: {\n\t\t/**\n\t\t * @param {number} bytes\n\t\t * @return {string}\n\t\t */\n\t\thumanReadableSize(bytes) {\n\t\t\treturn OC.Util.humanFileSize(bytes)\n\t\t},\n\t\t/**\n\t\t * @param {number} timestamp\n\t\t * @return {string}\n\t\t */\n\t\thumanDateFromNow(timestamp) {\n\t\t\treturn moment(timestamp).fromNow()\n\t\t},\n\t},\n\tprops: {\n\t\t/** @type {Vue.PropOptions<import('../utils/versions.ts').Version>} */\n\t\tversion: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tisCurrent: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisFirstVersion: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tloadPreview: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tcanView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tcanCompare: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpreviewLoaded: false,\n\t\t\tpreviewErrored: false,\n\t\t\tcapabilities: loadState('core', 'capabilities', { files: { version_labeling: false, version_deletion: false } }),\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tversionLabel() {\n\t\t\tconst label = this.version.label ?? ''\n\n\t\t\tif (this.isCurrent) {\n\t\t\t\tif (label === '') {\n\t\t\t\t\treturn t('files_versions', 'Current version')\n\t\t\t\t} else {\n\t\t\t\t\treturn `${label} (${t('files_versions', 'Current version')})`\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.isFirstVersion && label === '') {\n\t\t\t\treturn t('files_versions', 'Initial version')\n\t\t\t}\n\n\t\t\treturn label\n\t\t},\n\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tdownloadURL() {\n\t\t\tif (this.isCurrent) {\n\t\t\t\treturn getRootUrl() + joinPaths('/remote.php/webdav', this.fileInfo.path, this.fileInfo.name)\n\t\t\t} else {\n\t\t\t\treturn getRootUrl() + this.version.url\n\t\t\t}\n\t\t},\n\n\t\t/** @return {string} */\n\t\tformattedDate() {\n\t\t\treturn moment(this.version.mtime).format('LLL')\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\tenableLabeling() {\n\t\t\treturn this.capabilities.files.version_labeling === true\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\tenableDeletion() {\n\t\t\treturn this.capabilities.files.version_deletion === true\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\thasDeletePermissions() {\n\t\t\treturn hasPermissions(this.fileInfo.permissions, Permission.DELETE)\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\thasUpdatePermissions() {\n\t\t\treturn hasPermissions(this.fileInfo.permissions, Permission.UPDATE)\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\tisDownloadable() {\n\t\t\tif ((this.fileInfo.permissions & Permission.READ) === 0) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// If the mount type is a share, ensure it got download permissions.\n\t\t\tif (this.fileInfo.mountType === 'shared') {\n\t\t\t\tconst downloadAttribute = this.fileInfo.shareAttributes.find((attribute) => attribute.scope === 'permissions' && attribute.key === 'download')\n\t\t\t\tif (downloadAttribute !== undefined && downloadAttribute.enabled === false) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true\n\t\t},\n\t},\n\tmethods: {\n\t\tlabelUpdate() {\n\t\t\tthis.$emit('label-update-request')\n\t\t},\n\n\t\trestoreVersion() {\n\t\t\tthis.$emit('restore', this.version)\n\t\t},\n\n\t\tdeleteVersion() {\n\t\t\tthis.$emit('delete', this.version)\n\t\t},\n\n\t\tclick() {\n\t\t\tif (!this.canView) {\n\t\t\t\twindow.location = this.downloadURL\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.$emit('click', { version: this.version })\n\t\t},\n\n\t\tcompareVersion() {\n\t\t\tif (!this.canView) {\n\t\t\t\tthrow new Error('Cannot compare version of this file')\n\t\t\t}\n\t\t\tthis.$emit('compare', { version: this.version })\n\t\t},\n\n\t\tt,\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.version {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\t&__info {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\talign-items: center;\n\t\tgap: 0.5rem;\n\n\t\t&__size {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\t}\n\n\t&__image {\n\t\twidth: 3rem;\n\t\theight: 3rem;\n\t\tborder: 1px solid var(--color-border);\n\t\tborder-radius: var(--border-radius-large);\n\n\t\t// Useful to display no preview icon.\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tcolor: var(--color-text-light);\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Version.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Version.vue?vue&type=script&lang=js\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Version.vue?vue&type=style&index=0&id=5b3703ac&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=5b3703ac&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=5b3703ac&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=5b3703ac&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  \"5b3703ac\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcListItem',{staticClass:\"version\",attrs:{\"name\":_vm.versionLabel,\"force-display-actions\":true,\"data-files-versions-version\":\"\"},on:{\"click\":_vm.click},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(!(_vm.loadPreview || _vm.previewLoaded))?_c('div',{staticClass:\"version__image\"}):((_vm.isCurrent || _vm.version.hasPreview) && !_vm.previewErrored)?_c('img',{staticClass:\"version__image\",attrs:{\"src\":_vm.version.previewUrl,\"alt\":\"\",\"decoding\":\"async\",\"fetchpriority\":\"low\",\"loading\":\"lazy\"},on:{\"load\":function($event){_vm.previewLoaded = true},\"error\":function($event){_vm.previewErrored = true}}}):_c('div',{staticClass:\"version__image\"},[_c('ImageOffOutline',{attrs:{\"size\":20}})],1)]},proxy:true},{key:\"subname\",fn:function(){return [_c('div',{staticClass:\"version__info\"},[_c('span',{attrs:{\"title\":_vm.formattedDate}},[_vm._v(_vm._s(_vm._f(\"humanDateFromNow\")(_vm.version.mtime)))]),_vm._v(\" \"),_c('span',{staticClass:\"version__info__size\"},[_vm._v(\"•\")]),_vm._v(\" \"),_c('span',{staticClass:\"version__info__size\"},[_vm._v(_vm._s(_vm._f(\"humanReadableSize\")(_vm.version.size)))])])]},proxy:true},{key:\"actions\",fn:function(){return [(_vm.enableLabeling && _vm.hasUpdatePermissions)?_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":_vm.labelUpdate},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":22}})]},proxy:true}],null,false,3072546167)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.version.label === '' ? _vm.t('files_versions', 'Name this version') : _vm.t('files_versions', 'Edit version name'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isCurrent && _vm.canView && _vm.canCompare)?_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":_vm.compareVersion},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('FileCompare',{attrs:{\"size\":22}})]},proxy:true}],null,false,1958207595)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Compare to current version'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isCurrent && _vm.hasUpdatePermissions)?_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":_vm.restoreVersion},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('BackupRestore',{attrs:{\"size\":22}})]},proxy:true}],null,false,2239038444)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Restore version'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isDownloadable)?_c('NcActionLink',{attrs:{\"href\":_vm.downloadURL,\"close-after-click\":true,\"download\":_vm.downloadURL},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Download',{attrs:{\"size\":22}})]},proxy:true}],null,false,927269758)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Download version'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isCurrent && _vm.enableDeletion && _vm.hasDeletePermissions)?_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":_vm.deleteVersion},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":22}})]},proxy:true}],null,false,2429175571)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Delete version'))+\"\\n\\t\\t\")]):_vm._e()]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualScrolling.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualScrolling.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (!_vm.useWindow && _vm.containerElement === null)?_c('div',{ref:\"container\",staticClass:\"vs-container\"},[_c('div',{ref:\"rowsContainer\",staticClass:\"vs-rows-container\",style:(_vm.rowsContainerStyle)},[_vm._t(\"default\",null,{\"visibleSections\":_vm.visibleSections}),_vm._v(\" \"),_vm._t(\"loader\")],2)]):_c('div',{ref:\"rowsContainer\",staticClass:\"vs-rows-container\",style:(_vm.rowsContainerStyle)},[_vm._t(\"default\",null,{\"visibleSections\":_vm.visibleSections}),_vm._v(\" \"),_vm._t(\"loader\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualScrolling.vue?vue&type=style&index=0&id=11dbbae6&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualScrolling.vue?vue&type=style&index=0&id=11dbbae6&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VirtualScrolling.vue?vue&type=template&id=11dbbae6&scoped=true\"\nimport script from \"./VirtualScrolling.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualScrolling.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VirtualScrolling.vue?vue&type=style&index=0&id=11dbbae6&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"11dbbae6\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('form',{staticClass:\"version-label-modal\",on:{\"submit\":function($event){$event.preventDefault();return _vm.setVersionLabel(_vm.innerVersionLabel)}}},[_c('label',[_c('div',{staticClass:\"version-label-modal__title\"},[_vm._v(_vm._s(_vm.t('files_versions', 'Version name')))]),_vm._v(\" \"),_c('NcTextField',{ref:\"labelInput\",attrs:{\"value\":_vm.innerVersionLabel,\"placeholder\":_vm.t('files_versions', 'Version name'),\"label-outside\":true},on:{\"update:value\":function($event){_vm.innerVersionLabel=$event}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"version-label-modal__info\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_versions', 'Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"version-label-modal__actions\"},[_c('NcButton',{attrs:{\"disabled\":_vm.innerVersionLabel.trim().length === 0},on:{\"click\":function($event){return _vm.setVersionLabel('')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Remove version name'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\",\"native-type\":\"submit\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Check')]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Save version name'))+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VersionLabelForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VersionLabelForm.vue?vue&type=script&lang=ts\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VersionLabelForm.vue?vue&type=style&index=0&id=58311f0c&prod&scoped=true&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VersionLabelForm.vue?vue&type=style&index=0&id=58311f0c&prod&scoped=true&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VersionLabelForm.vue?vue&type=template&id=58311f0c&scoped=true\"\nimport script from \"./VersionLabelForm.vue?vue&type=script&lang=ts\"\nexport * from \"./VersionLabelForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VersionLabelForm.vue?vue&type=style&index=0&id=58311f0c&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"58311f0c\",\n  null\n  \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VersionTab.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VersionTab.vue?vue&type=script&lang=js\"","<!--\n - @copyright 2022 Carl Schwan <carl@carlschwan.eu>\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n<template>\n\t<div class=\"versions-tab__container\">\n\t\t<VirtualScrolling :sections=\"sections\"\n\t\t\t:header-height=\"0\">\n\t\t\t<template slot-scope=\"{visibleSections}\">\n\t\t\t\t<ul data-files-versions-versions-list>\n\t\t\t\t\t<template v-if=\"visibleSections.length === 1\">\n\t\t\t\t\t\t<Version v-for=\"(row) of visibleSections[0].rows\"\n\t\t\t\t\t\t\t:key=\"row.items[0].mtime\"\n\t\t\t\t\t\t\t:can-view=\"canView\"\n\t\t\t\t\t\t\t:can-compare=\"canCompare\"\n\t\t\t\t\t\t\t:load-preview=\"isActive\"\n\t\t\t\t\t\t\t:version=\"row.items[0]\"\n\t\t\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t\t\t:is-current=\"row.items[0].mtime === fileInfo.mtime\"\n\t\t\t\t\t\t\t:is-first-version=\"row.items[0].mtime === initialVersionMtime\"\n\t\t\t\t\t\t\t@click=\"openVersion\"\n\t\t\t\t\t\t\t@compare=\"compareVersion\"\n\t\t\t\t\t\t\t@restore=\"handleRestore\"\n\t\t\t\t\t\t\t@label-update-request=\"handleLabelUpdateRequest(row.items[0])\"\n\t\t\t\t\t\t\t@delete=\"handleDelete\" />\n\t\t\t\t\t</template>\n\t\t\t\t</ul>\n\t\t\t</template>\n\t\t\t<NcLoadingIcon v-if=\"loading\" slot=\"loader\" class=\"files-list-viewer__loader\" />\n\t\t</VirtualScrolling>\n\t\t<NcModal v-if=\"showVersionLabelForm\"\n\t\t\t:title=\"t('files_versions', 'Name this version')\"\n\t\t\t@close=\"showVersionLabelForm = false\">\n\t\t\t<VersionLabelForm :version-label=\"editedVersion.label\" @label-update=\"handleLabelUpdate\" />\n\t\t</NcModal>\n\t</div>\n</template>\n\n<script>\nimport path from 'path'\n\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport isMobile from '@nextcloud/vue/dist/Mixins/isMobile.js'\nimport { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\n\nimport { fetchVersions, deleteVersion, restoreVersion, setVersionLabel } from '../utils/versions.ts'\nimport Version from '../components/Version.vue'\nimport VirtualScrolling from '../components/VirtualScrolling.vue'\nimport VersionLabelForm from '../components/VersionLabelForm.vue'\n\nexport default {\n\tname: 'VersionTab',\n\tcomponents: {\n\t\tVersion,\n\t\tVirtualScrolling,\n\t\tVersionLabelForm,\n\t\tNcLoadingIcon,\n\t\tNcModal,\n\t},\n\tmixins: [\n\t\tisMobile,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tfileInfo: null,\n\t\t\tisActive: false,\n\t\t\t/** @type {import('../utils/versions.ts').Version[]} */\n\t\t\tversions: [],\n\t\t\tloading: false,\n\t\t\tshowVersionLabelForm: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tsections() {\n\t\t\tconst rows = this.orderedVersions.map(version => ({ key: version.mtime, height: 68, sectionKey: 'versions', items: [version] }))\n\t\t\treturn [{ key: 'versions', rows, height: 68 * this.orderedVersions.length }]\n\t\t},\n\n\t\t/**\n\t\t * Order versions by mtime.\n\t\t * Put the current version at the top.\n\t\t *\n\t\t * @return {import('../utils/versions.ts').Version[]}\n\t\t */\n\t\torderedVersions() {\n\t\t\treturn [...this.versions].sort((a, b) => {\n\t\t\t\tif (a.mtime === this.fileInfo.mtime) {\n\t\t\t\t\treturn -1\n\t\t\t\t} else if (b.mtime === this.fileInfo.mtime) {\n\t\t\t\t\treturn 1\n\t\t\t\t} else {\n\t\t\t\t\treturn b.mtime - a.mtime\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Return the mtime of the first version to display \"Initial version\" label\n\t\t *\n\t\t * @return {number}\n\t\t */\n\t\tinitialVersionMtime() {\n\t\t\treturn this.versions\n\t\t\t\t.map(version => version.mtime)\n\t\t\t\t.reduce((a, b) => Math.min(a, b))\n\t\t},\n\n\t\tviewerFileInfo() {\n\t\t\t// We need to remap bitmask to dav permissions as the file info we have is converted through client.js\n\t\t\tlet davPermissions = ''\n\t\t\tif (this.fileInfo.permissions & 1) {\n\t\t\t\tdavPermissions += 'R'\n\t\t\t}\n\t\t\tif (this.fileInfo.permissions & 2) {\n\t\t\t\tdavPermissions += 'W'\n\t\t\t}\n\t\t\tif (this.fileInfo.permissions & 8) {\n\t\t\t\tdavPermissions += 'D'\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...this.fileInfo,\n\t\t\t\tmime: this.fileInfo.mimetype,\n\t\t\t\tbasename: this.fileInfo.name,\n\t\t\t\tfilename: this.fileInfo.path + '/' + this.fileInfo.name,\n\t\t\t\tpermissions: davPermissions,\n\t\t\t\tfileid: this.fileInfo.id,\n\t\t\t}\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\tcanView() {\n\t\t\treturn window.OCA.Viewer?.mimetypesCompare?.includes(this.fileInfo.mimetype)\n\t\t},\n\n\t\tcanCompare() {\n\t\t\treturn !this.isMobile\n\t\t},\n\t},\n\tmounted() {\n\t\tsubscribe('files_versions:restore:restored', this.fetchVersions)\n\t},\n\tbeforeUnmount() {\n\t\tunsubscribe('files_versions:restore:restored', this.fetchVersions)\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Update current fileInfo and fetch new data\n\t\t *\n\t\t * @param {object} fileInfo the current file FileInfo\n\t\t */\n\t\tasync update(fileInfo) {\n\t\t\tthis.fileInfo = fileInfo\n\t\t\tthis.resetState()\n\t\t\tthis.fetchVersions()\n\t\t},\n\n\t\t/**\n\t\t * @param {boolean} isActive whether the tab is active\n\t\t */\n\t\tasync setIsActive(isActive) {\n\t\t\tthis.isActive = isActive\n\t\t},\n\n\t\t/**\n\t\t * Get the existing versions infos\n\t\t */\n\t\tasync fetchVersions() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.versions = await fetchVersions(this.fileInfo)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle restored event from Version.vue\n\t\t *\n\t\t * @param {import('../utils/versions.ts').Version} version\n\t\t */\n\t\tasync handleRestore(version) {\n\t\t\t// Update local copy of fileInfo as rendering depends on it.\n\t\t\tconst oldFileInfo = this.fileInfo\n\t\t\tthis.fileInfo = {\n\t\t\t\t...this.fileInfo,\n\t\t\t\tsize: version.size,\n\t\t\t\tmtime: version.mtime,\n\t\t\t}\n\n\t\t\tconst restoreStartedEventState = {\n\t\t\t\tpreventDefault: false,\n\t\t\t\tfileInfo: this.fileInfo,\n\t\t\t\tversion,\n\t\t\t}\n\t\t\temit('files_versions:restore:requested', restoreStartedEventState)\n\t\t\tif (restoreStartedEventState.preventDefault) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tawait restoreVersion(version)\n\t\t\t\tif (version.label !== '') {\n\t\t\t\t\tshowSuccess(t('files_versions', `${version.label} restored`))\n\t\t\t\t} else if (version.mtime === this.initialVersionMtime) {\n\t\t\t\t\tshowSuccess(t('files_versions', 'Initial version restored'))\n\t\t\t\t} else {\n\t\t\t\t\tshowSuccess(t('files_versions', 'Version restored'))\n\t\t\t\t}\n\t\t\t\temit('files_versions:restore:restored', version)\n\t\t\t} catch (exception) {\n\t\t\t\tthis.fileInfo = oldFileInfo\n\t\t\t\tshowError(t('files_versions', 'Could not restore version'))\n\t\t\t\temit('files_versions:restore:failed', version)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle label-updated event from Version.vue\n\t\t * @param {import('../utils/versions.ts').Version} version\n\t\t */\n\t\thandleLabelUpdateRequest(version) {\n\t\t\tthis.showVersionLabelForm = true\n\t\t\tthis.editedVersion = version\n\t\t},\n\n\t\t/**\n\t\t * Handle label-updated event from Version.vue\n\t\t * @param {string} newLabel\n\t\t */\n\t\tasync handleLabelUpdate(newLabel) {\n\t\t\tconst oldLabel = this.editedVersion.label\n\t\t\tthis.editedVersion.label = newLabel\n\t\t\tthis.showVersionLabelForm = false\n\n\t\t\ttry {\n\t\t\t\tawait setVersionLabel(this.editedVersion, newLabel)\n\t\t\t\tthis.editedVersion = null\n\t\t\t} catch (exception) {\n\t\t\t\tthis.editedVersion.label = oldLabel\n\t\t\t\tshowError(this.t('files_versions', 'Could not set version label'))\n\t\t\t\tlogger.error('Could not set version label', { exception })\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle deleted event from Version.vue\n\t\t *\n\t\t * @param {import('../utils/versions.ts').Version} version\n\t\t * @param {string} newName\n\t\t */\n\t\tasync handleDelete(version) {\n\t\t\tconst index = this.versions.indexOf(version)\n\t\t\tthis.versions.splice(index, 1)\n\n\t\t\ttry {\n\t\t\t\tawait deleteVersion(version)\n\t\t\t} catch (exception) {\n\t\t\t\tthis.versions.push(version)\n\t\t\t\tshowError(t('files_versions', 'Could not delete version'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.$set(this, 'versions', [])\n\t\t},\n\n\t\topenVersion({ version }) {\n\t\t\t// Open current file view instead of read only\n\t\t\tif (version.mtime === this.fileInfo.mtime) {\n\t\t\t\tOCA.Viewer.open({ fileInfo: this.viewerFileInfo })\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Versions previews are too small for our use case, so we override hasPreview and previewUrl\n\t\t\t// which makes the viewer render the original file.\n\t\t\t// We also point to the original filename if the version is the current one.\n\t\t\tconst versions = this.versions.map(version => ({\n\t\t\t\t...version,\n\t\t\t\tfilename: version.mtime === this.fileInfo.mtime ? path.join('files', getCurrentUser()?.uid ?? '', this.fileInfo.path, this.fileInfo.name) : version.filename,\n\t\t\t\thasPreview: false,\n\t\t\t\tpreviewUrl: undefined,\n\t\t\t}))\n\n\t\t\tOCA.Viewer.open({\n\t\t\t\tfileInfo: versions.find(v => v.source === version.source),\n\t\t\t\tenableSidebar: false,\n\t\t\t})\n\t\t},\n\n\t\tcompareVersion({ version }) {\n\t\t\tconst versions = this.versions.map(version => ({ ...version, hasPreview: false, previewUrl: undefined }))\n\n\t\t\tOCA.Viewer.compare(this.viewerFileInfo, versions.find(v => v.source === version.source))\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\">\n.versions-tab__container {\n\theight: 100%;\n}\n</style>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable jsdoc/require-jsdoc */\n/**\n * @copyright 2022 Louis Chemineau <mlouis@chmn.me>\n *\n * @author Louis Chemineau <mlouis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { joinPaths } from '@nextcloud/paths';\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router';\nimport moment from '@nextcloud/moment';\nimport { encodeFilePath } from '../../../files/src/utils/fileUtils.ts';\nimport client from '../utils/davClient.js';\nimport davRequest from '../utils/davRequest.js';\nimport logger from '../utils/logger.js';\nexport async function fetchVersions(fileInfo) {\n    const path = `/versions/${getCurrentUser()?.uid}/versions/${fileInfo.id}`;\n    try {\n        const response = await client.getDirectoryContents(path, {\n            data: davRequest,\n            details: true,\n        });\n        return response.data\n            // Filter out root\n            .filter(({ mime }) => mime !== '')\n            .map(version => formatVersion(version, fileInfo));\n    }\n    catch (exception) {\n        logger.error('Could not fetch version', { exception });\n        throw exception;\n    }\n}\n/**\n * Restore the given version\n */\nexport async function restoreVersion(version) {\n    try {\n        logger.debug('Restoring version', { url: version.url });\n        await client.moveFile(`/versions/${getCurrentUser()?.uid}/versions/${version.fileId}/${version.fileVersion}`, `/versions/${getCurrentUser()?.uid}/restore/target`);\n    }\n    catch (exception) {\n        logger.error('Could not restore version', { exception });\n        throw exception;\n    }\n}\n/**\n * Format version\n */\nfunction formatVersion(version, fileInfo) {\n    const mtime = moment(version.lastmod).unix() * 1000;\n    let previewUrl = '';\n    if (mtime === fileInfo.mtime) { // Version is the current one\n        previewUrl = generateUrl('/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0', {\n            fileId: fileInfo.id,\n            fileEtag: fileInfo.etag,\n        });\n    }\n    else {\n        previewUrl = generateUrl('/apps/files_versions/preview?file={file}&version={fileVersion}', {\n            file: joinPaths(fileInfo.path, fileInfo.name),\n            fileVersion: version.basename,\n        });\n    }\n    return {\n        fileId: fileInfo.id,\n        label: version.props['version-label'],\n        filename: version.filename,\n        basename: moment(mtime).format('LLL'),\n        mime: version.mime,\n        etag: `${version.props.getetag}`,\n        size: version.size,\n        type: version.type,\n        mtime,\n        permissions: 'R',\n        hasPreview: version.props['has-preview'] === 1,\n        previewUrl,\n        url: joinPaths('/remote.php/dav', version.filename),\n        source: generateRemoteUrl('dav') + encodeFilePath(version.filename),\n        fileVersion: version.basename,\n    };\n}\nexport async function setVersionLabel(version, newLabel) {\n    return await client.customRequest(version.filename, {\n        method: 'PROPPATCH',\n        data: `<?xml version=\"1.0\"?>\n\t\t\t\t\t<d:propertyupdate xmlns:d=\"DAV:\"\n\t\t\t\t\t\txmlns:oc=\"http://owncloud.org/ns\"\n\t\t\t\t\t\txmlns:nc=\"http://nextcloud.org/ns\"\n\t\t\t\t\t\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t\t\t\t\t<d:set>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t<nc:version-label>${newLabel}</nc:version-label>\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t</d:set>\n\t\t\t\t\t</d:propertyupdate>`,\n    });\n}\nexport async function deleteVersion(version) {\n    await client.deleteFile(version.filename);\n}\n","/**\n * @copyright Copyright (c) 2019 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default `<?xml version=\"1.0\"?>\n<d:propfind xmlns:d=\"DAV:\"\n\txmlns:oc=\"http://owncloud.org/ns\"\n\txmlns:nc=\"http://nextcloud.org/ns\"\n\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t<d:prop>\n\t\t<d:getcontentlength />\n\t\t<d:getcontenttype />\n\t\t<d:getlastmodified />\n\t\t<d:getetag />\n\t\t<nc:version-label />\n\t\t<nc:has-preview />\n\t</d:prop>\n</d:propfind>`\n","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VersionTab.vue?vue&type=style&index=0&id=9f52be8e&prod&lang=scss\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VersionTab.vue?vue&type=style&index=0&id=9f52be8e&prod&lang=scss\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VersionTab.vue?vue&type=template&id=9f52be8e\"\nimport script from \"./VersionTab.vue?vue&type=script&lang=js\"\nexport * from \"./VersionTab.vue?vue&type=script&lang=js\"\nimport style0 from \"./VersionTab.vue?vue&type=style&index=0&id=9f52be8e&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"versions-tab__container\"},[_c('VirtualScrolling',{attrs:{\"sections\":_vm.sections,\"header-height\":0},scopedSlots:_vm._u([{key:\"default\",fn:function({visibleSections}){return [_c('ul',{attrs:{\"data-files-versions-versions-list\":\"\"}},[(visibleSections.length === 1)?_vm._l((visibleSections[0].rows),function(row){return _c('Version',{key:row.items[0].mtime,attrs:{\"can-view\":_vm.canView,\"can-compare\":_vm.canCompare,\"load-preview\":_vm.isActive,\"version\":row.items[0],\"file-info\":_vm.fileInfo,\"is-current\":row.items[0].mtime === _vm.fileInfo.mtime,\"is-first-version\":row.items[0].mtime === _vm.initialVersionMtime},on:{\"click\":_vm.openVersion,\"compare\":_vm.compareVersion,\"restore\":_vm.handleRestore,\"label-update-request\":function($event){return _vm.handleLabelUpdateRequest(row.items[0])},\"delete\":_vm.handleDelete}})}):_vm._e()],2)]}}])},[_vm._v(\" \"),(_vm.loading)?_c('NcLoadingIcon',{staticClass:\"files-list-viewer__loader\",attrs:{\"slot\":\"loader\"},slot:\"loader\"}):_vm._e()],1),_vm._v(\" \"),(_vm.showVersionLabelForm)?_c('NcModal',{attrs:{\"title\":_vm.t('files_versions', 'Name this version')},on:{\"close\":function($event){_vm.showVersionLabelForm = false}}},[_c('VersionLabelForm',{attrs:{\"version-label\":_vm.editedVersion.label},on:{\"label-update\":_vm.handleLabelUpdate}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Carl Schwan <carl@carlschwan.eu>\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\nimport VersionTab from './views/VersionTab.vue'\nimport VTooltip from 'v-tooltip'\n// eslint-disable-next-line n/no-missing-import, import/no-unresolved\nimport BackupRestore from '@mdi/svg/svg/backup-restore.svg?raw'\n\nVue.prototype.t = t\nVue.prototype.n = n\n\nVue.use(VTooltip)\n\n// Init Sharing tab component\nconst View = Vue.extend(VersionTab)\nlet TabInstance = null\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (OCA.Files?.Sidebar === undefined) {\n\t\treturn\n\t}\n\n\tOCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({\n\t\tid: 'version_vue',\n\t\tname: t('files_versions', 'Versions'),\n\t\ticonSvg: BackupRestore,\n\n\t\tasync mount(el, fileInfo, context) {\n\t\t\tif (TabInstance) {\n\t\t\t\tTabInstance.$destroy()\n\t\t\t}\n\t\t\tTabInstance = new View({\n\t\t\t\t// Better integration with vue parent component\n\t\t\t\tparent: context,\n\t\t\t})\n\t\t\t// Only mount after we have all the info we need\n\t\t\tawait TabInstance.update(fileInfo)\n\t\t\tTabInstance.$mount(el)\n\t\t},\n\t\tupdate(fileInfo) {\n\t\t\tTabInstance.update(fileInfo)\n\t\t},\n\t\tsetIsActive(isActive) {\n\t\t\tif (!TabInstance) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tTabInstance.setIsActive(isActive)\n\t\t},\n\t\tdestroy() {\n\t\t\tTabInstance.$destroy()\n\t\t\tTabInstance = null\n\t\t},\n\t\tenabled(fileInfo) {\n\t\t\treturn !(fileInfo?.isDirectory() ?? true)\n\t\t},\n\t}))\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.version[data-v-5b3703ac]{display:flex;flex-direction:row}.version__info[data-v-5b3703ac]{display:flex;flex-direction:row;align-items:center;gap:.5rem}.version__info__size[data-v-5b3703ac]{color:var(--color-text-lighter)}.version__image[data-v-5b3703ac]{width:3rem;height:3rem;border:1px solid var(--color-border);border-radius:var(--border-radius-large);display:flex;justify-content:center;color:var(--color-text-light)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_versions/src/components/Version.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,kBAAA,CAEA,gCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,SAAA,CAEA,sCACC,+BAAA,CAIF,iCACC,UAAA,CACA,WAAA,CACA,oCAAA,CACA,wCAAA,CAGA,YAAA,CACA,sBAAA,CACA,6BAAA\",\"sourcesContent\":[\"\\n.version {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\n\\t&__info {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\talign-items: center;\\n\\t\\tgap: 0.5rem;\\n\\n\\t\\t&__size {\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t}\\n\\t}\\n\\n\\t&__image {\\n\\t\\twidth: 3rem;\\n\\t\\theight: 3rem;\\n\\t\\tborder: 1px solid var(--color-border);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\n\\t\\t// Useful to display no preview icon.\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\tcolor: var(--color-text-light);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.version-label-modal[data-v-58311f0c]{display:flex;justify-content:space-between;flex-direction:column;height:250px;padding:16px}.version-label-modal__title[data-v-58311f0c]{margin-bottom:12px;font-weight:600}.version-label-modal__info[data-v-58311f0c]{margin-top:12px;color:var(--color-text-maxcontrast)}.version-label-modal__actions[data-v-58311f0c]{display:flex;justify-content:space-between;margin-top:64px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_versions/src/components/VersionLabelForm.vue\"],\"names\":[],\"mappings\":\"AACA,sCACC,YAAA,CACA,6BAAA,CACA,qBAAA,CACA,YAAA,CACA,YAAA,CAEA,6CACC,kBAAA,CACA,eAAA,CAGD,4CACC,eAAA,CACA,mCAAA,CAGD,+CACC,YAAA,CACA,6BAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.version-label-modal {\\n\\tdisplay: flex;\\n\\tjustify-content: space-between;\\n\\tflex-direction: column;\\n\\theight: 250px;\\n\\tpadding: 16px;\\n\\n\\t&__title {\\n\\t\\tmargin-bottom: 12px;\\n\\t\\tfont-weight: 600;\\n\\t}\\n\\n\\t&__info {\\n\\t\\tmargin-top: 12px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&__actions {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: space-between;\\n\\t\\tmargin-top: 64px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.vs-container[data-v-11dbbae6]{overflow-y:scroll;height:100%}.vs-rows-container[data-v-11dbbae6]{box-sizing:border-box;will-change:scroll-position,padding;contain:layout paint style}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_versions/src/components/VirtualScrolling.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,iBAAA,CACA,WAAA,CAGD,oCACC,qBAAA,CACA,mCAAA,CACA,0BAAA\",\"sourcesContent\":[\"\\n.vs-container {\\n\\toverflow-y: scroll;\\n\\theight: 100%;\\n}\\n\\n.vs-rows-container {\\n\\tbox-sizing: border-box;\\n\\twill-change: scroll-position, padding;\\n\\tcontain: layout paint style;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.versions-tab__container{height:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_versions/src/views/VersionTab.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,WAAA\",\"sourcesContent\":[\"\\n.versions-tab__container {\\n\\theight: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","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-ps\": 20315,\n\t\"./ar-ps.js\": 20315,\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-kmr\": 90563,\n\t\"./ku-kmr.js\": 90563,\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;","import { getCurrentUser as A, onRequestTokenUpdate as ue, getRequestToken as de } from \"@nextcloud/auth\";\nimport { getLoggerBuilder as q } from \"@nextcloud/logger\";\nimport { getCanonicalLocale as ae } from \"@nextcloud/l10n\";\nimport { join as le, basename as fe, extname as ce, dirname as I } from \"path\";\nimport { encodePath as he } from \"@nextcloud/paths\";\nimport { generateRemoteUrl as pe } from \"@nextcloud/router\";\nimport { createClient as ge, getPatcher as we } from \"webdav\";\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 */\nconst me = (e) => e === null ? q().setApp(\"files\").build() : q().setApp(\"files\").setUid(e.uid).build(), m = me(A());\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 */\nclass Ne {\n  _entries = [];\n  registerEntry(t) {\n    this.validateEntry(t), this._entries.push(t);\n  }\n  unregisterEntry(t) {\n    const r = typeof t == \"string\" ? this.getEntryIndex(t) : this.getEntryIndex(t.id);\n    if (r === -1) {\n      m.warn(\"Entry not found, nothing removed\", { entry: t, entries: this.getEntries() });\n      return;\n    }\n    this._entries.splice(r, 1);\n  }\n  /**\n   * Get the list of registered entries\n   *\n   * @param {Folder} context the creation context. Usually the current folder\n   */\n  getEntries(t) {\n    return t ? this._entries.filter((r) => typeof r.enabled == \"function\" ? r.enabled(t) : !0) : this._entries;\n  }\n  getEntryIndex(t) {\n    return this._entries.findIndex((r) => r.id === t);\n  }\n  validateEntry(t) {\n    if (!t.id || !t.displayName || !(t.iconSvgInline || t.iconClass) || !t.handler)\n      throw new Error(\"Invalid entry\");\n    if (typeof t.id != \"string\" || typeof t.displayName != \"string\")\n      throw new Error(\"Invalid id or displayName property\");\n    if (t.iconClass && typeof t.iconClass != \"string\" || t.iconSvgInline && typeof t.iconSvgInline != \"string\")\n      throw new Error(\"Invalid icon provided\");\n    if (t.enabled !== void 0 && typeof t.enabled != \"function\")\n      throw new Error(\"Invalid enabled property\");\n    if (typeof t.handler != \"function\")\n      throw new Error(\"Invalid handler property\");\n    if (\"order\" in t && typeof t.order != \"number\")\n      throw new Error(\"Invalid order property\");\n    if (this.getEntryIndex(t.id) !== -1)\n      throw new Error(\"Duplicate entry\");\n  }\n}\nconst F = function() {\n  return typeof window._nc_newfilemenu > \"u\" && (window._nc_newfilemenu = new Ne(), m.debug(\"NewFileMenu initialized\")), window._nc_newfilemenu;\n};\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 */\nconst C = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"], P = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction Yt(e, t = !1, r = !1, s = !1) {\n  r = r && !s, typeof e == \"string\" && (e = Number(e));\n  let n = e > 0 ? Math.floor(Math.log(e) / Math.log(s ? 1e3 : 1024)) : 0;\n  n = Math.min((r ? P.length : C.length) - 1, n);\n  const i = r ? P[n] : C[n];\n  let d = (e / Math.pow(s ? 1e3 : 1024, n)).toFixed(1);\n  return t === !0 && n === 0 ? (d !== \"0.0\" ? \"< 1 \" : \"0 \") + (r ? P[1] : C[1]) : (n < 2 ? d = parseFloat(d).toFixed(0) : d = parseFloat(d).toLocaleString(ae()), d + \" \" + i);\n}\nfunction Jt(e, t = !1) {\n  try {\n    e = `${e}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n  } catch {\n    return null;\n  }\n  const r = e.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n  if (r === null || r[1] === \".\" || r[1] === \"\")\n    return null;\n  const s = {\n    \"\": 0,\n    k: 1,\n    m: 2,\n    g: 3,\n    t: 4,\n    p: 5,\n    e: 6\n  }, n = `${r[1]}`, i = r[4] === \"i\" || t ? 1024 : 1e3;\n  return Math.round(Number.parseFloat(n) * i ** s[r[3]]);\n}\n/**\n * @copyright Copyright (c) 2023 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 */\nvar Z = /* @__PURE__ */ ((e) => (e.DEFAULT = \"default\", e.HIDDEN = \"hidden\", e))(Z || {});\nclass Qt {\n  _action;\n  constructor(t) {\n    this.validateAction(t), this._action = t;\n  }\n  get id() {\n    return this._action.id;\n  }\n  get displayName() {\n    return this._action.displayName;\n  }\n  get title() {\n    return this._action.title;\n  }\n  get iconSvgInline() {\n    return this._action.iconSvgInline;\n  }\n  get enabled() {\n    return this._action.enabled;\n  }\n  get exec() {\n    return this._action.exec;\n  }\n  get execBatch() {\n    return this._action.execBatch;\n  }\n  get order() {\n    return this._action.order;\n  }\n  get parent() {\n    return this._action.parent;\n  }\n  get default() {\n    return this._action.default;\n  }\n  get inline() {\n    return this._action.inline;\n  }\n  get renderInline() {\n    return this._action.renderInline;\n  }\n  validateAction(t) {\n    if (!t.id || typeof t.id != \"string\")\n      throw new Error(\"Invalid id\");\n    if (!t.displayName || typeof t.displayName != \"function\")\n      throw new Error(\"Invalid displayName function\");\n    if (\"title\" in t && typeof t.title != \"function\")\n      throw new Error(\"Invalid title function\");\n    if (!t.iconSvgInline || typeof t.iconSvgInline != \"function\")\n      throw new Error(\"Invalid iconSvgInline function\");\n    if (!t.exec || typeof t.exec != \"function\")\n      throw new Error(\"Invalid exec function\");\n    if (\"enabled\" in t && typeof t.enabled != \"function\")\n      throw new Error(\"Invalid enabled function\");\n    if (\"execBatch\" in t && typeof t.execBatch != \"function\")\n      throw new Error(\"Invalid execBatch function\");\n    if (\"order\" in t && typeof t.order != \"number\")\n      throw new Error(\"Invalid order\");\n    if (\"parent\" in t && typeof t.parent != \"string\")\n      throw new Error(\"Invalid parent\");\n    if (t.default && !Object.values(Z).includes(t.default))\n      throw new Error(\"Invalid default\");\n    if (\"inline\" in t && typeof t.inline != \"function\")\n      throw new Error(\"Invalid inline function\");\n    if (\"renderInline\" in t && typeof t.renderInline != \"function\")\n      throw new Error(\"Invalid renderInline function\");\n  }\n}\nconst Dt = function(e) {\n  if (typeof window._nc_fileactions > \"u\" && (window._nc_fileactions = [], m.debug(\"FileActions initialized\")), window._nc_fileactions.find((t) => t.id === e.id)) {\n    m.error(`FileAction ${e.id} already registered`, { action: e });\n    return;\n  }\n  window._nc_fileactions.push(e);\n}, er = function() {\n  return typeof window._nc_fileactions > \"u\" && (window._nc_fileactions = [], m.debug(\"FileActions initialized\")), window._nc_fileactions;\n};\n/**\n * @copyright Copyright (c) 2023 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 */\nclass tr {\n  _header;\n  constructor(t) {\n    this.validateHeader(t), this._header = t;\n  }\n  get id() {\n    return this._header.id;\n  }\n  get order() {\n    return this._header.order;\n  }\n  get enabled() {\n    return this._header.enabled;\n  }\n  get render() {\n    return this._header.render;\n  }\n  get updated() {\n    return this._header.updated;\n  }\n  validateHeader(t) {\n    if (!t.id || !t.render || !t.updated)\n      throw new Error(\"Invalid header: id, render and updated are required\");\n    if (typeof t.id != \"string\")\n      throw new Error(\"Invalid id property\");\n    if (t.enabled !== void 0 && typeof t.enabled != \"function\")\n      throw new Error(\"Invalid enabled property\");\n    if (t.render && typeof t.render != \"function\")\n      throw new Error(\"Invalid render property\");\n    if (t.updated && typeof t.updated != \"function\")\n      throw new Error(\"Invalid updated property\");\n  }\n}\nconst rr = function(e) {\n  if (typeof window._nc_filelistheader > \"u\" && (window._nc_filelistheader = [], m.debug(\"FileListHeaders initialized\")), window._nc_filelistheader.find((t) => t.id === e.id)) {\n    m.error(`Header ${e.id} already registered`, { header: e });\n    return;\n  }\n  window._nc_filelistheader.push(e);\n}, nr = function() {\n  return typeof window._nc_filelistheader > \"u\" && (window._nc_filelistheader = [], m.debug(\"FileListHeaders initialized\")), window._nc_filelistheader;\n};\n/**\n * @copyright Copyright (c) 2022 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 */\nvar N = /* @__PURE__ */ ((e) => (e[e.NONE = 0] = \"NONE\", e[e.CREATE = 4] = \"CREATE\", e[e.READ = 1] = \"READ\", e[e.UPDATE = 2] = \"UPDATE\", e[e.DELETE = 8] = \"DELETE\", e[e.SHARE = 16] = \"SHARE\", e[e.ALL = 31] = \"ALL\", e))(N || {});\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\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 */\nconst j = [\n  \"d:getcontentlength\",\n  \"d:getcontenttype\",\n  \"d:getetag\",\n  \"d:getlastmodified\",\n  \"d:quota-available-bytes\",\n  \"d:resourcetype\",\n  \"nc:has-preview\",\n  \"nc:is-encrypted\",\n  \"nc:mount-type\",\n  \"nc:share-attributes\",\n  \"oc:comments-unread\",\n  \"oc:favorite\",\n  \"oc:fileid\",\n  \"oc:owner-display-name\",\n  \"oc:owner-id\",\n  \"oc:permissions\",\n  \"oc:share-types\",\n  \"oc:size\",\n  \"ocs:share-permissions\"\n], Y = {\n  d: \"DAV:\",\n  nc: \"http://nextcloud.org/ns\",\n  oc: \"http://owncloud.org/ns\",\n  ocs: \"http://open-collaboration-services.org/ns\"\n}, ir = function(e, t = { nc: \"http://nextcloud.org/ns\" }) {\n  typeof window._nc_dav_properties > \"u\" && (window._nc_dav_properties = [...j], window._nc_dav_namespaces = { ...Y });\n  const r = { ...window._nc_dav_namespaces, ...t };\n  if (window._nc_dav_properties.find((n) => n === e))\n    return m.error(`${e} already registered`, { prop: e }), !1;\n  if (e.startsWith(\"<\") || e.split(\":\").length !== 2)\n    return m.error(`${e} is not valid. See example: 'oc:fileid'`, { prop: e }), !1;\n  const s = e.split(\":\")[0];\n  return r[s] ? (window._nc_dav_properties.push(e), window._nc_dav_namespaces = r, !0) : (m.error(`${e} namespace unknown`, { prop: e, namespaces: r }), !1);\n}, V = function() {\n  return typeof window._nc_dav_properties > \"u\" && (window._nc_dav_properties = [...j]), window._nc_dav_properties.map((e) => `<${e} />`).join(\" \");\n}, L = function() {\n  return typeof window._nc_dav_namespaces > \"u\" && (window._nc_dav_namespaces = { ...Y }), Object.keys(window._nc_dav_namespaces).map((e) => `xmlns:${e}=\"${window._nc_dav_namespaces?.[e]}\"`).join(\" \");\n}, sr = function() {\n  return `<?xml version=\"1.0\"?>\n\t\t<d:propfind ${L()}>\n\t\t\t<d:prop>\n\t\t\t\t${V()}\n\t\t\t</d:prop>\n\t\t</d:propfind>`;\n}, Ee = function() {\n  return `<?xml version=\"1.0\"?>\n\t\t<oc:filter-files ${L()}>\n\t\t\t<d:prop>\n\t\t\t\t${V()}\n\t\t\t</d:prop>\n\t\t\t<oc:filter-rules>\n\t\t\t\t<oc:favorite>1</oc:favorite>\n\t\t\t</oc:filter-rules>\n\t\t</oc:filter-files>`;\n}, or = function(e) {\n  return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<d:searchrequest ${L()}\n\txmlns:ns=\"https://github.com/icewind1991/SearchDAV/ns\">\n\t<d:basicsearch>\n\t\t<d:select>\n\t\t\t<d:prop>\n\t\t\t\t${V()}\n\t\t\t</d:prop>\n\t\t</d:select>\n\t\t<d:from>\n\t\t\t<d:scope>\n\t\t\t\t<d:href>/files/${A()?.uid}/</d:href>\n\t\t\t\t<d:depth>infinity</d:depth>\n\t\t\t</d:scope>\n\t\t</d:from>\n\t\t<d:where>\n\t\t\t<d:and>\n\t\t\t\t<d:or>\n\t\t\t\t\t<d:not>\n\t\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t\t<d:getcontenttype/>\n\t\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t\t<d:literal>httpd/unix-directory</d:literal>\n\t\t\t\t\t\t</d:eq>\n\t\t\t\t\t</d:not>\n\t\t\t\t\t<d:eq>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t<oc:size/>\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t<d:literal>0</d:literal>\n\t\t\t\t\t</d:eq>\n\t\t\t\t</d:or>\n\t\t\t\t<d:gt>\n\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t\t</d:prop>\n\t\t\t\t\t<d:literal>${e}</d:literal>\n\t\t\t\t</d:gt>\n\t\t\t</d:and>\n\t\t</d:where>\n\t\t<d:orderby>\n\t\t\t<d:order>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<d:getlastmodified/>\n\t\t\t\t</d:prop>\n\t\t\t\t<d:descending/>\n\t\t\t</d:order>\n\t\t</d:orderby>\n\t\t<d:limit>\n\t\t\t<d:nresults>100</d:nresults>\n\t\t\t<ns:firstresult>0</ns:firstresult>\n\t\t</d:limit>\n\t</d:basicsearch>\n</d:searchrequest>`;\n};\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\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 */\nconst be = function(e = \"\") {\n  let t = N.NONE;\n  return e && ((e.includes(\"C\") || e.includes(\"K\")) && (t |= N.CREATE), e.includes(\"G\") && (t |= N.READ), (e.includes(\"W\") || e.includes(\"N\") || e.includes(\"V\")) && (t |= N.UPDATE), e.includes(\"D\") && (t |= N.DELETE), e.includes(\"R\") && (t |= N.SHARE)), t;\n};\n/**\n * @copyright Copyright (c) 2022 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 */\nvar R = /* @__PURE__ */ ((e) => (e.Folder = \"folder\", e.File = \"file\", e))(R || {});\n/**\n * @copyright Copyright (c) 2022 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 */\nconst J = function(e, t) {\n  return e.match(t) !== null;\n}, X = (e, t) => {\n  if (e.id && typeof e.id != \"number\")\n    throw new Error(\"Invalid id type of value\");\n  if (!e.source)\n    throw new Error(\"Missing mandatory source\");\n  try {\n    new URL(e.source);\n  } catch {\n    throw new Error(\"Invalid source format, source must be a valid URL\");\n  }\n  if (!e.source.startsWith(\"http\"))\n    throw new Error(\"Invalid source format, only http(s) is supported\");\n  if (e.mtime && !(e.mtime instanceof Date))\n    throw new Error(\"Invalid mtime type\");\n  if (e.crtime && !(e.crtime instanceof Date))\n    throw new Error(\"Invalid crtime type\");\n  if (!e.mime || typeof e.mime != \"string\" || !e.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi))\n    throw new Error(\"Missing or invalid mandatory mime\");\n  if (\"size\" in e && typeof e.size != \"number\" && e.size !== void 0)\n    throw new Error(\"Invalid size type\");\n  if (\"permissions\" in e && e.permissions !== void 0 && !(typeof e.permissions == \"number\" && e.permissions >= N.NONE && e.permissions <= N.ALL))\n    throw new Error(\"Invalid permissions\");\n  if (e.owner && e.owner !== null && typeof e.owner != \"string\")\n    throw new Error(\"Invalid owner type\");\n  if (e.attributes && typeof e.attributes != \"object\")\n    throw new Error(\"Invalid attributes type\");\n  if (e.root && typeof e.root != \"string\")\n    throw new Error(\"Invalid root type\");\n  if (e.root && !e.root.startsWith(\"/\"))\n    throw new Error(\"Root must start with a leading slash\");\n  if (e.root && !e.source.includes(e.root))\n    throw new Error(\"Root must be part of the source\");\n  if (e.root && J(e.source, t)) {\n    const r = e.source.match(t)[0];\n    if (!e.source.includes(le(r, e.root)))\n      throw new Error(\"The root must be relative to the service. e.g /files/emma\");\n  }\n  if (e.status && !Object.values(Q).includes(e.status))\n    throw new Error(\"Status must be a valid NodeStatus\");\n};\n/**\n * @copyright Copyright (c) 2022 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 */\nvar Q = /* @__PURE__ */ ((e) => (e.NEW = \"new\", e.FAILED = \"failed\", e.LOADING = \"loading\", e.LOCKED = \"locked\", e))(Q || {});\nclass D {\n  _data;\n  _attributes;\n  _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n  constructor(t, r) {\n    X(t, r || this._knownDavService), this._data = t;\n    const s = {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      set: (n, i, d) => (this.updateMtime(), Reflect.set(n, i, d)),\n      deleteProperty: (n, i) => (this.updateMtime(), Reflect.deleteProperty(n, i))\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    };\n    this._attributes = new Proxy(t.attributes || {}, s), delete this._data.attributes, r && (this._knownDavService = r);\n  }\n  /**\n   * Get the source url to this object\n   */\n  get source() {\n    return this._data.source.replace(/\\/$/i, \"\");\n  }\n  /**\n   * Get the encoded source url to this object for requests purposes\n   */\n  get encodedSource() {\n    const { origin: t } = new URL(this.source);\n    return t + he(this.source.slice(t.length));\n  }\n  /**\n   * Get this object name\n   */\n  get basename() {\n    return fe(this.source);\n  }\n  /**\n   * Get this object's extension\n   */\n  get extension() {\n    return ce(this.source);\n  }\n  /**\n   * Get the directory path leading to this object\n   * Will use the relative path to root if available\n   */\n  get dirname() {\n    if (this.root) {\n      let r = this.source;\n      this.isDavRessource && (r = r.split(this._knownDavService).pop());\n      const s = r.indexOf(this.root), n = this.root.replace(/\\/$/, \"\");\n      return I(r.slice(s + n.length) || \"/\");\n    }\n    const t = new URL(this.source);\n    return I(t.pathname);\n  }\n  /**\n   * Get the file mime\n   */\n  get mime() {\n    return this._data.mime;\n  }\n  /**\n   * Get the file modification time\n   */\n  get mtime() {\n    return this._data.mtime;\n  }\n  /**\n   * Get the file creation time\n   */\n  get crtime() {\n    return this._data.crtime;\n  }\n  /**\n   * Get the file size\n   */\n  get size() {\n    return this._data.size;\n  }\n  /**\n   * Get the file attribute\n   */\n  get attributes() {\n    return this._attributes;\n  }\n  /**\n   * Get the file permissions\n   */\n  get permissions() {\n    return this.owner === null && !this.isDavRessource ? N.READ : this._data.permissions !== void 0 ? this._data.permissions : N.NONE;\n  }\n  /**\n   * Get the file owner\n   */\n  get owner() {\n    return this.isDavRessource ? this._data.owner : null;\n  }\n  /**\n   * Is this a dav-related ressource ?\n   */\n  get isDavRessource() {\n    return J(this.source, this._knownDavService);\n  }\n  /**\n   * Get the dav root of this object\n   */\n  get root() {\n    return this._data.root ? this._data.root.replace(/^(.+)\\/$/, \"$1\") : this.isDavRessource && I(this.source).split(this._knownDavService).pop() || null;\n  }\n  /**\n   * Get the absolute path of this object relative to the root\n   */\n  get path() {\n    if (this.root) {\n      let t = this.source;\n      this.isDavRessource && (t = t.split(this._knownDavService).pop());\n      const r = t.indexOf(this.root), s = this.root.replace(/\\/$/, \"\");\n      return t.slice(r + s.length) || \"/\";\n    }\n    return (this.dirname + \"/\" + this.basename).replace(/\\/\\//g, \"/\");\n  }\n  /**\n   * Get the node id if defined.\n   * Will look for the fileid in attributes if undefined.\n   */\n  get fileid() {\n    return this._data?.id || this.attributes?.fileid;\n  }\n  /**\n   * Get the node status.\n   */\n  get status() {\n    return this._data?.status;\n  }\n  /**\n   * Set the node status.\n   */\n  set status(t) {\n    this._data.status = t;\n  }\n  /**\n   * Move the node to a new destination\n   *\n   * @param {string} destination the new source.\n   * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n   */\n  move(t) {\n    X({ ...this._data, source: t }, this._knownDavService), this._data.source = t, this.updateMtime();\n  }\n  /**\n   * Rename the node\n   * This aliases the move method for easier usage\n   *\n   * @param basename The new name of the node\n   */\n  rename(t) {\n    if (t.includes(\"/\"))\n      throw new Error(\"Invalid basename\");\n    this.move(I(this.source) + \"/\" + t);\n  }\n  /**\n   * Update the mtime if exists.\n   */\n  updateMtime() {\n    this._data.mtime && (this._data.mtime = /* @__PURE__ */ new Date());\n  }\n}\n/**\n * @copyright Copyright (c) 2022 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 */\nclass ye extends D {\n  get type() {\n    return R.File;\n  }\n}\n/**\n * @copyright Copyright (c) 2022 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 */\nclass _e extends D {\n  constructor(t) {\n    super({\n      ...t,\n      mime: \"httpd/unix-directory\"\n    });\n  }\n  get type() {\n    return R.Folder;\n  }\n  get extension() {\n    return null;\n  }\n  get mime() {\n    return \"httpd/unix-directory\";\n  }\n}\n/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Ferdinand Thiessen <opensource@fthiessen.de>\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 */\nconst ee = `/files/${A()?.uid}`, te = pe(\"dav\"), ur = function(e = te, t = {}) {\n  const r = ge(e, { headers: t });\n  function s(i) {\n    r.setHeaders({\n      ...t,\n      // Add this so the server knows it is an request from the browser\n      \"X-Requested-With\": \"XMLHttpRequest\",\n      // Inject user auth\n      requesttoken: i ?? \"\"\n    });\n  }\n  return ue(s), s(de()), we().patch(\"fetch\", (i, d) => {\n    const u = d.headers;\n    return u?.method && (d.method = u.method, delete u.method), fetch(i, d);\n  }), r;\n}, dr = async (e, t = \"/\", r = ee) => (await e.getDirectoryContents(`${r}${t}`, {\n  details: !0,\n  data: Ee(),\n  headers: {\n    // see davGetClient for patched webdav client\n    method: \"REPORT\"\n  },\n  includeSelf: !0\n})).data.filter((n) => n.filename !== t).map((n) => ve(n, r)), ve = function(e, t = ee, r = te) {\n  const s = e.props, n = be(s?.permissions), i = s?.[\"owner-id\"] || A()?.uid, d = {\n    id: s?.fileid || 0,\n    source: `${r}${e.filename}`,\n    mtime: new Date(Date.parse(e.lastmod)),\n    mime: e.mime,\n    size: s?.size || Number.parseInt(s.getcontentlength || \"0\"),\n    permissions: n,\n    owner: i,\n    root: t,\n    attributes: {\n      ...e,\n      ...s,\n      hasPreview: s?.[\"has-preview\"]\n    }\n  };\n  return delete d.attributes?.props, e.type === \"file\" ? new ye(d) : new _e(d);\n};\n/**\n * @copyright Copyright (c) 2022 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 */\nclass Te {\n  _views = [];\n  _currentView = null;\n  register(t) {\n    if (this._views.find((r) => r.id === t.id))\n      throw new Error(`View id ${t.id} is already registered`);\n    this._views.push(t);\n  }\n  remove(t) {\n    const r = this._views.findIndex((s) => s.id === t);\n    r !== -1 && this._views.splice(r, 1);\n  }\n  get views() {\n    return this._views;\n  }\n  setActive(t) {\n    this._currentView = t;\n  }\n  get active() {\n    return this._currentView;\n  }\n}\nconst ar = function() {\n  return typeof window._nc_navigation > \"u\" && (window._nc_navigation = new Te(), m.debug(\"Navigation service initialized\")), window._nc_navigation;\n};\n/**\n * @copyright Copyright (c) 2022 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 */\nclass Ie {\n  _column;\n  constructor(t) {\n    Ae(t), this._column = t;\n  }\n  get id() {\n    return this._column.id;\n  }\n  get title() {\n    return this._column.title;\n  }\n  get render() {\n    return this._column.render;\n  }\n  get sort() {\n    return this._column.sort;\n  }\n  get summary() {\n    return this._column.summary;\n  }\n}\nconst Ae = function(e) {\n  if (!e.id || typeof e.id != \"string\")\n    throw new Error(\"A column id is required\");\n  if (!e.title || typeof e.title != \"string\")\n    throw new Error(\"A column title is required\");\n  if (!e.render || typeof e.render != \"function\")\n    throw new Error(\"A render function is required\");\n  if (e.sort && typeof e.sort != \"function\")\n    throw new Error(\"Column sortFunction must be a function\");\n  if (e.summary && typeof e.summary != \"function\")\n    throw new Error(\"Column summary must be a function\");\n  return !0;\n};\nvar S = {}, O = {};\n(function(e) {\n  const t = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\", r = t + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\", s = \"[\" + t + \"][\" + r + \"]*\", n = new RegExp(\"^\" + s + \"$\"), i = function(u, o) {\n    const a = [];\n    let l = o.exec(u);\n    for (; l; ) {\n      const f = [];\n      f.startIndex = o.lastIndex - l[0].length;\n      const c = l.length;\n      for (let g = 0; g < c; g++)\n        f.push(l[g]);\n      a.push(f), l = o.exec(u);\n    }\n    return a;\n  }, d = function(u) {\n    const o = n.exec(u);\n    return !(o === null || typeof o > \"u\");\n  };\n  e.isExist = function(u) {\n    return typeof u < \"u\";\n  }, e.isEmptyObject = function(u) {\n    return Object.keys(u).length === 0;\n  }, e.merge = function(u, o, a) {\n    if (o) {\n      const l = Object.keys(o), f = l.length;\n      for (let c = 0; c < f; c++)\n        a === \"strict\" ? u[l[c]] = [o[l[c]]] : u[l[c]] = o[l[c]];\n    }\n  }, e.getValue = function(u) {\n    return e.isExist(u) ? u : \"\";\n  }, e.isName = d, e.getAllMatches = i, e.nameRegexp = s;\n})(O);\nconst M = O, Oe = {\n  allowBooleanAttributes: !1,\n  //A tag can have attributes without any value\n  unpairedTags: []\n};\nS.validate = function(e, t) {\n  t = Object.assign({}, Oe, t);\n  const r = [];\n  let s = !1, n = !1;\n  e[0] === \"\\uFEFF\" && (e = e.substr(1));\n  for (let i = 0; i < e.length; i++)\n    if (e[i] === \"<\" && e[i + 1] === \"?\") {\n      if (i += 2, i = G(e, i), i.err)\n        return i;\n    } else if (e[i] === \"<\") {\n      let d = i;\n      if (i++, e[i] === \"!\") {\n        i = z(e, i);\n        continue;\n      } else {\n        let u = !1;\n        e[i] === \"/\" && (u = !0, i++);\n        let o = \"\";\n        for (; i < e.length && e[i] !== \">\" && e[i] !== \" \" && e[i] !== \"\t\" && e[i] !== `\n` && e[i] !== \"\\r\"; i++)\n          o += e[i];\n        if (o = o.trim(), o[o.length - 1] === \"/\" && (o = o.substring(0, o.length - 1), i--), !Re(o)) {\n          let f;\n          return o.trim().length === 0 ? f = \"Invalid space after '<'.\" : f = \"Tag '\" + o + \"' is an invalid name.\", p(\"InvalidTag\", f, w(e, i));\n        }\n        const a = xe(e, i);\n        if (a === !1)\n          return p(\"InvalidAttr\", \"Attributes for '\" + o + \"' have open quote.\", w(e, i));\n        let l = a.value;\n        if (i = a.index, l[l.length - 1] === \"/\") {\n          const f = i - l.length;\n          l = l.substring(0, l.length - 1);\n          const c = H(l, t);\n          if (c === !0)\n            s = !0;\n          else\n            return p(c.err.code, c.err.msg, w(e, f + c.err.line));\n        } else if (u)\n          if (a.tagClosed) {\n            if (l.trim().length > 0)\n              return p(\"InvalidTag\", \"Closing tag '\" + o + \"' can't have attributes or invalid starting.\", w(e, d));\n            {\n              const f = r.pop();\n              if (o !== f.tagName) {\n                let c = w(e, f.tagStartPos);\n                return p(\n                  \"InvalidTag\",\n                  \"Expected closing tag '\" + f.tagName + \"' (opened in line \" + c.line + \", col \" + c.col + \") instead of closing tag '\" + o + \"'.\",\n                  w(e, d)\n                );\n              }\n              r.length == 0 && (n = !0);\n            }\n          } else\n            return p(\"InvalidTag\", \"Closing tag '\" + o + \"' doesn't have proper closing.\", w(e, i));\n        else {\n          const f = H(l, t);\n          if (f !== !0)\n            return p(f.err.code, f.err.msg, w(e, i - l.length + f.err.line));\n          if (n === !0)\n            return p(\"InvalidXml\", \"Multiple possible root nodes found.\", w(e, i));\n          t.unpairedTags.indexOf(o) !== -1 || r.push({ tagName: o, tagStartPos: d }), s = !0;\n        }\n        for (i++; i < e.length; i++)\n          if (e[i] === \"<\")\n            if (e[i + 1] === \"!\") {\n              i++, i = z(e, i);\n              continue;\n            } else if (e[i + 1] === \"?\") {\n              if (i = G(e, ++i), i.err)\n                return i;\n            } else\n              break;\n          else if (e[i] === \"&\") {\n            const f = Ve(e, i);\n            if (f == -1)\n              return p(\"InvalidChar\", \"char '&' is not expected.\", w(e, i));\n            i = f;\n          } else if (n === !0 && !U(e[i]))\n            return p(\"InvalidXml\", \"Extra text at the end\", w(e, i));\n        e[i] === \"<\" && i--;\n      }\n    } else {\n      if (U(e[i]))\n        continue;\n      return p(\"InvalidChar\", \"char '\" + e[i] + \"' is not expected.\", w(e, i));\n    }\n  if (s) {\n    if (r.length == 1)\n      return p(\"InvalidTag\", \"Unclosed tag '\" + r[0].tagName + \"'.\", w(e, r[0].tagStartPos));\n    if (r.length > 0)\n      return p(\"InvalidXml\", \"Invalid '\" + JSON.stringify(r.map((i) => i.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n  } else\n    return p(\"InvalidXml\", \"Start tag expected.\", 1);\n  return !0;\n};\nfunction U(e) {\n  return e === \" \" || e === \"\t\" || e === `\n` || e === \"\\r\";\n}\nfunction G(e, t) {\n  const r = t;\n  for (; t < e.length; t++)\n    if (e[t] == \"?\" || e[t] == \" \") {\n      const s = e.substr(r, t - r);\n      if (t > 5 && s === \"xml\")\n        return p(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", w(e, t));\n      if (e[t] == \"?\" && e[t + 1] == \">\") {\n        t++;\n        break;\n      } else\n        continue;\n    }\n  return t;\n}\nfunction z(e, t) {\n  if (e.length > t + 5 && e[t + 1] === \"-\" && e[t + 2] === \"-\") {\n    for (t += 3; t < e.length; t++)\n      if (e[t] === \"-\" && e[t + 1] === \"-\" && e[t + 2] === \">\") {\n        t += 2;\n        break;\n      }\n  } else if (e.length > t + 8 && e[t + 1] === \"D\" && e[t + 2] === \"O\" && e[t + 3] === \"C\" && e[t + 4] === \"T\" && e[t + 5] === \"Y\" && e[t + 6] === \"P\" && e[t + 7] === \"E\") {\n    let r = 1;\n    for (t += 8; t < e.length; t++)\n      if (e[t] === \"<\")\n        r++;\n      else if (e[t] === \">\" && (r--, r === 0))\n        break;\n  } else if (e.length > t + 9 && e[t + 1] === \"[\" && e[t + 2] === \"C\" && e[t + 3] === \"D\" && e[t + 4] === \"A\" && e[t + 5] === \"T\" && e[t + 6] === \"A\" && e[t + 7] === \"[\") {\n    for (t += 8; t < e.length; t++)\n      if (e[t] === \"]\" && e[t + 1] === \"]\" && e[t + 2] === \">\") {\n        t += 2;\n        break;\n      }\n  }\n  return t;\n}\nconst Ce = '\"', Pe = \"'\";\nfunction xe(e, t) {\n  let r = \"\", s = \"\", n = !1;\n  for (; t < e.length; t++) {\n    if (e[t] === Ce || e[t] === Pe)\n      s === \"\" ? s = e[t] : s !== e[t] || (s = \"\");\n    else if (e[t] === \">\" && s === \"\") {\n      n = !0;\n      break;\n    }\n    r += e[t];\n  }\n  return s !== \"\" ? !1 : {\n    value: r,\n    index: t,\n    tagClosed: n\n  };\n}\nconst $e = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\nfunction H(e, t) {\n  const r = M.getAllMatches(e, $e), s = {};\n  for (let n = 0; n < r.length; n++) {\n    if (r[n][1].length === 0)\n      return p(\"InvalidAttr\", \"Attribute '\" + r[n][2] + \"' has no space in starting.\", v(r[n]));\n    if (r[n][3] !== void 0 && r[n][4] === void 0)\n      return p(\"InvalidAttr\", \"Attribute '\" + r[n][2] + \"' is without value.\", v(r[n]));\n    if (r[n][3] === void 0 && !t.allowBooleanAttributes)\n      return p(\"InvalidAttr\", \"boolean attribute '\" + r[n][2] + \"' is not allowed.\", v(r[n]));\n    const i = r[n][2];\n    if (!Le(i))\n      return p(\"InvalidAttr\", \"Attribute '\" + i + \"' is an invalid name.\", v(r[n]));\n    if (!s.hasOwnProperty(i))\n      s[i] = 1;\n    else\n      return p(\"InvalidAttr\", \"Attribute '\" + i + \"' is repeated.\", v(r[n]));\n  }\n  return !0;\n}\nfunction Fe(e, t) {\n  let r = /\\d/;\n  for (e[t] === \"x\" && (t++, r = /[\\da-fA-F]/); t < e.length; t++) {\n    if (e[t] === \";\")\n      return t;\n    if (!e[t].match(r))\n      break;\n  }\n  return -1;\n}\nfunction Ve(e, t) {\n  if (t++, e[t] === \";\")\n    return -1;\n  if (e[t] === \"#\")\n    return t++, Fe(e, t);\n  let r = 0;\n  for (; t < e.length; t++, r++)\n    if (!(e[t].match(/\\w/) && r < 20)) {\n      if (e[t] === \";\")\n        break;\n      return -1;\n    }\n  return t;\n}\nfunction p(e, t, r) {\n  return {\n    err: {\n      code: e,\n      msg: t,\n      line: r.line || r,\n      col: r.col\n    }\n  };\n}\nfunction Le(e) {\n  return M.isName(e);\n}\nfunction Re(e) {\n  return M.isName(e);\n}\nfunction w(e, t) {\n  const r = e.substring(0, t).split(/\\r?\\n/);\n  return {\n    line: r.length,\n    // column number is last line's length + 1, because column numbering starts at 1:\n    col: r[r.length - 1].length + 1\n  };\n}\nfunction v(e) {\n  return e.startIndex + e[1].length;\n}\nvar k = {};\nconst re = {\n  preserveOrder: !1,\n  attributeNamePrefix: \"@_\",\n  attributesGroupName: !1,\n  textNodeName: \"#text\",\n  ignoreAttributes: !0,\n  removeNSPrefix: !1,\n  // remove NS from tag name or attribute name if true\n  allowBooleanAttributes: !1,\n  //a tag can have attributes without any value\n  //ignoreRootElement : false,\n  parseTagValue: !0,\n  parseAttributeValue: !1,\n  trimValues: !0,\n  //Trim string values of tag and attributes\n  cdataPropName: !1,\n  numberParseOptions: {\n    hex: !0,\n    leadingZeros: !0,\n    eNotation: !0\n  },\n  tagValueProcessor: function(e, t) {\n    return t;\n  },\n  attributeValueProcessor: function(e, t) {\n    return t;\n  },\n  stopNodes: [],\n  //nested tags will not be parsed even for errors\n  alwaysCreateTextNode: !1,\n  isArray: () => !1,\n  commentPropName: !1,\n  unpairedTags: [],\n  processEntities: !0,\n  htmlEntities: !1,\n  ignoreDeclaration: !1,\n  ignorePiTags: !1,\n  transformTagName: !1,\n  transformAttributeName: !1,\n  updateTag: function(e, t, r) {\n    return e;\n  }\n  // skipEmptyListItem: false\n}, Se = function(e) {\n  return Object.assign({}, re, e);\n};\nk.buildOptions = Se;\nk.defaultOptions = re;\nclass Me {\n  constructor(t) {\n    this.tagname = t, this.child = [], this[\":@\"] = {};\n  }\n  add(t, r) {\n    t === \"__proto__\" && (t = \"#__proto__\"), this.child.push({ [t]: r });\n  }\n  addChild(t) {\n    t.tagname === \"__proto__\" && (t.tagname = \"#__proto__\"), t[\":@\"] && Object.keys(t[\":@\"]).length > 0 ? this.child.push({ [t.tagname]: t.child, \":@\": t[\":@\"] }) : this.child.push({ [t.tagname]: t.child });\n  }\n}\nvar ke = Me;\nconst Be = O;\nfunction qe(e, t) {\n  const r = {};\n  if (e[t + 3] === \"O\" && e[t + 4] === \"C\" && e[t + 5] === \"T\" && e[t + 6] === \"Y\" && e[t + 7] === \"P\" && e[t + 8] === \"E\") {\n    t = t + 9;\n    let s = 1, n = !1, i = !1, d = \"\";\n    for (; t < e.length; t++)\n      if (e[t] === \"<\" && !i) {\n        if (n && Ge(e, t))\n          t += 7, [entityName, val, t] = Xe(e, t + 1), val.indexOf(\"&\") === -1 && (r[We(entityName)] = {\n            regx: RegExp(`&${entityName};`, \"g\"),\n            val\n          });\n        else if (n && ze(e, t))\n          t += 8;\n        else if (n && He(e, t))\n          t += 8;\n        else if (n && Ke(e, t))\n          t += 9;\n        else if (Ue)\n          i = !0;\n        else\n          throw new Error(\"Invalid DOCTYPE\");\n        s++, d = \"\";\n      } else if (e[t] === \">\") {\n        if (i ? e[t - 1] === \"-\" && e[t - 2] === \"-\" && (i = !1, s--) : s--, s === 0)\n          break;\n      } else\n        e[t] === \"[\" ? n = !0 : d += e[t];\n    if (s !== 0)\n      throw new Error(\"Unclosed DOCTYPE\");\n  } else\n    throw new Error(\"Invalid Tag instead of DOCTYPE\");\n  return { entities: r, i: t };\n}\nfunction Xe(e, t) {\n  let r = \"\";\n  for (; t < e.length && e[t] !== \"'\" && e[t] !== '\"'; t++)\n    r += e[t];\n  if (r = r.trim(), r.indexOf(\" \") !== -1)\n    throw new Error(\"External entites are not supported\");\n  const s = e[t++];\n  let n = \"\";\n  for (; t < e.length && e[t] !== s; t++)\n    n += e[t];\n  return [r, n, t];\n}\nfunction Ue(e, t) {\n  return e[t + 1] === \"!\" && e[t + 2] === \"-\" && e[t + 3] === \"-\";\n}\nfunction Ge(e, t) {\n  return e[t + 1] === \"!\" && e[t + 2] === \"E\" && e[t + 3] === \"N\" && e[t + 4] === \"T\" && e[t + 5] === \"I\" && e[t + 6] === \"T\" && e[t + 7] === \"Y\";\n}\nfunction ze(e, t) {\n  return e[t + 1] === \"!\" && e[t + 2] === \"E\" && e[t + 3] === \"L\" && e[t + 4] === \"E\" && e[t + 5] === \"M\" && e[t + 6] === \"E\" && e[t + 7] === \"N\" && e[t + 8] === \"T\";\n}\nfunction He(e, t) {\n  return e[t + 1] === \"!\" && e[t + 2] === \"A\" && e[t + 3] === \"T\" && e[t + 4] === \"T\" && e[t + 5] === \"L\" && e[t + 6] === \"I\" && e[t + 7] === \"S\" && e[t + 8] === \"T\";\n}\nfunction Ke(e, t) {\n  return e[t + 1] === \"!\" && e[t + 2] === \"N\" && e[t + 3] === \"O\" && e[t + 4] === \"T\" && e[t + 5] === \"A\" && e[t + 6] === \"T\" && e[t + 7] === \"I\" && e[t + 8] === \"O\" && e[t + 9] === \"N\";\n}\nfunction We(e) {\n  if (Be.isName(e))\n    return e;\n  throw new Error(`Invalid entity name ${e}`);\n}\nvar Ze = qe;\nconst je = /^[-+]?0x[a-fA-F0-9]+$/, Ye = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n!Number.parseInt && window.parseInt && (Number.parseInt = window.parseInt);\n!Number.parseFloat && window.parseFloat && (Number.parseFloat = window.parseFloat);\nconst Je = {\n  hex: !0,\n  leadingZeros: !0,\n  decimalPoint: \".\",\n  eNotation: !0\n  //skipLike: /regex/\n};\nfunction Qe(e, t = {}) {\n  if (t = Object.assign({}, Je, t), !e || typeof e != \"string\")\n    return e;\n  let r = e.trim();\n  if (t.skipLike !== void 0 && t.skipLike.test(r))\n    return e;\n  if (t.hex && je.test(r))\n    return Number.parseInt(r, 16);\n  {\n    const s = Ye.exec(r);\n    if (s) {\n      const n = s[1], i = s[2];\n      let d = De(s[3]);\n      const u = s[4] || s[6];\n      if (!t.leadingZeros && i.length > 0 && n && r[2] !== \".\")\n        return e;\n      if (!t.leadingZeros && i.length > 0 && !n && r[1] !== \".\")\n        return e;\n      {\n        const o = Number(r), a = \"\" + o;\n        return a.search(/[eE]/) !== -1 || u ? t.eNotation ? o : e : r.indexOf(\".\") !== -1 ? a === \"0\" && d === \"\" || a === d || n && a === \"-\" + d ? o : e : i ? d === a || n + d === a ? o : e : r === a || r === n + a ? o : e;\n      }\n    } else\n      return e;\n  }\n}\nfunction De(e) {\n  return e && e.indexOf(\".\") !== -1 && (e = e.replace(/0+$/, \"\"), e === \".\" ? e = \"0\" : e[0] === \".\" ? e = \"0\" + e : e[e.length - 1] === \".\" && (e = e.substr(0, e.length - 1))), e;\n}\nvar et = Qe;\nconst B = O, T = ke, tt = Ze, rt = et;\n\"<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)\".replace(/NAME/g, B.nameRegexp);\nlet nt = class {\n  constructor(t) {\n    this.options = t, this.currentNode = null, this.tagsNodeStack = [], this.docTypeEntities = {}, this.lastEntities = {\n      apos: { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n      gt: { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n      lt: { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n      quot: { regex: /&(quot|#34|#x22);/g, val: '\"' }\n    }, this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" }, this.htmlEntities = {\n      space: { regex: /&(nbsp|#160);/g, val: \" \" },\n      // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n      // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n      // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n      // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n      // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n      cent: { regex: /&(cent|#162);/g, val: \"¢\" },\n      pound: { regex: /&(pound|#163);/g, val: \"£\" },\n      yen: { regex: /&(yen|#165);/g, val: \"¥\" },\n      euro: { regex: /&(euro|#8364);/g, val: \"€\" },\n      copyright: { regex: /&(copy|#169);/g, val: \"©\" },\n      reg: { regex: /&(reg|#174);/g, val: \"®\" },\n      inr: { regex: /&(inr|#8377);/g, val: \"₹\" }\n    }, this.addExternalEntities = it, this.parseXml = at, this.parseTextData = st, this.resolveNameSpace = ot, this.buildAttributesMap = dt, this.isItStopNode = ht, this.replaceEntitiesValue = ft, this.readStopNodeData = gt, this.saveTextToParentTag = ct, this.addChild = lt;\n  }\n};\nfunction it(e) {\n  const t = Object.keys(e);\n  for (let r = 0; r < t.length; r++) {\n    const s = t[r];\n    this.lastEntities[s] = {\n      regex: new RegExp(\"&\" + s + \";\", \"g\"),\n      val: e[s]\n    };\n  }\n}\nfunction st(e, t, r, s, n, i, d) {\n  if (e !== void 0 && (this.options.trimValues && !s && (e = e.trim()), e.length > 0)) {\n    d || (e = this.replaceEntitiesValue(e));\n    const u = this.options.tagValueProcessor(t, e, r, n, i);\n    return u == null ? e : typeof u != typeof e || u !== e ? u : this.options.trimValues ? $(e, this.options.parseTagValue, this.options.numberParseOptions) : e.trim() === e ? $(e, this.options.parseTagValue, this.options.numberParseOptions) : e;\n  }\n}\nfunction ot(e) {\n  if (this.options.removeNSPrefix) {\n    const t = e.split(\":\"), r = e.charAt(0) === \"/\" ? \"/\" : \"\";\n    if (t[0] === \"xmlns\")\n      return \"\";\n    t.length === 2 && (e = r + t[1]);\n  }\n  return e;\n}\nconst ut = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\nfunction dt(e, t, r) {\n  if (!this.options.ignoreAttributes && typeof e == \"string\") {\n    const s = B.getAllMatches(e, ut), n = s.length, i = {};\n    for (let d = 0; d < n; d++) {\n      const u = this.resolveNameSpace(s[d][1]);\n      let o = s[d][4], a = this.options.attributeNamePrefix + u;\n      if (u.length)\n        if (this.options.transformAttributeName && (a = this.options.transformAttributeName(a)), a === \"__proto__\" && (a = \"#__proto__\"), o !== void 0) {\n          this.options.trimValues && (o = o.trim()), o = this.replaceEntitiesValue(o);\n          const l = this.options.attributeValueProcessor(u, o, t);\n          l == null ? i[a] = o : typeof l != typeof o || l !== o ? i[a] = l : i[a] = $(\n            o,\n            this.options.parseAttributeValue,\n            this.options.numberParseOptions\n          );\n        } else\n          this.options.allowBooleanAttributes && (i[a] = !0);\n    }\n    if (!Object.keys(i).length)\n      return;\n    if (this.options.attributesGroupName) {\n      const d = {};\n      return d[this.options.attributesGroupName] = i, d;\n    }\n    return i;\n  }\n}\nconst at = function(e) {\n  e = e.replace(/\\r\\n?/g, `\n`);\n  const t = new T(\"!xml\");\n  let r = t, s = \"\", n = \"\";\n  for (let i = 0; i < e.length; i++)\n    if (e[i] === \"<\")\n      if (e[i + 1] === \"/\") {\n        const u = y(e, \">\", i, \"Closing Tag is not closed.\");\n        let o = e.substring(i + 2, u).trim();\n        if (this.options.removeNSPrefix) {\n          const f = o.indexOf(\":\");\n          f !== -1 && (o = o.substr(f + 1));\n        }\n        this.options.transformTagName && (o = this.options.transformTagName(o)), r && (s = this.saveTextToParentTag(s, r, n));\n        const a = n.substring(n.lastIndexOf(\".\") + 1);\n        if (o && this.options.unpairedTags.indexOf(o) !== -1)\n          throw new Error(`Unpaired tag can not be used as closing tag: </${o}>`);\n        let l = 0;\n        a && this.options.unpairedTags.indexOf(a) !== -1 ? (l = n.lastIndexOf(\".\", n.lastIndexOf(\".\") - 1), this.tagsNodeStack.pop()) : l = n.lastIndexOf(\".\"), n = n.substring(0, l), r = this.tagsNodeStack.pop(), s = \"\", i = u;\n      } else if (e[i + 1] === \"?\") {\n        let u = x(e, i, !1, \"?>\");\n        if (!u)\n          throw new Error(\"Pi Tag is not closed.\");\n        if (s = this.saveTextToParentTag(s, r, n), !(this.options.ignoreDeclaration && u.tagName === \"?xml\" || this.options.ignorePiTags)) {\n          const o = new T(u.tagName);\n          o.add(this.options.textNodeName, \"\"), u.tagName !== u.tagExp && u.attrExpPresent && (o[\":@\"] = this.buildAttributesMap(u.tagExp, n, u.tagName)), this.addChild(r, o, n);\n        }\n        i = u.closeIndex + 1;\n      } else if (e.substr(i + 1, 3) === \"!--\") {\n        const u = y(e, \"-->\", i + 4, \"Comment is not closed.\");\n        if (this.options.commentPropName) {\n          const o = e.substring(i + 4, u - 2);\n          s = this.saveTextToParentTag(s, r, n), r.add(this.options.commentPropName, [{ [this.options.textNodeName]: o }]);\n        }\n        i = u;\n      } else if (e.substr(i + 1, 2) === \"!D\") {\n        const u = tt(e, i);\n        this.docTypeEntities = u.entities, i = u.i;\n      } else if (e.substr(i + 1, 2) === \"![\") {\n        const u = y(e, \"]]>\", i, \"CDATA is not closed.\") - 2, o = e.substring(i + 9, u);\n        if (s = this.saveTextToParentTag(s, r, n), this.options.cdataPropName)\n          r.add(this.options.cdataPropName, [{ [this.options.textNodeName]: o }]);\n        else {\n          let a = this.parseTextData(o, r.tagname, n, !0, !1, !0);\n          a == null && (a = \"\"), r.add(this.options.textNodeName, a);\n        }\n        i = u + 2;\n      } else {\n        let u = x(e, i, this.options.removeNSPrefix), o = u.tagName;\n        const a = u.rawTagName;\n        let l = u.tagExp, f = u.attrExpPresent, c = u.closeIndex;\n        this.options.transformTagName && (o = this.options.transformTagName(o)), r && s && r.tagname !== \"!xml\" && (s = this.saveTextToParentTag(s, r, n, !1));\n        const g = r;\n        if (g && this.options.unpairedTags.indexOf(g.tagname) !== -1 && (r = this.tagsNodeStack.pop(), n = n.substring(0, n.lastIndexOf(\".\"))), o !== t.tagname && (n += n ? \".\" + o : o), this.isItStopNode(this.options.stopNodes, n, o)) {\n          let h = \"\";\n          if (l.length > 0 && l.lastIndexOf(\"/\") === l.length - 1)\n            i = u.closeIndex;\n          else if (this.options.unpairedTags.indexOf(o) !== -1)\n            i = u.closeIndex;\n          else {\n            const E = this.readStopNodeData(e, a, c + 1);\n            if (!E)\n              throw new Error(`Unexpected end of ${a}`);\n            i = E.i, h = E.tagContent;\n          }\n          const _ = new T(o);\n          o !== l && f && (_[\":@\"] = this.buildAttributesMap(l, n, o)), h && (h = this.parseTextData(h, o, n, !0, f, !0, !0)), n = n.substr(0, n.lastIndexOf(\".\")), _.add(this.options.textNodeName, h), this.addChild(r, _, n);\n        } else {\n          if (l.length > 0 && l.lastIndexOf(\"/\") === l.length - 1) {\n            o[o.length - 1] === \"/\" ? (o = o.substr(0, o.length - 1), n = n.substr(0, n.length - 1), l = o) : l = l.substr(0, l.length - 1), this.options.transformTagName && (o = this.options.transformTagName(o));\n            const h = new T(o);\n            o !== l && f && (h[\":@\"] = this.buildAttributesMap(l, n, o)), this.addChild(r, h, n), n = n.substr(0, n.lastIndexOf(\".\"));\n          } else {\n            const h = new T(o);\n            this.tagsNodeStack.push(r), o !== l && f && (h[\":@\"] = this.buildAttributesMap(l, n, o)), this.addChild(r, h, n), r = h;\n          }\n          s = \"\", i = c;\n        }\n      }\n    else\n      s += e[i];\n  return t.child;\n};\nfunction lt(e, t, r) {\n  const s = this.options.updateTag(t.tagname, r, t[\":@\"]);\n  s === !1 || (typeof s == \"string\" && (t.tagname = s), e.addChild(t));\n}\nconst ft = function(e) {\n  if (this.options.processEntities) {\n    for (let t in this.docTypeEntities) {\n      const r = this.docTypeEntities[t];\n      e = e.replace(r.regx, r.val);\n    }\n    for (let t in this.lastEntities) {\n      const r = this.lastEntities[t];\n      e = e.replace(r.regex, r.val);\n    }\n    if (this.options.htmlEntities)\n      for (let t in this.htmlEntities) {\n        const r = this.htmlEntities[t];\n        e = e.replace(r.regex, r.val);\n      }\n    e = e.replace(this.ampEntity.regex, this.ampEntity.val);\n  }\n  return e;\n};\nfunction ct(e, t, r, s) {\n  return e && (s === void 0 && (s = Object.keys(t.child).length === 0), e = this.parseTextData(\n    e,\n    t.tagname,\n    r,\n    !1,\n    t[\":@\"] ? Object.keys(t[\":@\"]).length !== 0 : !1,\n    s\n  ), e !== void 0 && e !== \"\" && t.add(this.options.textNodeName, e), e = \"\"), e;\n}\nfunction ht(e, t, r) {\n  const s = \"*.\" + r;\n  for (const n in e) {\n    const i = e[n];\n    if (s === i || t === i)\n      return !0;\n  }\n  return !1;\n}\nfunction pt(e, t, r = \">\") {\n  let s, n = \"\";\n  for (let i = t; i < e.length; i++) {\n    let d = e[i];\n    if (s)\n      d === s && (s = \"\");\n    else if (d === '\"' || d === \"'\")\n      s = d;\n    else if (d === r[0])\n      if (r[1]) {\n        if (e[i + 1] === r[1])\n          return {\n            data: n,\n            index: i\n          };\n      } else\n        return {\n          data: n,\n          index: i\n        };\n    else\n      d === \"\t\" && (d = \" \");\n    n += d;\n  }\n}\nfunction y(e, t, r, s) {\n  const n = e.indexOf(t, r);\n  if (n === -1)\n    throw new Error(s);\n  return n + t.length - 1;\n}\nfunction x(e, t, r, s = \">\") {\n  const n = pt(e, t + 1, s);\n  if (!n)\n    return;\n  let i = n.data;\n  const d = n.index, u = i.search(/\\s/);\n  let o = i, a = !0;\n  u !== -1 && (o = i.substr(0, u).replace(/\\s\\s*$/, \"\"), i = i.substr(u + 1));\n  const l = o;\n  if (r) {\n    const f = o.indexOf(\":\");\n    f !== -1 && (o = o.substr(f + 1), a = o !== n.data.substr(f + 1));\n  }\n  return {\n    tagName: o,\n    tagExp: i,\n    closeIndex: d,\n    attrExpPresent: a,\n    rawTagName: l\n  };\n}\nfunction gt(e, t, r) {\n  const s = r;\n  let n = 1;\n  for (; r < e.length; r++)\n    if (e[r] === \"<\")\n      if (e[r + 1] === \"/\") {\n        const i = y(e, \">\", r, `${t} is not closed`);\n        if (e.substring(r + 2, i).trim() === t && (n--, n === 0))\n          return {\n            tagContent: e.substring(s, r),\n            i\n          };\n        r = i;\n      } else if (e[r + 1] === \"?\")\n        r = y(e, \"?>\", r + 1, \"StopNode is not closed.\");\n      else if (e.substr(r + 1, 3) === \"!--\")\n        r = y(e, \"-->\", r + 3, \"StopNode is not closed.\");\n      else if (e.substr(r + 1, 2) === \"![\")\n        r = y(e, \"]]>\", r, \"StopNode is not closed.\") - 2;\n      else {\n        const i = x(e, r, \">\");\n        i && ((i && i.tagName) === t && i.tagExp[i.tagExp.length - 1] !== \"/\" && n++, r = i.closeIndex);\n      }\n}\nfunction $(e, t, r) {\n  if (t && typeof e == \"string\") {\n    const s = e.trim();\n    return s === \"true\" ? !0 : s === \"false\" ? !1 : rt(e, r);\n  } else\n    return B.isExist(e) ? e : \"\";\n}\nvar wt = nt, ne = {};\nfunction mt(e, t) {\n  return ie(e, t);\n}\nfunction ie(e, t, r) {\n  let s;\n  const n = {};\n  for (let i = 0; i < e.length; i++) {\n    const d = e[i], u = Nt(d);\n    let o = \"\";\n    if (r === void 0 ? o = u : o = r + \".\" + u, u === t.textNodeName)\n      s === void 0 ? s = d[u] : s += \"\" + d[u];\n    else {\n      if (u === void 0)\n        continue;\n      if (d[u]) {\n        let a = ie(d[u], t, o);\n        const l = bt(a, t);\n        d[\":@\"] ? Et(a, d[\":@\"], o, t) : Object.keys(a).length === 1 && a[t.textNodeName] !== void 0 && !t.alwaysCreateTextNode ? a = a[t.textNodeName] : Object.keys(a).length === 0 && (t.alwaysCreateTextNode ? a[t.textNodeName] = \"\" : a = \"\"), n[u] !== void 0 && n.hasOwnProperty(u) ? (Array.isArray(n[u]) || (n[u] = [n[u]]), n[u].push(a)) : t.isArray(u, o, l) ? n[u] = [a] : n[u] = a;\n      }\n    }\n  }\n  return typeof s == \"string\" ? s.length > 0 && (n[t.textNodeName] = s) : s !== void 0 && (n[t.textNodeName] = s), n;\n}\nfunction Nt(e) {\n  const t = Object.keys(e);\n  for (let r = 0; r < t.length; r++) {\n    const s = t[r];\n    if (s !== \":@\")\n      return s;\n  }\n}\nfunction Et(e, t, r, s) {\n  if (t) {\n    const n = Object.keys(t), i = n.length;\n    for (let d = 0; d < i; d++) {\n      const u = n[d];\n      s.isArray(u, r + \".\" + u, !0, !0) ? e[u] = [t[u]] : e[u] = t[u];\n    }\n  }\n}\nfunction bt(e, t) {\n  const { textNodeName: r } = t, s = Object.keys(e).length;\n  return !!(s === 0 || s === 1 && (e[r] || typeof e[r] == \"boolean\" || e[r] === 0));\n}\nne.prettify = mt;\nconst { buildOptions: yt } = k, _t = wt, { prettify: vt } = ne, Tt = S;\nlet It = class {\n  constructor(t) {\n    this.externalEntities = {}, this.options = yt(t);\n  }\n  /**\n   * Parse XML dats to JS object \n   * @param {string|Buffer} xmlData \n   * @param {boolean|Object} validationOption \n   */\n  parse(t, r) {\n    if (typeof t != \"string\")\n      if (t.toString)\n        t = t.toString();\n      else\n        throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n    if (r) {\n      r === !0 && (r = {});\n      const i = Tt.validate(t, r);\n      if (i !== !0)\n        throw Error(`${i.err.msg}:${i.err.line}:${i.err.col}`);\n    }\n    const s = new _t(this.options);\n    s.addExternalEntities(this.externalEntities);\n    const n = s.parseXml(t);\n    return this.options.preserveOrder || n === void 0 ? n : vt(n, this.options);\n  }\n  /**\n   * Add Entity which is not by default supported by this library\n   * @param {string} key \n   * @param {string} value \n   */\n  addEntity(t, r) {\n    if (r.indexOf(\"&\") !== -1)\n      throw new Error(\"Entity value can't have '&'\");\n    if (t.indexOf(\"&\") !== -1 || t.indexOf(\";\") !== -1)\n      throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'\");\n    if (r === \"&\")\n      throw new Error(\"An entity with value '&' is not permitted\");\n    this.externalEntities[t] = r;\n  }\n};\nvar At = It;\nconst Ot = `\n`;\nfunction Ct(e, t) {\n  let r = \"\";\n  return t.format && t.indentBy.length > 0 && (r = Ot), se(e, t, \"\", r);\n}\nfunction se(e, t, r, s) {\n  let n = \"\", i = !1;\n  for (let d = 0; d < e.length; d++) {\n    const u = e[d], o = Pt(u);\n    if (o === void 0)\n      continue;\n    let a = \"\";\n    if (r.length === 0 ? a = o : a = `${r}.${o}`, o === t.textNodeName) {\n      let h = u[o];\n      xt(a, t) || (h = t.tagValueProcessor(o, h), h = oe(h, t)), i && (n += s), n += h, i = !1;\n      continue;\n    } else if (o === t.cdataPropName) {\n      i && (n += s), n += `<![CDATA[${u[o][0][t.textNodeName]}]]>`, i = !1;\n      continue;\n    } else if (o === t.commentPropName) {\n      n += s + `<!--${u[o][0][t.textNodeName]}-->`, i = !0;\n      continue;\n    } else if (o[0] === \"?\") {\n      const h = K(u[\":@\"], t), _ = o === \"?xml\" ? \"\" : s;\n      let E = u[o][0][t.textNodeName];\n      E = E.length !== 0 ? \" \" + E : \"\", n += _ + `<${o}${E}${h}?>`, i = !0;\n      continue;\n    }\n    let l = s;\n    l !== \"\" && (l += t.indentBy);\n    const f = K(u[\":@\"], t), c = s + `<${o}${f}`, g = se(u[o], t, a, l);\n    t.unpairedTags.indexOf(o) !== -1 ? t.suppressUnpairedNode ? n += c + \">\" : n += c + \"/>\" : (!g || g.length === 0) && t.suppressEmptyNode ? n += c + \"/>\" : g && g.endsWith(\">\") ? n += c + `>${g}${s}</${o}>` : (n += c + \">\", g && s !== \"\" && (g.includes(\"/>\") || g.includes(\"</\")) ? n += s + t.indentBy + g + s : n += g, n += `</${o}>`), i = !0;\n  }\n  return n;\n}\nfunction Pt(e) {\n  const t = Object.keys(e);\n  for (let r = 0; r < t.length; r++) {\n    const s = t[r];\n    if (e.hasOwnProperty(s) && s !== \":@\")\n      return s;\n  }\n}\nfunction K(e, t) {\n  let r = \"\";\n  if (e && !t.ignoreAttributes)\n    for (let s in e) {\n      if (!e.hasOwnProperty(s))\n        continue;\n      let n = t.attributeValueProcessor(s, e[s]);\n      n = oe(n, t), n === !0 && t.suppressBooleanAttributes ? r += ` ${s.substr(t.attributeNamePrefix.length)}` : r += ` ${s.substr(t.attributeNamePrefix.length)}=\"${n}\"`;\n    }\n  return r;\n}\nfunction xt(e, t) {\n  e = e.substr(0, e.length - t.textNodeName.length - 1);\n  let r = e.substr(e.lastIndexOf(\".\") + 1);\n  for (let s in t.stopNodes)\n    if (t.stopNodes[s] === e || t.stopNodes[s] === \"*.\" + r)\n      return !0;\n  return !1;\n}\nfunction oe(e, t) {\n  if (e && e.length > 0 && t.processEntities)\n    for (let r = 0; r < t.entities.length; r++) {\n      const s = t.entities[r];\n      e = e.replace(s.regex, s.val);\n    }\n  return e;\n}\nvar $t = Ct;\nconst Ft = $t, Vt = {\n  attributeNamePrefix: \"@_\",\n  attributesGroupName: !1,\n  textNodeName: \"#text\",\n  ignoreAttributes: !0,\n  cdataPropName: !1,\n  format: !1,\n  indentBy: \"  \",\n  suppressEmptyNode: !1,\n  suppressUnpairedNode: !0,\n  suppressBooleanAttributes: !0,\n  tagValueProcessor: function(e, t) {\n    return t;\n  },\n  attributeValueProcessor: function(e, t) {\n    return t;\n  },\n  preserveOrder: !1,\n  commentPropName: !1,\n  unpairedTags: [],\n  entities: [\n    { regex: new RegExp(\"&\", \"g\"), val: \"&amp;\" },\n    //it must be on top\n    { regex: new RegExp(\">\", \"g\"), val: \"&gt;\" },\n    { regex: new RegExp(\"<\", \"g\"), val: \"&lt;\" },\n    { regex: new RegExp(\"'\", \"g\"), val: \"&apos;\" },\n    { regex: new RegExp('\"', \"g\"), val: \"&quot;\" }\n  ],\n  processEntities: !0,\n  stopNodes: [],\n  // transformTagName: false,\n  // transformAttributeName: false,\n  oneListGroup: !1\n};\nfunction b(e) {\n  this.options = Object.assign({}, Vt, e), this.options.ignoreAttributes || this.options.attributesGroupName ? this.isAttribute = function() {\n    return !1;\n  } : (this.attrPrefixLen = this.options.attributeNamePrefix.length, this.isAttribute = St), this.processTextOrObjNode = Lt, this.options.format ? (this.indentate = Rt, this.tagEndChar = `>\n`, this.newLine = `\n`) : (this.indentate = function() {\n    return \"\";\n  }, this.tagEndChar = \">\", this.newLine = \"\");\n}\nb.prototype.build = function(e) {\n  return this.options.preserveOrder ? Ft(e, this.options) : (Array.isArray(e) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1 && (e = {\n    [this.options.arrayNodeName]: e\n  }), this.j2x(e, 0).val);\n};\nb.prototype.j2x = function(e, t) {\n  let r = \"\", s = \"\";\n  for (let n in e)\n    if (Object.prototype.hasOwnProperty.call(e, n))\n      if (typeof e[n] > \"u\")\n        this.isAttribute(n) && (s += \"\");\n      else if (e[n] === null)\n        this.isAttribute(n) ? s += \"\" : n[0] === \"?\" ? s += this.indentate(t) + \"<\" + n + \"?\" + this.tagEndChar : s += this.indentate(t) + \"<\" + n + \"/\" + this.tagEndChar;\n      else if (e[n] instanceof Date)\n        s += this.buildTextValNode(e[n], n, \"\", t);\n      else if (typeof e[n] != \"object\") {\n        const i = this.isAttribute(n);\n        if (i)\n          r += this.buildAttrPairStr(i, \"\" + e[n]);\n        else if (n === this.options.textNodeName) {\n          let d = this.options.tagValueProcessor(n, \"\" + e[n]);\n          s += this.replaceEntitiesValue(d);\n        } else\n          s += this.buildTextValNode(e[n], n, \"\", t);\n      } else if (Array.isArray(e[n])) {\n        const i = e[n].length;\n        let d = \"\";\n        for (let u = 0; u < i; u++) {\n          const o = e[n][u];\n          typeof o > \"u\" || (o === null ? n[0] === \"?\" ? s += this.indentate(t) + \"<\" + n + \"?\" + this.tagEndChar : s += this.indentate(t) + \"<\" + n + \"/\" + this.tagEndChar : typeof o == \"object\" ? this.options.oneListGroup ? d += this.j2x(o, t + 1).val : d += this.processTextOrObjNode(o, n, t) : d += this.buildTextValNode(o, n, \"\", t));\n        }\n        this.options.oneListGroup && (d = this.buildObjectNode(d, n, \"\", t)), s += d;\n      } else if (this.options.attributesGroupName && n === this.options.attributesGroupName) {\n        const i = Object.keys(e[n]), d = i.length;\n        for (let u = 0; u < d; u++)\n          r += this.buildAttrPairStr(i[u], \"\" + e[n][i[u]]);\n      } else\n        s += this.processTextOrObjNode(e[n], n, t);\n  return { attrStr: r, val: s };\n};\nb.prototype.buildAttrPairStr = function(e, t) {\n  return t = this.options.attributeValueProcessor(e, \"\" + t), t = this.replaceEntitiesValue(t), this.options.suppressBooleanAttributes && t === \"true\" ? \" \" + e : \" \" + e + '=\"' + t + '\"';\n};\nfunction Lt(e, t, r) {\n  const s = this.j2x(e, r + 1);\n  return e[this.options.textNodeName] !== void 0 && Object.keys(e).length === 1 ? this.buildTextValNode(e[this.options.textNodeName], t, s.attrStr, r) : this.buildObjectNode(s.val, t, s.attrStr, r);\n}\nb.prototype.buildObjectNode = function(e, t, r, s) {\n  if (e === \"\")\n    return t[0] === \"?\" ? this.indentate(s) + \"<\" + t + r + \"?\" + this.tagEndChar : this.indentate(s) + \"<\" + t + r + this.closeTag(t) + this.tagEndChar;\n  {\n    let n = \"</\" + t + this.tagEndChar, i = \"\";\n    return t[0] === \"?\" && (i = \"?\", n = \"\"), (r || r === \"\") && e.indexOf(\"<\") === -1 ? this.indentate(s) + \"<\" + t + r + i + \">\" + e + n : this.options.commentPropName !== !1 && t === this.options.commentPropName && i.length === 0 ? this.indentate(s) + `<!--${e}-->` + this.newLine : this.indentate(s) + \"<\" + t + r + i + this.tagEndChar + e + this.indentate(s) + n;\n  }\n};\nb.prototype.closeTag = function(e) {\n  let t = \"\";\n  return this.options.unpairedTags.indexOf(e) !== -1 ? this.options.suppressUnpairedNode || (t = \"/\") : this.options.suppressEmptyNode ? t = \"/\" : t = `></${e}`, t;\n};\nb.prototype.buildTextValNode = function(e, t, r, s) {\n  if (this.options.cdataPropName !== !1 && t === this.options.cdataPropName)\n    return this.indentate(s) + `<![CDATA[${e}]]>` + this.newLine;\n  if (this.options.commentPropName !== !1 && t === this.options.commentPropName)\n    return this.indentate(s) + `<!--${e}-->` + this.newLine;\n  if (t[0] === \"?\")\n    return this.indentate(s) + \"<\" + t + r + \"?\" + this.tagEndChar;\n  {\n    let n = this.options.tagValueProcessor(t, e);\n    return n = this.replaceEntitiesValue(n), n === \"\" ? this.indentate(s) + \"<\" + t + r + this.closeTag(t) + this.tagEndChar : this.indentate(s) + \"<\" + t + r + \">\" + n + \"</\" + t + this.tagEndChar;\n  }\n};\nb.prototype.replaceEntitiesValue = function(e) {\n  if (e && e.length > 0 && this.options.processEntities)\n    for (let t = 0; t < this.options.entities.length; t++) {\n      const r = this.options.entities[t];\n      e = e.replace(r.regex, r.val);\n    }\n  return e;\n};\nfunction Rt(e) {\n  return this.options.indentBy.repeat(e);\n}\nfunction St(e) {\n  return e.startsWith(this.options.attributeNamePrefix) && e !== this.options.textNodeName ? e.substr(this.attrPrefixLen) : !1;\n}\nvar Mt = b;\nconst kt = S, Bt = At, qt = Mt;\nvar W = {\n  XMLParser: Bt,\n  XMLValidator: kt,\n  XMLBuilder: qt\n};\nfunction Xt(e) {\n  if (typeof e != \"string\")\n    throw new TypeError(`Expected a \\`string\\`, got \\`${typeof e}\\``);\n  if (e = e.trim(), e.length === 0 || W.XMLValidator.validate(e) !== !0)\n    return !1;\n  let t;\n  const r = new W.XMLParser();\n  try {\n    t = r.parse(e);\n  } catch {\n    return !1;\n  }\n  return !(!t || !(\"svg\" in t));\n}\n/**\n * @copyright Copyright (c) 2022 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 */\nclass cr {\n  _view;\n  constructor(t) {\n    Ut(t), this._view = t;\n  }\n  get id() {\n    return this._view.id;\n  }\n  get name() {\n    return this._view.name;\n  }\n  get caption() {\n    return this._view.caption;\n  }\n  get emptyTitle() {\n    return this._view.emptyTitle;\n  }\n  get emptyCaption() {\n    return this._view.emptyCaption;\n  }\n  get getContents() {\n    return this._view.getContents;\n  }\n  get icon() {\n    return this._view.icon;\n  }\n  set icon(t) {\n    this._view.icon = t;\n  }\n  get order() {\n    return this._view.order;\n  }\n  set order(t) {\n    this._view.order = t;\n  }\n  get params() {\n    return this._view.params;\n  }\n  set params(t) {\n    this._view.params = t;\n  }\n  get columns() {\n    return this._view.columns;\n  }\n  get emptyView() {\n    return this._view.emptyView;\n  }\n  get parent() {\n    return this._view.parent;\n  }\n  get sticky() {\n    return this._view.sticky;\n  }\n  get expanded() {\n    return this._view.expanded;\n  }\n  set expanded(t) {\n    this._view.expanded = t;\n  }\n  get defaultSortKey() {\n    return this._view.defaultSortKey;\n  }\n}\nconst Ut = function(e) {\n  if (!e.id || typeof e.id != \"string\")\n    throw new Error(\"View id is required and must be a string\");\n  if (!e.name || typeof e.name != \"string\")\n    throw new Error(\"View name is required and must be a string\");\n  if (e.columns && e.columns.length > 0 && (!e.caption || typeof e.caption != \"string\"))\n    throw new Error(\"View caption is required for top-level views and must be a string\");\n  if (!e.getContents || typeof e.getContents != \"function\")\n    throw new Error(\"View getContents is required and must be a function\");\n  if (!e.icon || typeof e.icon != \"string\" || !Xt(e.icon))\n    throw new Error(\"View icon is required and must be a valid svg string\");\n  if (!(\"order\" in e) || typeof e.order != \"number\")\n    throw new Error(\"View order is required and must be a number\");\n  if (e.columns && e.columns.forEach((t) => {\n    if (!(t instanceof Ie))\n      throw new Error(\"View columns must be an array of Column. Invalid column found\");\n  }), e.emptyView && typeof e.emptyView != \"function\")\n    throw new Error(\"View emptyView must be a function\");\n  if (e.parent && typeof e.parent != \"string\")\n    throw new Error(\"View parent must be a string\");\n  if (\"sticky\" in e && typeof e.sticky != \"boolean\")\n    throw new Error(\"View sticky must be a boolean\");\n  if (\"expanded\" in e && typeof e.expanded != \"boolean\")\n    throw new Error(\"View expanded must be a boolean\");\n  if (e.defaultSortKey && typeof e.defaultSortKey != \"string\")\n    throw new Error(\"View defaultSortKey must be a string\");\n  return !0;\n};\n/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\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 */\nconst hr = function(e) {\n  return F().registerEntry(e);\n}, pr = function(e) {\n  return F().unregisterEntry(e);\n}, gr = function(e) {\n  return F().getEntries(e).sort((r, s) => r.order !== void 0 && s.order !== void 0 && r.order !== s.order ? r.order - s.order : r.displayName.localeCompare(s.displayName, void 0, { numeric: !0, sensitivity: \"base\" }));\n};\nexport {\n  Ie as Column,\n  Z as DefaultType,\n  ye as File,\n  Qt as FileAction,\n  R as FileType,\n  _e as Folder,\n  tr as Header,\n  Te as Navigation,\n  D as Node,\n  Q as NodeStatus,\n  N as Permission,\n  cr as View,\n  hr as addNewFileMenuEntry,\n  ur as davGetClient,\n  sr as davGetDefaultPropfind,\n  Ee as davGetFavoritesReport,\n  or as davGetRecentSearch,\n  be as davParsePermissions,\n  te as davRemoteURL,\n  ve as davResultToNode,\n  ee as davRootPath,\n  Y as defaultDavNamespaces,\n  j as defaultDavProperties,\n  Yt as formatFileSize,\n  L as getDavNameSpaces,\n  V as getDavProperties,\n  dr as getFavoriteNodes,\n  er as getFileActions,\n  nr as getFileListHeaders,\n  ar as getNavigation,\n  gr as getNewFileMenuEntries,\n  Jt as parseFileSize,\n  ir as registerDavProperty,\n  Dt as registerFileAction,\n  rr as registerFileListHeaders,\n  pr as removeNewFileMenuEntry\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"4720\":\"67ff1816113751e83e78\",\"6512\":\"4e739934e594e992c605\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 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) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\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}\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__(64913)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","encodeFilePath","path","pathSections","startsWith","split","relativePath","forEach","section","encodeURIComponent","remote","generateRemoteUrl","createClient","headers","requesttoken","getRequestToken","getLoggerBuilder","setApp","detectUser","build","name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","ATOMIC_PERMISSIONS","hasPermissions","initialPermissionSet","permissionsToCheck","components","NcActionLink","NcActionButton","NcListItem","BackupRestore","Download","FileCompare","Pencil","Delete","ImageOffOutline","directives","tooltip","Tooltip","filters","humanReadableSize","bytes","OC","Util","humanFileSize","humanDateFromNow","timestamp","moment","fromNow","version","Object","required","fileInfo","isCurrent","Boolean","isFirstVersion","loadPreview","canView","canCompare","data","previewLoaded","previewErrored","capabilities","loadState","files","version_labeling","version_deletion","computed","versionLabel","label","t","downloadURL","getRootUrl","joinPaths","url","formattedDate","mtime","format","enableLabeling","enableDeletion","hasDeletePermissions","permissions","Permission","DELETE","hasUpdatePermissions","UPDATE","isDownloadable","READ","mountType","downloadAttribute","shareAttributes","find","attribute","scope","key","undefined","enabled","methods","labelUpdate","restoreVersion","deleteVersion","click","window","location","compareVersion","Error","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","scopedSlots","_u","fn","hasPreview","previewUrl","proxy","_f","defineComponent","sections","Array","containerElement","HTMLElement","useWindow","headerHeight","renderDistance","bottomBufferRatio","scrollToKey","scrollPosition","containerHeight","rowsContainerHeight","resizeObserver","visibleSections","logger","debug","containerTop","containerBottom","currentRowTop","currentRowBottom","map","rows","reduce","visibleRows","row","height","distance","filter","length","visibleItems","flatMap","_ref","_ref2","items","rowIdToKeyMap","_rowIdToKeyMap","item","id","usedTokens","_ref3","unusedTokens","values","includes","_ref4","pop","Math","random","toString","substr","finalMapping","_ref5","totalHeight","sectionHeight","paddingTop","sectionKey","rowsContainerStyle","isNearBottom","buffer","container","$refs","watch","value","currentRowTopDistanceFromTop","scrollTo","top","behavior","beforeCreate","mounted","ResizeObserver","entries","entry","cr","contentRect","target","classList","contains","addEventListener","updateContainerSize","passive","innerHeight","observe","rowsContainer","updateScrollPosition","beforeDestroy","removeEventListener","disconnect","_onScrollHandle","requestAnimationFrame","scrollY","scrollTop","_setupProxy","ref","style","_t","NcButton","NcTextField","Check","innerVersionLabel","$nextTick","labelInput","$el","getElementsByTagName","focus","setVersionLabel","translate","Version","VirtualScrolling","VersionLabelForm","preventDefault","trim","NcLoadingIcon","NcModal","mixins","isMobile","isActive","versions","loading","showVersionLabelForm","orderedVersions","sort","a","b","initialVersionMtime","min","viewerFileInfo","davPermissions","mime","mimetype","basename","filename","fileid","OCA","Viewer","mimetypesCompare","subscribe","fetchVersions","beforeUnmount","unsubscribe","update","resetState","setIsActive","async","getCurrentUser","uid","client","getDirectoryContents","details","lastmod","unix","generateUrl","fileId","fileEtag","etag","file","fileVersion","getetag","source","formatVersion","exception","error","handleRestore","oldFileInfo","restoreStartedEventState","emit","moveFile","showSuccess","showError","handleLabelUpdateRequest","editedVersion","handleLabelUpdate","newLabel","oldLabel","customRequest","method","handleDelete","index","indexOf","splice","deleteFile","push","$set","openVersion","open","v","enableSidebar","compare","_l","slot","Vue","prototype","n","use","VTooltip","View","extend","VersionTab","TabInstance","Files","Sidebar","registerTab","Tab","iconSvg","mount","el","context","$destroy","parent","$mount","destroy","isDirectory","___CSS_LOADER_EXPORT___","module","webpackContext","req","webpackContextResolve","__webpack_require__","o","e","code","keys","resolve","exports","setUid","C","P","Yt","r","s","floor","log","i","d","pow","toFixed","parseFloat","toLocaleString","N","NONE","CREATE","SHARE","ALL","j","Y","nc","oc","ocs","V","_nc_dav_properties","join","L","_nc_dav_namespaces","sr","or","R","Folder","File","J","match","X","URL","Date","crtime","owner","attributes","root","status","Q","NEW","FAILED","LOADING","LOCKED","D","_data","_attributes","_knownDavService","constructor","set","updateMtime","Reflect","deleteProperty","Proxy","replace","encodedSource","origin","slice","extension","dirname","isDavRessource","pathname","move","rename","ye","super","ee","te","ur","setHeaders","patch","u","fetch","dr","includeSelf","ve","be","parse","parseInt","getcontentlength","O","RegExp","isExist","isEmptyObject","merge","l","f","c","getValue","isName","exec","getAllMatches","startIndex","lastIndex","g","nameRegexp","k","re","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","allowBooleanAttributes","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","attributeValueProcessor","stopNodes","alwaysCreateTextNode","isArray","commentPropName","unpairedTags","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","buildOptions","assign","defaultOptions","ne","ie","Nt","bt","Et","hasOwnProperty","prettify","yt","vt","se","Pt","h","xt","oe","K","_","E","indentBy","suppressUnpairedNode","suppressEmptyNode","endsWith","suppressBooleanAttributes","lastIndexOf","entities","regex","val","Ft","Vt","oneListGroup","isAttribute","attrPrefixLen","St","processTextOrObjNode","Lt","indentate","Rt","tagEndChar","newLine","j2x","buildTextValNode","attrStr","buildObjectNode","repeat","arrayNodeName","call","buildAttrPairStr","replaceEntitiesValue","closeTag","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","m","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","getter","__esModule","definition","defineProperty","enumerable","get","chunkId","Promise","all","promises","globalThis","Function","obj","prop","done","script","needAttach","scripts","document","getAttribute","createElement","charset","timeout","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","head","appendChild","Symbol","toStringTag","nmd","paths","children","scriptUrl","importScripts","currentScript","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