diff --git a/apps/files/src/components/FileEntry.vue b/apps/files/src/components/FileEntry.vue index eb6ad9f7e186d..337e4c7b6ac3d 100644 --- a/apps/files/src/components/FileEntry.vue +++ b/apps/files/src/components/FileEntry.vue @@ -66,7 +66,8 @@ ref="actionsMenu" :disabled="source._loading" :force-title="true" - :inline="enabledInlineActions.length"> + :inline="enabledInlineActions.length" + :open.sync="openedMenu"> 1 + this.actionsMenuStore.opened = this.isSelected && isMoreThanOneSelected ? 'global' : this + + // Prevent any browser defaults + event.preventDefault() + event.stopPropagation() + }, + t: translate, formatFileSize, }, diff --git a/apps/files/src/components/FilesListHeaderActions.vue b/apps/files/src/components/FilesListHeaderActions.vue index d60fd81ad005a..f136e281f0998 100644 --- a/apps/files/src/components/FilesListHeaderActions.vue +++ b/apps/files/src/components/FilesListHeaderActions.vue @@ -24,7 +24,8 @@ + :inline="3" + :open.sync="openedMenu"> node._loading) }, + + openedMenu: { + get() { + return this.actionsMenuStore.opened === 'global' + }, + set(opened) { + this.actionsMenuStore.opened = opened ? 'global' : null + }, + }, }, methods: { diff --git a/apps/files/src/store/actionsmenu.ts b/apps/files/src/store/actionsmenu.ts new file mode 100644 index 0000000000000..b68f499847034 --- /dev/null +++ b/apps/files/src/store/actionsmenu.ts @@ -0,0 +1,31 @@ +/** + * @copyright Copyright (c) 2023 John Molakvoæ + * + * @author John Molakvoæ + * + * @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 . + * + */ +/* eslint-disable */ +import { defineStore } from 'pinia' +import Vue from 'vue' +import type { ActionsMenuStore } from '../types' + +export const useActionsMenuStore = defineStore('actionsmenu', { + state: () => ({ + opened: null, + } as ActionsMenuStore), +}) diff --git a/apps/files/src/types.ts b/apps/files/src/types.ts index 9bbb572faaf82..4c3d57d3e621a 100644 --- a/apps/files/src/types.ts +++ b/apps/files/src/types.ts @@ -22,6 +22,7 @@ /* eslint-disable */ import type { Folder } from '@nextcloud/files' import type { Node } from '@nextcloud/files' +import type { ComponentInstance } from 'vue' // Global definitions export type Service = string @@ -86,3 +87,9 @@ export interface SelectionStore { lastSelection: FileId[] lastSelectedIndex: number | null } + +// Actions menu store +export type GlobalActions = 'global' +export interface ActionsMenuStore { + opened: ComponentInstance|GlobalActions|null +} diff --git a/dist/files-main.js b/dist/files-main.js index 40d73a7f03d4f..6e4791a468e23 100644 --- a/dist/files-main.js +++ b/dist/files-main.js @@ -1,3 +1,3 @@ /*! For license information please see files-main.js.LICENSE.txt */ -!function(){"use strict";var e,n={41638:function(e,n,i){var r=i(17499),o=i(79954),a=i(31352),s=i(79753),l=i(45994),c=function(){var t,e,n,i,r=(null===(t=OCA)||void 0===t||null===(e=t.Files)||void 0===e||null===(n=e.App)||void 0===n||null===(i=n.currentFileList)||void 0===i?void 0:i.dirInfo)||{path:"/",name:""};return"".concat(r.path,"/").concat(r.name).replace(/\/\//gi,"/")},u=i(4820),d=i(20144),f=i(62520),p=i(64024),A=i(93455),h=i.n(A),v=i(70110),m=i.n(v);function g(t,e,n,i,r,o,a){try{var s=t[o](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(i,r)}function b(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var o=t.apply(e,n);function a(t){g(o,i,r,a,s,"next",t)}function s(t){g(o,i,r,a,s,"throw",t)}a(void 0)}))}}var w=function(){var t=b(regeneratorRuntime.mark((function t(){var e;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,u.default.get((0,s.generateOcsUrl)("apps/files/api/v1/templates"));case 2:return e=t.sent,t.abrupt("return",e.data.ocs.data);case 4:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}(),y=function(){var t=b(regeneratorRuntime.mark((function t(e,n,i){var r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,u.default.post((0,s.generateOcsUrl)("apps/files/api/v1/templates/create"),{filePath:e,templatePath:n,templateType:i});case 2:return r=t.sent,t.abrupt("return",r.data.ocs.data);case 4:case"end":return t.stop()}}),t)})));return function(e,n,i){return t.apply(this,arguments)}}(),C=256,_={name:"TemplatePreview",inheritAttrs:!1,props:{basename:{type:String,required:!0},checked:{type:Boolean,default:!1},fileid:{type:[String,Number],required:!0},filename:{type:String,required:!0},previewUrl:{type:String,default:null},hasPreview:{type:Boolean,default:!0},mime:{type:String,required:!0},ratio:{type:Number,default:null}},data:function(){return{failedPreview:!1}},computed:{nameWithoutExt:function(){return this.basename.indexOf(".")>-1?this.basename.split(".").slice(0,-1).join("."):this.basename},id:function(){return"template-picker-".concat(this.fileid)},realPreviewUrl:function(){return this.failedPreview&&this.mimeIcon?this.mimeIcon:this.previewUrl?this.previewUrl:(0,l.ts)()?(0,s.generateUrl)("/core/preview?fileId=".concat(this.fileid,"&x=").concat(C,"&y=").concat(C,"&a=1")):(0,s.generateUrl)("/apps/files_sharing/publicpreview/".concat(document.getElementById("sharingToken")&&document.getElementById("sharingToken").value,"?fileId=").concat(this.fileid,"&file=").concat((t=this.filename,e=(t.startsWith("/")?t:"/".concat(t)).split("/"),n="",e.forEach((function(t){""!==t&&(n+="/"+encodeURIComponent(t))})),n),"&x=").concat(C,"&y=").concat(C,"&a=1"));var t,e,n},mimeIcon:function(){return OC.MimeType.getIconUrl(this.mime)}},methods:{onCheck:function(){this.$emit("check",this.fileid)},onFailure:function(){this.failedPreview=!0}}},x=i(93379),S=i.n(x),k=i(7795),P=i.n(k),I=i(90569),E=i.n(I),N=i(3565),O=i.n(N),j=i(19216),B=i.n(j),F=i(44589),T=i.n(F),z=i(3491),D={};D.styleTagTransform=T(),D.setAttributes=O(),D.insert=E().bind(null,"head"),D.domAPI=P(),D.insertStyleElement=B(),S()(z.Z,D),z.Z&&z.Z.locals&&z.Z.locals;var U=i(51900),R=(0,U.Z)(_,(function(){var t=this,e=t._self._c;return e("li",{staticClass:"template-picker__item"},[e("input",{staticClass:"radio",attrs:{id:t.id,type:"radio",name:"template-picker"},domProps:{checked:t.checked},on:{change:t.onCheck}}),t._v(" "),e("label",{staticClass:"template-picker__label",attrs:{for:t.id}},[e("div",{staticClass:"template-picker__preview",class:t.failedPreview?"template-picker__preview--failed":""},[e("img",{staticClass:"template-picker__image",attrs:{src:t.realPreviewUrl,alt:"",draggable:"false"},on:{error:t.onFailure}})]),t._v(" "),e("span",{staticClass:"template-picker__title"},[t._v("\n\t\t\t"+t._s(t.nameWithoutExt)+"\n\t\t")])])])}),[],!1,null,"6c072a31",null).exports,L=i(25108);function V(t,e,n,i,r,o,a){try{var s=t[o](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(i,r)}function Z(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var o=t.apply(e,n);function a(t){V(o,i,r,a,s,"next",t)}function s(t){V(o,i,r,a,s,"throw",t)}a(void 0)}))}}var q={name:"TemplatePicker",components:{NcEmptyContent:h(),NcModal:m(),TemplatePreview:R},props:{logger:{type:Object,required:!0}},data:function(){return{checked:-1,loading:!1,name:null,opened:!1,provider:null}},computed:{nameWithoutExt:function(){return this.name.indexOf(".")>-1?this.name.split(".").slice(0,-1).join("."):this.name},emptyTemplate:function(){var e,n;return{basename:t("files","Blank"),fileid:-1,filename:this.t("files","Blank"),hasPreview:!1,mime:(null===(e=this.provider)||void 0===e?void 0:e.mimetypes[0])||(null===(n=this.provider)||void 0===n?void 0:n.mimetypes)}},selectedTemplate:function(){var t=this;return this.provider.templates.find((function(e){return e.fileid===t.checked}))},style:function(){return{"--margin":"8px","--width":"160px","--border":"2px","--fullwidth":"180px","--height":this.provider.ratio?Math.round(160/this.provider.ratio)+"px":null}}},methods:{open:function(t,e){var n=this;return Z(regeneratorRuntime.mark((function i(){var r,o;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return n.checked=n.emptyTemplate.fileid,n.name=t,n.provider=e,i.next=5,w();case 5:if(r=i.sent,null!==(o=r.find((function(t){return t.app===e.app&&t.label===e.label})))){i.next=9;break}throw new Error("Failed to match provider in results");case 9:if(n.provider=o,0!==o.templates.length){i.next=13;break}return n.onSubmit(),i.abrupt("return");case 13:n.opened=!0;case 14:case"end":return i.stop()}}),i)})))()},close:function(){this.checked=this.emptyTemplate.fileid,this.loading=!1,this.name=null,this.opened=!1,this.provider=null},onCheck:function(t){this.checked=t},onSubmit:function(){var t=this;return Z(regeneratorRuntime.mark((function e(){var n,i,r,o,a,s,l,u,d,A,h,v,m;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.loading=!0,o=c(),a=null===(n=OCA)||void 0===n||null===(i=n.Files)||void 0===i||null===(r=i.App)||void 0===r?void 0:r.currentFileList,t.nameWithoutExt===t.name&&(t.logger.debug("Fixed invalid filename",{name:t.name,extension:null===(s=t.provider)||void 0===s?void 0:s.extension}),t.name=t.name+(null===(l=t.provider)||void 0===l?void 0:l.extension)),e.prev=4,e.next=7,y((0,f.normalize)("".concat(o,"/").concat(t.name)),null===(u=t.selectedTemplate)||void 0===u?void 0:u.filename,null===(d=t.selectedTemplate)||void 0===d?void 0:d.templateType);case 7:return A=e.sent,t.logger.debug("Created new file",A),e.next=11,null==a?void 0:a.addAndFetchFileInfo(t.name).then((function(t,e){return e}));case 11:h=e.sent,v=new OCA.Files.FileInfoModel(h,{filesClient:null==a?void 0:a.filesClient}),(m=OCA.Files.fileActions.getDefaultFileAction(A.mime,"file",OC.PERMISSION_ALL))&&m.action(A.basename,{$file:null==a?void 0:a.findFileEl(t.name),dir:o,fileList:a,fileActions:null==a?void 0:a.fileActions,fileInfoModel:v}),t.close(),e.next=23;break;case 18:e.prev=18,e.t0=e.catch(4),t.logger.error("Error while creating the new file from template"),L.error(e.t0),(0,p.x2)(t.t("files","Unable to create new file from template"));case 23:return e.prev=23,t.loading=!1,e.finish(23);case 26:case"end":return e.stop()}}),e,null,[[4,18,23,26]])})))()}}},G=q,M=i(5103),$={};$.styleTagTransform=T(),$.setAttributes=O(),$.insert=E().bind(null,"head"),$.domAPI=P(),$.insertStyleElement=B(),S()(M.Z,$),M.Z&&M.Z.locals&&M.Z.locals;var W=(0,U.Z)(G,(function(){var t=this,e=t._self._c;return t.opened?e("NcModal",{staticClass:"templates-picker",attrs:{"clear-view-delay":-1,size:"normal"},on:{close:t.close}},[e("form",{staticClass:"templates-picker__form",style:t.style,on:{submit:function(e){return e.preventDefault(),e.stopPropagation(),t.onSubmit.apply(null,arguments)}}},[e("h2",[t._v(t._s(t.t("files","Pick a template for {name}",{name:t.nameWithoutExt})))]),t._v(" "),e("ul",{staticClass:"templates-picker__list"},[e("TemplatePreview",t._b({attrs:{checked:t.checked===t.emptyTemplate.fileid},on:{check:t.onCheck}},"TemplatePreview",t.emptyTemplate,!1)),t._v(" "),t._l(t.provider.templates,(function(n){return e("TemplatePreview",t._b({key:n.fileid,attrs:{checked:t.checked===n.fileid,ratio:t.provider.ratio},on:{check:t.onCheck}},"TemplatePreview",n,!1))}))],2),t._v(" "),e("div",{staticClass:"templates-picker__buttons"},[e("button",{on:{click:t.close}},[t._v("\n\t\t\t\t"+t._s(t.t("files","Cancel"))+"\n\t\t\t")]),t._v(" "),e("input",{staticClass:"primary",attrs:{type:"submit","aria-label":t.t("files","Create a new file with the selected template")},domProps:{value:t.t("files","Create")}})])]),t._v(" "),t.loading?e("NcEmptyContent",{staticClass:"templates-picker__loading",attrs:{icon:"icon-loading"}},[t._v("\n\t\t"+t._s(t.t("files","Creating file"))+"\n\t")]):t._e()],1):t._e()}),[],!1,null,"715b4161",null),H=W.exports;function K(t,e,n,i,r,o,a){try{var s=t[o](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(i,r)}var Y=(0,r.IY)().setApp("files").detectUser().build();d.default.mixin({methods:{t:a.Iu,n:a.uN}});var Q=document.createElement("div");Q.id="template-picker",document.body.appendChild(Q);var J=(0,o.j)("files","templates",[]),X=(0,o.j)("files","templates_path",!1);Y.debug("Templates providers",J),Y.debug("Templates folder",{templatesPath:X});var tt=new(d.default.extend(H))({name:"TemplatePicker",propsData:{logger:Y}});tt.$mount("#template-picker"),window.addEventListener("DOMContentLoaded",(function(){if(!X){Y.debug("Templates folder not initialized");var t={attach:function(t){t.addMenuEntry({id:"template-init",displayName:(0,a.Iu)("files","Set up templates folder"),templateName:(0,a.Iu)("files","Templates"),iconClass:"icon-template-add",fileType:"file",actionHandler:function(e){nt(e),t.removeMenuEntry("template-init")}})}};OC.Plugins.register("OCA.Files.NewFileMenu",t)}})),J.forEach((function(t,e){var n={attach:function(n){var i=n.fileList;"files"!==i.id&&"files.public"!==i.id||n.addMenuEntry({id:"template-new-".concat(t.app,"-").concat(e),displayName:t.label,templateName:t.label+t.extension,iconClass:t.iconClass||"icon-file",fileType:"file",actionHandler:function(e){tt.open(e,t)}})}};OC.Plugins.register("OCA.Files.NewFileMenu",n)}));var et,nt=function(){var t,e=(t=regeneratorRuntime.mark((function t(e){var n,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=(c()+"/".concat(e)).replace("//","/"),t.prev=1,Y.debug("Initializing the templates directory",{templatePath:n}),t.next=5,u.default.post((0,s.generateOcsUrl)("apps/files/api/v1/templates/path"),{templatePath:n,copySystemTemplates:!0});case 5:i=t.sent,OCA.Files.App.currentFileList.changeDirectory(n,!0,!0),J=i.data.ocs.data.templates,X=i.data.ocs.data.template_path,t.next=15;break;case 11:t.prev=11,t.t0=t.catch(1),Y.error("Unable to initialize the templates directory"),(0,p.x2)((0,a.Iu)("files","Unable to initialize the templates directory"));case 15:case"end":return t.stop()}}),t,null,[[1,11]])})),function(){var e=this,n=arguments;return new Promise((function(i,r){var o=t.apply(e,n);function a(t){K(o,i,r,a,s,"next",t)}function s(t){K(o,i,r,a,s,"throw",t)}a(void 0)}))});return function(t){return e.apply(this,arguments)}}(),it=i(78595);et={attach:function(t){var e=this;(0,it.Ld)("nextcloud:unified-search.search",(function(e){var n=e.query;t.setFilter(n)})),(0,it.Ld)("nextcloud:unified-search.reset",(function(){e.query=null,t.setFilter("")}))}},window.OC.Plugins.register("OCA.Files.FileList",et);var rt=i(91770),ot=i(78510),at=(0,r.IY)().setApp("files").detectUser().build();function st(t){return st="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},st(t)}function lt(t,e){for(var n=0;n0&&t.map((function(t){return t.permissions})).every((function(t){return 0!=(t&rt.y3.DELETE)}))},exec:function(t){return At(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,u.default.delete(t.source);case 3:return(0,it.j8)("files:file:deleted",t),e.abrupt("return",!0);case 7:return e.prev=7,e.t0=e.catch(0),at.error("Error while deleting a file",{error:e.t0,source:t.source,node:t}),e.abrupt("return",!1);case 11:case"end":return e.stop()}}),e,null,[[0,7]])})))()},execBatch:function(t,e){var n=this;return At(regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.abrupt("return",Promise.all(t.map((function(t){return n.exec(t,e)}))));case 1:case"end":return i.stop()}}),i)})))()},order:100}),void 0===window._nc_fileactions&&(window._nc_fileactions=[],at.debug("FileActions initialized")),window._nc_fileactions.find((function(t){return t.id===ut.id}))?at.error("FileAction ".concat(ut.id," already registered"),{action:ut}):window._nc_fileactions.push(ut);var bt=function(t){var e=t.id,n=t.name,i=t.order,r=t.icon,o=t.parent,a=t.classes,s=void 0===a?"":a,l=t.expanded,c=t.params;OCP.Files.Navigation.register({id:e,name:n,order:i,params:c,parent:o,expanded:!0===l,iconClass:r?"icon-".concat(r):"nav-icon-"+e,legacy:!0,sticky:s.includes("pinned")})},wt=i(59305),yt=i(41487),Ct=i.n(yt);function _t(t){return _t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_t(t)}function xt(t,e){for(var n=0;n0&&void 0!==e[0]?e[0]:null,!n.loadingStorageStats){i.next=3;break}return i.abrupt("return");case 3:return n.loadingStorageStats=!0,i.prev=4,i.next=7,u.default.get((0,s.generateUrl)("/apps/files/api/v1/stats"));case 7:if(null!=(a=i.sent)&&null!==(o=a.data)&&void 0!==o&&o.data){i.next=10;break}throw new Error("Invalid storage stats");case 10:n.storageStats=a.data.data,i.next=17;break;case 13:i.prev=13,i.t0=i.catch(4),at.error("Could not refresh storage stats",{error:i.t0}),r&&(0,p.x2)(t("files","Could not refresh storage stats"));case 17:return i.prev=17,n.loadingStorageStats=!1,i.finish(17);case 20:case"end":return i.stop()}}),i,null,[[4,13,17,20]])})))()},t:a.Iu}},Wt=$t,Ht=i(358),Kt={};Kt.styleTagTransform=T(),Kt.setAttributes=O(),Kt.insert=E().bind(null,"head"),Kt.domAPI=P(),Kt.insertStyleElement=B(),S()(Ht.Z,Kt),Ht.Z&&Ht.Z.locals&&Ht.Z.locals;var Yt=(0,U.Z)(Wt,(function(){var t=this,e=t._self._c;return t.storageStats?e("NcAppNavigationItem",{staticClass:"app-navigation-entry__settings-quota",class:{"app-navigation-entry__settings-quota--not-unlimited":t.storageStats.quota>=0},attrs:{"aria-label":t.t("files","Storage informations"),loading:t.loadingStorageStats,name:t.storageStatsTitle,title:t.storageStatsTooltip,"data-cy-files-navigation-settings-quota":""},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.debounceUpdateStorageStats.apply(null,arguments)}}},[e("ChartPie",{attrs:{slot:"icon",size:20},slot:"icon"}),t._v(" "),t.storageStats.quota>=0?e("NcProgressBar",{attrs:{slot:"extra",error:t.storageStats.relative>80,value:Math.min(t.storageStats.relative,100)},slot:"extra"}):t._e()],1):t._e()}),[],!1,null,"26c061ec",null),Qt=Yt.exports,Jt=i(68988),Xt=i.n(Jt),te=i(16809),ee=i.n(te),ne=i(20571),ie=i.n(ne),re=i(70386),oe=i(36029),ae=i.n(oe),se={name:"Setting",props:{el:{type:Function,required:!0}},mounted:function(){this.$el.appendChild(this.el())}},le=(0,U.Z)(se,(function(){return(0,this._self._c)("div")}),[],!1,null,null,null).exports;function ce(t,e,n,i,r,o,a){try{var s=t[o](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(i,r)}var ue=(0,o.j)("files","config",{show_hidden:!1,crop_image_previews:!0}),de=function(){var t=(0,wt.Q_)("userconfig",{state:function(){return{userConfig:ue}},actions:{onUpdate:function(t,e){d.default.set(this.userConfig,t,e)},update:function(t,e){return(n=regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,u.default.post((0,s.generateUrl)("/apps/files/api/v1/config/"+t),{value:e});case 2:(0,it.j8)("files:config:updated",{key:t,value:e});case 3:case"end":return n.stop()}}),n)})),function(){var t=this,e=arguments;return new Promise((function(i,r){var o=n.apply(t,e);function a(t){ce(o,i,r,a,s,"next",t)}function s(t){ce(o,i,r,a,s,"throw",t)}a(void 0)}))})();var n}}}),e=t();return e._initialized||((0,it.Ld)("files:config:updated",(function(t){var n=t.key,i=t.value;e.onUpdate(n,i)})),e._initialized=!0),e};function fe(t,e,n,i,r,o,a){try{var s=t[o](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(i,r)}var pe={name:"Settings",components:{Clipboard:re.Z,NcAppSettingsDialog:Xt(),NcAppSettingsSection:ee(),NcCheckboxRadioSwitch:ie(),NcInputField:ae(),Setting:le},props:{open:{type:Boolean,default:!1}},setup:function(){return{userConfigStore:de()}},data:function(){var t,e,n,i;return{settings:(null===(t=window.OCA)||void 0===t||null===(e=t.Files)||void 0===e||null===(n=e.Settings)||void 0===n?void 0:n.settings)||[],webdavUrl:(0,s.generateRemoteUrl)("dav/files/"+encodeURIComponent(null===(i=(0,l.ts)())||void 0===i?void 0:i.uid)),webdavDocs:"https://docs.nextcloud.com/server/stable/go.php?to=user-webdav",appPasswordUrl:(0,s.generateUrl)("/settings/user/security#generate-app-token-section"),webdavUrlCopied:!1}},computed:{userConfig:function(){return this.userConfigStore.userConfig}},beforeMount:function(){this.settings.forEach((function(t){return t.open()}))},beforeDestroy:function(){this.settings.forEach((function(t){return t.close()}))},methods:{onClose:function(){this.$emit("close")},setConfig:function(t,e){this.userConfigStore.update(t,e)},copyCloudId:function(){var e,n=this;return(e=regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(document.querySelector("input#webdav-url-input").select(),navigator.clipboard){e.next=4;break}return(0,p.x2)(t("files","Clipboard is not available")),e.abrupt("return");case 4:return e.next=6,navigator.clipboard.writeText(n.webdavUrl);case 6:n.webdavUrlCopied=!0,(0,p.s$)(t("files","WebDAV URL copied to clipboard")),setTimeout((function(){n.webdavUrlCopied=!1}),5e3);case 9:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(i,r){var o=e.apply(t,n);function a(t){fe(o,i,r,a,s,"next",t)}function s(t){fe(o,i,r,a,s,"throw",t)}a(void 0)}))})()},t:a.Iu}},Ae=pe,he=i(20613),ve={};ve.styleTagTransform=T(),ve.setAttributes=O(),ve.insert=E().bind(null,"head"),ve.domAPI=P(),ve.insertStyleElement=B(),S()(he.Z,ve),he.Z&&he.Z.locals&&he.Z.locals;var me=(0,U.Z)(Ae,(function(){var t=this,e=t._self._c;return e("NcAppSettingsDialog",{attrs:{open:t.open,"show-navigation":!0,title:t.t("files","Files settings")},on:{"update:open":t.onClose}},[e("NcAppSettingsSection",{attrs:{id:"settings",title:t.t("files","Files settings")}},[e("NcCheckboxRadioSwitch",{attrs:{checked:t.userConfig.show_hidden},on:{"update:checked":function(e){return t.setConfig("show_hidden",e)}}},[t._v("\n\t\t\t"+t._s(t.t("files","Show hidden files"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{checked:t.userConfig.crop_image_previews},on:{"update:checked":function(e){return t.setConfig("crop_image_previews",e)}}},[t._v("\n\t\t\t"+t._s(t.t("files","Crop image previews"))+"\n\t\t")])],1),t._v(" "),0!==t.settings.length?e("NcAppSettingsSection",{attrs:{id:"more-settings",title:t.t("files","Additional settings")}},[t._l(t.settings,(function(t){return[e("Setting",{key:t.name,attrs:{el:t.el}})]}))],2):t._e(),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"webdav",title:t.t("files","WebDAV")}},[e("NcInputField",{attrs:{id:"webdav-url-input","show-trailing-button":!0,success:t.webdavUrlCopied,"trailing-button-label":t.t("files","Copy to clipboard"),value:t.webdavUrl,readonly:"readonly",type:"url"},on:{focus:function(t){return t.target.select()},"trailing-button-click":t.copyCloudId},scopedSlots:t._u([{key:"trailing-button-icon",fn:function(){return[e("Clipboard",{attrs:{size:20}})]},proxy:!0}])}),t._v(" "),e("em",[e("a",{staticClass:"setting-link",attrs:{href:t.webdavDocs,target:"_blank",rel:"noreferrer noopener"}},[t._v("\n\t\t\t\t"+t._s(t.t("files","Use this address to access your Files via WebDAV"))+" ↗\n\t\t\t")])]),t._v(" "),e("br"),t._v(" "),e("em",[e("a",{staticClass:"setting-link",attrs:{href:t.appPasswordUrl}},[t._v("\n\t\t\t\t"+t._s(t.t("files","If you have enabled 2FA, you must create and use a new app password by clicking here."))+" ↗\n\t\t\t")])])],1)],1)}),[],!1,null,"2e129f40",null).exports;function ge(t){return ge="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ge(t)}function be(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function we(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,i=new Array(e);n0&&void 0!==arguments[0]?arguments[0]:{id:"files"},e=t.id,n=this.Navigation.views.find((function(t){return t.id===e}));n&&n.legacy&&n.id!==this.currentView.id&&(this.$router.replace(we(we({},this.$route),{},{params:{view:n.id}})),this.Navigation.setActive(n),this.showView(n))},onToggleExpand:function(t){t.expanded=!t.expanded,u.default.post((0,s.generateUrl)("/apps/files/api/v1/toggleShowFolder/".concat(t.id)),{show:t.expanded})},generateToNavigation:function(t){if(t.params){var e=t.params,n=e.dir,i=e.fileid;return{name:"filelist",params:t.params,query:{dir:n,fileid:i}}}return{name:"filelist",params:{view:t.id}}},openSettings:function(){this.settingsOpened=!0},onSettingsClose:function(){this.settingsOpened=!1},t:a.Iu}},xe=_e,Se=i(65581),ke={};ke.styleTagTransform=T(),ke.setAttributes=O(),ke.insert=E().bind(null,"head"),ke.domAPI=P(),ke.insertStyleElement=B(),S()(Se.Z,ke),Se.Z&&Se.Z.locals&&Se.Z.locals;var Pe=(0,U.Z)(xe,(function(){var t=this,e=t._self._c;return e("NcAppNavigation",{attrs:{"data-cy-files-navigation":""},scopedSlots:t._u([{key:"list",fn:function(){return t._l(t.parentViews,(function(n){return e("NcAppNavigationItem",{key:n.id,attrs:{"allow-collapse":!0,"data-cy-files-navigation-item":n.id,icon:n.iconClass,open:n.expanded,pinned:n.sticky,title:n.name,to:t.generateToNavigation(n)},on:{"update:open":function(e){return t.onToggleExpand(n)}}},[n.icon?e("NcIconSvgWrapper",{attrs:{slot:"icon",svg:n.icon},slot:"icon"}):t._e(),t._v(" "),t._l(t.childViews[n.id],(function(i){return e("NcAppNavigationItem",{key:i.id,attrs:{"data-cy-files-navigation-item":i.id,exact:!0,icon:i.iconClass,title:i.name,to:t.generateToNavigation(i)}},[n.icon?e("NcIconSvgWrapper",{attrs:{slot:"icon",svg:n.icon},slot:"icon"}):t._e()],1)}))],2)}))},proxy:!0},{key:"footer",fn:function(){return[e("ul",{staticClass:"app-navigation-entry__settings"},[e("NavigationQuota"),t._v(" "),e("NcAppNavigationItem",{attrs:{"aria-label":t.t("files","Open the files app settings"),title:t.t("files","Files settings"),"data-cy-files-navigation-settings-button":""},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.openSettings.apply(null,arguments)}}},[e("Cog",{attrs:{slot:"icon",size:20},slot:"icon"})],1)],1)]},proxy:!0}])},[t._v(" "),t._v(" "),e("SettingsModal",{attrs:{open:t.settingsOpened,"data-cy-files-navigation-settings":""},on:{close:t.onSettingsClose}})],1)}),[],!1,null,"4238b71c",null),Ie=Pe.exports,Ee=i(23664),Ne=i(69680),Oe=i.n(Ne),je=i(10861),Be=i.n(je),Fe=i(64192),Te=i.n(Fe),ze=i(33581);function De(t){return De="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},De(t)}function Ue(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function Re(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:[];d.default.set(this,"selected",t)},setLastIndex:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;d.default.set(this,"lastSelection",t?this.selected:[]),d.default.set(this,"lastSelectedIndex",t)},reset:function(){d.default.set(this,"selected",[]),d.default.set(this,"lastSelection",[]),d.default.set(this,"lastSelectedIndex",null)}}}),Ge=function(t,e,n){return u.default.post((0,s.generateUrl)("/apps/files/api/v1/sorting"),{mode:t,direction:e,view:n})},Me=(0,o.j)("files","filesSortingConfig",{}),$e=(0,wt.Q_)("sorting",{state:function(){return{filesSortingConfig:Me}},getters:{isAscSorting:function(t){return function(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"files";return"desc"!==(null===(e=t.filesSortingConfig[n])||void 0===e?void 0:e.direction)}},getSortingMode:function(t){return function(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"files";return null===(e=t.filesSortingConfig[n])||void 0===e?void 0:e.mode}}},actions:{setSortingBy:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"basename",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"files",n=this.filesSortingConfig[e]||{};n.mode=t,n.direction="asc",d.default.set(this.filesSortingConfig,e,n),Ge(n.mode,n.direction,e)},toggleSortingDirection:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"files",e=this.filesSortingConfig[t]||{direction:"asc"},n="asc"===e.direction?"desc":"asc";e.direction=n,d.default.set(this.filesSortingConfig,t,e),Ge(e.mode,e.direction,t)}}}),We=i(15764),He=i(64412),Ke=i.n(He),Ye=i(44706),Qe=i.n(Ye);function Je(t){return Je="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Je(t)}function Xe(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function tn(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,i=new Array(e);nt.length)&&(e=t.length);for(var n=0,i=new Array(e);nt.length)&&(e=t.length);for(var n=0,i=new Array(e);n0?(Di.error("A setting with the same name is already registered"),!1):(this._settings.push(t),!0)}},{key:"settings",get:function(){return this._settings}}])&&Ri(e.prototype,n),Object.defineProperty(e,"prototype",{writable:!1}),t}();function Zi(t){return Zi="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Zi(t)}function qi(t,e){for(var n=0;n0&&(at.debug("Legacy files views detected. Processing...",tr),tr.forEach((function(t){bt(t),t.sublist&&t.sublist.forEach((function(e){return bt(mt(mt({},e),{},{parent:t.id}))}))}))),"serviceWorker"in navigator?window.addEventListener("load",jt(regeneratorRuntime.mark((function t(){var e,n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,e=(0,s.generateUrl)("/apps/files/preview-service-worker.js",{},{noRewrite:!0}),t.next=4,navigator.serviceWorker.register(e,{scope:"/"});case 4:n=t.sent,at.debug("SW registered: ",{registration:n}),t.next=11;break;case 8:t.prev=8,t.t0=t.catch(0),at.error("SW registration failed: ",{error:t.t0});case 11:case"end":return t.stop()}}),t,null,[[0,8]])})))):at.debug("Service Worker is not enabled on this browser.")},39959:function(t,e,n){var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".breadcrumb[data-v-68b3b20b]{flex:1 1 100% !important;width:100%}.breadcrumb[data-v-68b3b20b] a{cursor:pointer !important}","",{version:3,sources:["webpack://./apps/files/src/components/BreadCrumbs.vue"],names:[],mappings:"AACA,6BAEC,wBAAA,CACA,UAAA,CAEA,+BACC,yBAAA",sourcesContent:["\n.breadcrumb {\n\t// Take as much space as possible\n\tflex: 1 1 100% !important;\n\twidth: 100%;\n\n\t::v-deep a {\n\t\tcursor: pointer !important;\n\t}\n}\n\n"],sourceRoot:""}]),e.Z=a},41929:function(t,e,n){var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".custom-svg-icon[data-v-6646d6a5]{display:flex;align-items:center;align-self:center;justify-content:center;justify-self:center;width:44px;height:44px;opacity:1}.custom-svg-icon[data-v-6646d6a5] svg{height:22px;width:22px;fill:currentColor}","",{version:3,sources:["webpack://./apps/files/src/components/CustomSvgIconRender.vue"],names:[],mappings:"AACA,kCACC,YAAA,CACA,kBAAA,CACA,iBAAA,CACA,sBAAA,CACA,mBAAA,CACA,UAAA,CACA,WAAA,CACA,SAAA,CAEA,sCAGC,WAAA,CACA,UAAA,CACA,iBAAA",sourcesContent:["\n.custom-svg-icon {\n\tdisplay: flex;\n\talign-items: center;\n\talign-self: center;\n\tjustify-content: center;\n\tjustify-self: center;\n\twidth: 44px;\n\theight: 44px;\n\topacity: 1;\n\n\t::v-deep svg {\n\t\t// mdi icons have a size of 24px\n\t\t// 22px results in roughly 16px inner size\n\t\theight: 22px;\n\t\twidth: 22px;\n\t\tfill: currentColor;\n\t}\n}\n\n"],sourceRoot:""}]),e.Z=a},14310:function(t,e,n){var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,"td[data-v-4f1730f6],th[data-v-4f1730f6]{display:flex;align-items:center;flex:0 0 auto;justify-content:left;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}td span[data-v-4f1730f6],th span[data-v-4f1730f6]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list__row-checkbox[data-v-4f1730f6]{justify-content:center}.files-list__row-checkbox[data-v-4f1730f6] .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list__row-checkbox[data-v-4f1730f6] .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list__row-checkbox[data-v-4f1730f6] .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list__row-icon[data-v-4f1730f6]{display:flex;align-items:center;justify-content:center;width:var(--icon-preview-size);height:100%;margin-right:var(--checkbox-padding);color:var(--color-primary-element)}.files-list__row-icon>span[data-v-4f1730f6]{justify-content:flex-start}.files-list__row-icon[data-v-4f1730f6] svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list__row-icon-preview[data-v-4f1730f6]{overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center;background-size:contain}.files-list__row-name[data-v-4f1730f6]{overflow:hidden;flex:1 1 auto}.files-list__row-name a[data-v-4f1730f6]{display:flex;align-items:center;width:100%;height:100%}.files-list__row-name a:focus .files-list__row-name-text[data-v-4f1730f6],.files-list__row-name a:focus-visible .files-list__row-name-text[data-v-4f1730f6]{outline:2px solid var(--color-main-text) !important;border-radius:20px}.files-list__row-name .files-list__row-name-text[data-v-4f1730f6]{padding:5px 10px;margin-left:-10px}.files-list__row-actions[data-v-4f1730f6]{width:auto}.files-list__row-actions~td[data-v-4f1730f6],.files-list__row-actions~th[data-v-4f1730f6]{margin:0 var(--cell-margin)}.files-list__row-actions[data-v-4f1730f6]>button .button-vue__text{font-weight:normal}.files-list__row-actions[data-v-4f1730f6]>button:not(:hover,:focus,:active) .button-vue__wrapper{color:var(--color-text-maxcontrast)}.files-list__row-size[data-v-4f1730f6]{justify-content:flex-end;width:calc(var(--row-height)*1.5);color:var(--color-main-text)}.files-list__row-size[data-v-4f1730f6] .files-list__column-sort-button{padding:0 16px 0 4px !important}.files-list__row-size[data-v-4f1730f6] .files-list__column-sort-button .button-vue__wrapper{flex-direction:row}.files-list__row-column-custom[data-v-4f1730f6]{width:calc(var(--row-height)*2)}tr[data-v-4f1730f6]:hover,tr[data-v-4f1730f6]:focus,tr[data-v-4f1730f6]:active{background-color:var(--color-background-dark)}.files-list__row-icon-preview[data-v-4f1730f6]:not([style*=background]){background:var(--color-loading-dark)}","",{version:3,sources:["webpack://./apps/files/src/mixins/fileslist-row.scss","webpack://./apps/files/src/components/FileEntry.vue"],names:[],mappings:"AA4BA,wCACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,oBAAA,CACA,uBAAA,CACA,wBAAA,CACA,QAAA,CACA,SAAA,CACA,mCAAA,CACA,WAAA,CAKA,kDACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAIF,2CACC,sBAAA,CACA,kEACC,YAAA,CACA,sBAAA,CAEA,iCAAA,CAEA,qGACC,2BAAA,CACA,4BAAA,CACA,QAAA,CACA,8DAAA,CAGD,+FACC,mBAAA,CAKH,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,8BAAA,CACA,WAAA,CAEA,oCAAA,CACA,kCAAA,CAEA,4CACC,0BAAA,CAGD,2CACC,8BAAA,CACA,+BAAA,CAGD,+CACC,eAAA,CACA,8BAAA,CACA,+BAAA,CACA,kCAAA,CACA,2BAAA,CAEA,0BAAA,CACA,uBAAA,CAIF,uCAEC,eAAA,CAEA,aAAA,CAEA,yCACC,YAAA,CACA,kBAAA,CAEA,UAAA,CACA,WAAA,CAGA,4JAEC,mDAAA,CACA,kBAAA,CAIF,kEAEC,gBAAA,CACA,iBAAA,CAIF,0CACC,UAAA,CAGA,0FAEC,2BAAA,CAIA,mEAEC,kBAAA,CAED,iGAEC,mCAAA,CAKH,uCAEC,wBAAA,CACA,iCAAA,CAEA,4BAAA,CAGA,uEACC,+BAAA,CACA,4FACC,kBAAA,CAKH,gDACC,+BAAA,CCnKA,+EAGC,6CAAA,CAKF,wEACI,oCAAA",sourcesContent:["/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\n/**\n * ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠\n * This file is for every column styling that must be\n * shared between BOTH the files list AND the list header.\n * ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠\n */\ntd, th {\n\tdisplay: flex;\n\talign-items: center;\n\tflex: 0 0 auto;\n\tjustify-content: left;\n\twidth: var(--row-height);\n\theight: var(--row-height);\n\tmargin: 0;\n\tpadding: 0;\n\tcolor: var(--color-text-maxcontrast);\n\tborder: none;\n\n\t// Columns should try to add any text\n\t// node wrapped in a span. That should help\n\t// with the ellipsis on overflow.\n\tspan {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n}\n\n.files-list__row-checkbox {\n\tjustify-content: center;\n\t&::v-deep .checkbox-radio-switch {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\n\t\t--icon-size: var(--checkbox-size);\n\n\t\tlabel.checkbox-radio-switch__label {\n\t\t\twidth: var(--clickable-area);\n\t\t\theight: var(--clickable-area);\n\t\t\tmargin: 0;\n\t\t\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\n\t\t}\n\n\t\t.checkbox-radio-switch__icon {\n\t\t\tmargin: 0 !important;\n\t\t}\n\t}\n}\n\n.files-list__row-icon {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: var(--icon-preview-size);\n\theight: 100%;\n\t// Show same padding as the checkbox right padding for visual balance\n\tmargin-right: var(--checkbox-padding);\n\tcolor: var(--color-primary-element);\n\n\t& > span {\n\t\tjustify-content: flex-start;\n\t}\n\n\t&::v-deep svg {\n\t\twidth: var(--icon-preview-size);\n\t\theight: var(--icon-preview-size);\n\t}\n\n\t&-preview {\n\t\toverflow: hidden;\n\t\twidth: var(--icon-preview-size);\n\t\theight: var(--icon-preview-size);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\t// Center and contain the preview\n\t\tbackground-position: center;\n\t\tbackground-size: contain;\n\t}\n}\n\n.files-list__row-name {\n\t// Prevent link from overflowing\n\toverflow: hidden;\n\t// Take as much space as possible\n\tflex: 1 1 auto;\n\n\ta {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\t// Fill cell height and width\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\t\t// Keyboard indicator a11y\n\t\t&:focus .files-list__row-name-text,\n\t\t&:focus-visible .files-list__row-name-text {\n\t\t\toutline: 2px solid var(--color-main-text) !important;\n\t\t\tborder-radius: 20px;\n\t\t}\n\t}\n\n\t.files-list__row-name-text {\n\t\t// Make some space for the outline\n\t\tpadding: 5px 10px;\n\t\tmargin-left: -10px;\n\t}\n}\n\n.files-list__row-actions {\n\twidth: auto;\n\n\t// Add margin to all cells after the actions\n\t& ~ td,\n\t& ~ th {\n\t\tmargin: 0 var(--cell-margin);\n\t}\n\n\t&::v-deep > button {\n\t\t.button-vue__text {\n\t\t\t// Remove bold from default button styling\n\t\t\tfont-weight: normal;\n\t\t}\n\t\t&:not(:hover, :focus, :active) .button-vue__wrapper {\n\t\t\t// Also apply color-text-maxcontrast to non-active button\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.files-list__row-size {\n\t// Right align text\n\tjustify-content: flex-end;\n\twidth: calc(var(--row-height) * 1.5);\n\t// opacity varies with the size\n\tcolor: var(--color-main-text);\n\n\t// Icon is before text since size is right aligned\n\t::v-deep .files-list__column-sort-button {\n\t\tpadding: 0 16px 0 4px !important;\n\t\t.button-vue__wrapper {\n\t\t\tflex-direction: row;\n\t\t}\n\t}\n}\n\n.files-list__row-column-custom {\n\twidth: calc(var(--row-height) * 2);\n}\n","\n@import '../mixins/fileslist-row.scss';\n\n/* Hover effect on tbody lines only */\ntr {\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-dark);\n\t}\n}\n\n/* Preview not loaded animation effect */\n.files-list__row-icon-preview:not([style*='background']) {\n background: var(--color-loading-dark);\n\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\n}\n"],sourceRoot:""}]),e.Z=a},34689:function(t,e,n){var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,"td[data-v-3a8b911c],th[data-v-3a8b911c]{display:flex;align-items:center;flex:0 0 auto;justify-content:left;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}td span[data-v-3a8b911c],th span[data-v-3a8b911c]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list__row-checkbox[data-v-3a8b911c]{justify-content:center}.files-list__row-checkbox[data-v-3a8b911c] .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list__row-checkbox[data-v-3a8b911c] .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list__row-checkbox[data-v-3a8b911c] .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list__row-icon[data-v-3a8b911c]{display:flex;align-items:center;justify-content:center;width:var(--icon-preview-size);height:100%;margin-right:var(--checkbox-padding);color:var(--color-primary-element)}.files-list__row-icon>span[data-v-3a8b911c]{justify-content:flex-start}.files-list__row-icon[data-v-3a8b911c] svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list__row-icon-preview[data-v-3a8b911c]{overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center;background-size:contain}.files-list__row-name[data-v-3a8b911c]{overflow:hidden;flex:1 1 auto}.files-list__row-name a[data-v-3a8b911c]{display:flex;align-items:center;width:100%;height:100%}.files-list__row-name a:focus .files-list__row-name-text[data-v-3a8b911c],.files-list__row-name a:focus-visible .files-list__row-name-text[data-v-3a8b911c]{outline:2px solid var(--color-main-text) !important;border-radius:20px}.files-list__row-name .files-list__row-name-text[data-v-3a8b911c]{padding:5px 10px;margin-left:-10px}.files-list__row-actions[data-v-3a8b911c]{width:auto}.files-list__row-actions~td[data-v-3a8b911c],.files-list__row-actions~th[data-v-3a8b911c]{margin:0 var(--cell-margin)}.files-list__row-actions[data-v-3a8b911c]>button .button-vue__text{font-weight:normal}.files-list__row-actions[data-v-3a8b911c]>button:not(:hover,:focus,:active) .button-vue__wrapper{color:var(--color-text-maxcontrast)}.files-list__row-size[data-v-3a8b911c]{justify-content:flex-end;width:calc(var(--row-height)*1.5);color:var(--color-main-text)}.files-list__row-size[data-v-3a8b911c] .files-list__column-sort-button{padding:0 16px 0 4px !important}.files-list__row-size[data-v-3a8b911c] .files-list__column-sort-button .button-vue__wrapper{flex-direction:row}.files-list__row-column-custom[data-v-3a8b911c]{width:calc(var(--row-height)*2)}tr[data-v-3a8b911c]{padding-bottom:300px;border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}td[data-v-3a8b911c]{user-select:none;color:var(--color-text-maxcontrast) !important}","",{version:3,sources:["webpack://./apps/files/src/mixins/fileslist-row.scss","webpack://./apps/files/src/components/FilesListFooter.vue"],names:[],mappings:"AA4BA,wCACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,oBAAA,CACA,uBAAA,CACA,wBAAA,CACA,QAAA,CACA,SAAA,CACA,mCAAA,CACA,WAAA,CAKA,kDACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAIF,2CACC,sBAAA,CACA,kEACC,YAAA,CACA,sBAAA,CAEA,iCAAA,CAEA,qGACC,2BAAA,CACA,4BAAA,CACA,QAAA,CACA,8DAAA,CAGD,+FACC,mBAAA,CAKH,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,8BAAA,CACA,WAAA,CAEA,oCAAA,CACA,kCAAA,CAEA,4CACC,0BAAA,CAGD,2CACC,8BAAA,CACA,+BAAA,CAGD,+CACC,eAAA,CACA,8BAAA,CACA,+BAAA,CACA,kCAAA,CACA,2BAAA,CAEA,0BAAA,CACA,uBAAA,CAIF,uCAEC,eAAA,CAEA,aAAA,CAEA,yCACC,YAAA,CACA,kBAAA,CAEA,UAAA,CACA,WAAA,CAGA,4JAEC,mDAAA,CACA,kBAAA,CAIF,kEAEC,gBAAA,CACA,iBAAA,CAIF,0CACC,UAAA,CAGA,0FAEC,2BAAA,CAIA,mEAEC,kBAAA,CAED,iGAEC,mCAAA,CAKH,uCAEC,wBAAA,CACA,iCAAA,CAEA,4BAAA,CAGA,uEACC,+BAAA,CACA,4FACC,kBAAA,CAKH,gDACC,+BAAA,CCpKD,oBACC,oBAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAGD,oBACC,gBAAA,CAEA,8CAAA",sourcesContent:["/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\n/**\n * ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠\n * This file is for every column styling that must be\n * shared between BOTH the files list AND the list header.\n * ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠\n */\ntd, th {\n\tdisplay: flex;\n\talign-items: center;\n\tflex: 0 0 auto;\n\tjustify-content: left;\n\twidth: var(--row-height);\n\theight: var(--row-height);\n\tmargin: 0;\n\tpadding: 0;\n\tcolor: var(--color-text-maxcontrast);\n\tborder: none;\n\n\t// Columns should try to add any text\n\t// node wrapped in a span. That should help\n\t// with the ellipsis on overflow.\n\tspan {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n}\n\n.files-list__row-checkbox {\n\tjustify-content: center;\n\t&::v-deep .checkbox-radio-switch {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\n\t\t--icon-size: var(--checkbox-size);\n\n\t\tlabel.checkbox-radio-switch__label {\n\t\t\twidth: var(--clickable-area);\n\t\t\theight: var(--clickable-area);\n\t\t\tmargin: 0;\n\t\t\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\n\t\t}\n\n\t\t.checkbox-radio-switch__icon {\n\t\t\tmargin: 0 !important;\n\t\t}\n\t}\n}\n\n.files-list__row-icon {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: var(--icon-preview-size);\n\theight: 100%;\n\t// Show same padding as the checkbox right padding for visual balance\n\tmargin-right: var(--checkbox-padding);\n\tcolor: var(--color-primary-element);\n\n\t& > span {\n\t\tjustify-content: flex-start;\n\t}\n\n\t&::v-deep svg {\n\t\twidth: var(--icon-preview-size);\n\t\theight: var(--icon-preview-size);\n\t}\n\n\t&-preview {\n\t\toverflow: hidden;\n\t\twidth: var(--icon-preview-size);\n\t\theight: var(--icon-preview-size);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\t// Center and contain the preview\n\t\tbackground-position: center;\n\t\tbackground-size: contain;\n\t}\n}\n\n.files-list__row-name {\n\t// Prevent link from overflowing\n\toverflow: hidden;\n\t// Take as much space as possible\n\tflex: 1 1 auto;\n\n\ta {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\t// Fill cell height and width\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\t\t// Keyboard indicator a11y\n\t\t&:focus .files-list__row-name-text,\n\t\t&:focus-visible .files-list__row-name-text {\n\t\t\toutline: 2px solid var(--color-main-text) !important;\n\t\t\tborder-radius: 20px;\n\t\t}\n\t}\n\n\t.files-list__row-name-text {\n\t\t// Make some space for the outline\n\t\tpadding: 5px 10px;\n\t\tmargin-left: -10px;\n\t}\n}\n\n.files-list__row-actions {\n\twidth: auto;\n\n\t// Add margin to all cells after the actions\n\t& ~ td,\n\t& ~ th {\n\t\tmargin: 0 var(--cell-margin);\n\t}\n\n\t&::v-deep > button {\n\t\t.button-vue__text {\n\t\t\t// Remove bold from default button styling\n\t\t\tfont-weight: normal;\n\t\t}\n\t\t&:not(:hover, :focus, :active) .button-vue__wrapper {\n\t\t\t// Also apply color-text-maxcontrast to non-active button\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.files-list__row-size {\n\t// Right align text\n\tjustify-content: flex-end;\n\twidth: calc(var(--row-height) * 1.5);\n\t// opacity varies with the size\n\tcolor: var(--color-main-text);\n\n\t// Icon is before text since size is right aligned\n\t::v-deep .files-list__column-sort-button {\n\t\tpadding: 0 16px 0 4px !important;\n\t\t.button-vue__wrapper {\n\t\t\tflex-direction: row;\n\t\t}\n\t}\n}\n\n.files-list__row-column-custom {\n\twidth: calc(var(--row-height) * 2);\n}\n","\n@import '../mixins/fileslist-row.scss';\n\n// Scoped row\ntr {\n\tpadding-bottom: 300px;\n\tborder-top: 1px solid var(--color-border);\n\t// Prevent hover effect on the whole row\n\tbackground-color: transparent !important;\n\tborder-bottom: none !important;\n}\n\ntd {\n\tuser-select: none;\n\t// Make sure the cell colors don't apply to column headers\n\tcolor: var(--color-text-maxcontrast) !important;\n}\n\n"],sourceRoot:""}]),e.Z=a},41794:function(t,e,n){var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,"td[data-v-2cb97ee2],th[data-v-2cb97ee2]{display:flex;align-items:center;flex:0 0 auto;justify-content:left;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}td span[data-v-2cb97ee2],th span[data-v-2cb97ee2]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list__row-checkbox[data-v-2cb97ee2]{justify-content:center}.files-list__row-checkbox[data-v-2cb97ee2] .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list__row-checkbox[data-v-2cb97ee2] .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list__row-checkbox[data-v-2cb97ee2] .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list__row-icon[data-v-2cb97ee2]{display:flex;align-items:center;justify-content:center;width:var(--icon-preview-size);height:100%;margin-right:var(--checkbox-padding);color:var(--color-primary-element)}.files-list__row-icon>span[data-v-2cb97ee2]{justify-content:flex-start}.files-list__row-icon[data-v-2cb97ee2] svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list__row-icon-preview[data-v-2cb97ee2]{overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center;background-size:contain}.files-list__row-name[data-v-2cb97ee2]{overflow:hidden;flex:1 1 auto}.files-list__row-name a[data-v-2cb97ee2]{display:flex;align-items:center;width:100%;height:100%}.files-list__row-name a:focus .files-list__row-name-text[data-v-2cb97ee2],.files-list__row-name a:focus-visible .files-list__row-name-text[data-v-2cb97ee2]{outline:2px solid var(--color-main-text) !important;border-radius:20px}.files-list__row-name .files-list__row-name-text[data-v-2cb97ee2]{padding:5px 10px;margin-left:-10px}.files-list__row-actions[data-v-2cb97ee2]{width:auto}.files-list__row-actions~td[data-v-2cb97ee2],.files-list__row-actions~th[data-v-2cb97ee2]{margin:0 var(--cell-margin)}.files-list__row-actions[data-v-2cb97ee2]>button .button-vue__text{font-weight:normal}.files-list__row-actions[data-v-2cb97ee2]>button:not(:hover,:focus,:active) .button-vue__wrapper{color:var(--color-text-maxcontrast)}.files-list__row-size[data-v-2cb97ee2]{justify-content:flex-end;width:calc(var(--row-height)*1.5);color:var(--color-main-text)}.files-list__row-size[data-v-2cb97ee2] .files-list__column-sort-button{padding:0 16px 0 4px !important}.files-list__row-size[data-v-2cb97ee2] .files-list__column-sort-button .button-vue__wrapper{flex-direction:row}.files-list__row-column-custom[data-v-2cb97ee2]{width:calc(var(--row-height)*2)}.files-list__column[data-v-2cb97ee2]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-2cb97ee2]{cursor:pointer}","",{version:3,sources:["webpack://./apps/files/src/mixins/fileslist-row.scss","webpack://./apps/files/src/components/FilesListHeader.vue"],names:[],mappings:"AA4BA,wCACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,oBAAA,CACA,uBAAA,CACA,wBAAA,CACA,QAAA,CACA,SAAA,CACA,mCAAA,CACA,WAAA,CAKA,kDACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAIF,2CACC,sBAAA,CACA,kEACC,YAAA,CACA,sBAAA,CAEA,iCAAA,CAEA,qGACC,2BAAA,CACA,4BAAA,CACA,QAAA,CACA,8DAAA,CAGD,+FACC,mBAAA,CAKH,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,8BAAA,CACA,WAAA,CAEA,oCAAA,CACA,kCAAA,CAEA,4CACC,0BAAA,CAGD,2CACC,8BAAA,CACA,+BAAA,CAGD,+CACC,eAAA,CACA,8BAAA,CACA,+BAAA,CACA,kCAAA,CACA,2BAAA,CAEA,0BAAA,CACA,uBAAA,CAIF,uCAEC,eAAA,CAEA,aAAA,CAEA,yCACC,YAAA,CACA,kBAAA,CAEA,UAAA,CACA,WAAA,CAGA,4JAEC,mDAAA,CACA,kBAAA,CAIF,kEAEC,gBAAA,CACA,iBAAA,CAIF,0CACC,UAAA,CAGA,0FAEC,2BAAA,CAIA,mEAEC,kBAAA,CAED,iGAEC,mCAAA,CAKH,uCAEC,wBAAA,CACA,iCAAA,CAEA,4BAAA,CAGA,uEACC,+BAAA,CACA,4FACC,kBAAA,CAKH,gDACC,+BAAA,CCtKD,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA",sourcesContent:["/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\n/**\n * ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠\n * This file is for every column styling that must be\n * shared between BOTH the files list AND the list header.\n * ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠\n */\ntd, th {\n\tdisplay: flex;\n\talign-items: center;\n\tflex: 0 0 auto;\n\tjustify-content: left;\n\twidth: var(--row-height);\n\theight: var(--row-height);\n\tmargin: 0;\n\tpadding: 0;\n\tcolor: var(--color-text-maxcontrast);\n\tborder: none;\n\n\t// Columns should try to add any text\n\t// node wrapped in a span. That should help\n\t// with the ellipsis on overflow.\n\tspan {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n}\n\n.files-list__row-checkbox {\n\tjustify-content: center;\n\t&::v-deep .checkbox-radio-switch {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\n\t\t--icon-size: var(--checkbox-size);\n\n\t\tlabel.checkbox-radio-switch__label {\n\t\t\twidth: var(--clickable-area);\n\t\t\theight: var(--clickable-area);\n\t\t\tmargin: 0;\n\t\t\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\n\t\t}\n\n\t\t.checkbox-radio-switch__icon {\n\t\t\tmargin: 0 !important;\n\t\t}\n\t}\n}\n\n.files-list__row-icon {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: var(--icon-preview-size);\n\theight: 100%;\n\t// Show same padding as the checkbox right padding for visual balance\n\tmargin-right: var(--checkbox-padding);\n\tcolor: var(--color-primary-element);\n\n\t& > span {\n\t\tjustify-content: flex-start;\n\t}\n\n\t&::v-deep svg {\n\t\twidth: var(--icon-preview-size);\n\t\theight: var(--icon-preview-size);\n\t}\n\n\t&-preview {\n\t\toverflow: hidden;\n\t\twidth: var(--icon-preview-size);\n\t\theight: var(--icon-preview-size);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\t// Center and contain the preview\n\t\tbackground-position: center;\n\t\tbackground-size: contain;\n\t}\n}\n\n.files-list__row-name {\n\t// Prevent link from overflowing\n\toverflow: hidden;\n\t// Take as much space as possible\n\tflex: 1 1 auto;\n\n\ta {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\t// Fill cell height and width\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\t\t// Keyboard indicator a11y\n\t\t&:focus .files-list__row-name-text,\n\t\t&:focus-visible .files-list__row-name-text {\n\t\t\toutline: 2px solid var(--color-main-text) !important;\n\t\t\tborder-radius: 20px;\n\t\t}\n\t}\n\n\t.files-list__row-name-text {\n\t\t// Make some space for the outline\n\t\tpadding: 5px 10px;\n\t\tmargin-left: -10px;\n\t}\n}\n\n.files-list__row-actions {\n\twidth: auto;\n\n\t// Add margin to all cells after the actions\n\t& ~ td,\n\t& ~ th {\n\t\tmargin: 0 var(--cell-margin);\n\t}\n\n\t&::v-deep > button {\n\t\t.button-vue__text {\n\t\t\t// Remove bold from default button styling\n\t\t\tfont-weight: normal;\n\t\t}\n\t\t&:not(:hover, :focus, :active) .button-vue__wrapper {\n\t\t\t// Also apply color-text-maxcontrast to non-active button\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.files-list__row-size {\n\t// Right align text\n\tjustify-content: flex-end;\n\twidth: calc(var(--row-height) * 1.5);\n\t// opacity varies with the size\n\tcolor: var(--color-main-text);\n\n\t// Icon is before text since size is right aligned\n\t::v-deep .files-list__column-sort-button {\n\t\tpadding: 0 16px 0 4px !important;\n\t\t.button-vue__wrapper {\n\t\t\tflex-direction: row;\n\t\t}\n\t}\n}\n\n.files-list__row-column-custom {\n\twidth: calc(var(--row-height) * 2);\n}\n","\n@import '../mixins/fileslist-row.scss';\n.files-list__column {\n\tuser-select: none;\n\t// Make sure the cell colors don't apply to column headers\n\tcolor: var(--color-text-maxcontrast) !important;\n\n\t&--sortable {\n\t\tcursor: pointer;\n\t}\n}\n\n"],sourceRoot:""}]),e.Z=a},39885:function(t,e,n){var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".files-list__row-actions-batch[data-v-ebdf16d4]{flex:1 1 100% !important}.files-list__row-actions-batch[data-v-ebdf16d4] .button-vue__wrapper{width:100%}.files-list__row-actions-batch[data-v-ebdf16d4] .button-vue__wrapper span.button-vue__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListHeaderActions.vue"],names:[],mappings:"AACA,gDACC,wBAAA,CAGA,qEACC,UAAA,CACA,2FACC,eAAA,CACA,sBAAA,CACA,kBAAA",sourcesContent:["\n.files-list__row-actions-batch {\n\tflex: 1 1 100% !important;\n\n\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\n\t::v-deep .button-vue__wrapper {\n\t\twidth: 100%;\n\t\tspan.button-vue__text {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},33096:function(t,e,n){var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".files-list__column-sort-button{margin:0 calc(var(--cell-margin)*-1);padding:0 4px 0 16px !important}.files-list__column-sort-button .button-vue__wrapper{flex-direction:row-reverse;width:100%}.files-list__column-sort-button .button-vue__icon{transition-timing-function:linear;transition-duration:.1s;transition-property:opacity;opacity:0}.files-list__column-sort-button .button-vue__text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list__column-sort-button--active .button-vue__icon,.files-list__column-sort-button:hover .button-vue__icon,.files-list__column-sort-button:focus .button-vue__icon,.files-list__column-sort-button:active .button-vue__icon{opacity:1 !important}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListHeaderButton.vue"],names:[],mappings:"AACA,gCAEC,oCAAA,CAEA,+BAAA,CAGA,qDACC,0BAAA,CAGA,UAAA,CAGD,kDACC,iCAAA,CACA,uBAAA,CACA,2BAAA,CACA,SAAA,CAID,kDACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAOA,mOACC,oBAAA",sourcesContent:["\n.files-list__column-sort-button {\n\t// Compensate for cells margin\n\tmargin: 0 calc(var(--cell-margin) * -1);\n\t// Reverse padding\n\tpadding: 0 4px 0 16px !important;\n\n\t// Icon after text\n\t.button-vue__wrapper {\n\t\tflex-direction: row-reverse;\n\t\t// Take max inner width for text overflow ellipsis\n\t\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\n\t\twidth: 100%;\n\t}\n\n\t.button-vue__icon {\n\t\ttransition-timing-function: linear;\n\t\ttransition-duration: .1s;\n\t\ttransition-property: opacity;\n\t\topacity: 0;\n\t}\n\n\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\n\t.button-vue__text {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t&--active,\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\t.button-vue__icon {\n\t\t\topacity: 1 !important;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},71090:function(t,e,n){var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".files-list[data-v-e417a998]{--row-height: 55px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: 44px;--icon-preview-size: 32px;display:block;overflow:auto;height:100%}.files-list[data-v-e417a998] tbody,.files-list[data-v-e417a998] .vue-recycle-scroller__slot{display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-e417a998] .vue-recycle-scroller__slot[role=thead]{position:sticky;z-index:10;top:0;height:var(--row-height);background-color:var(--color-main-background)}.files-list[data-v-e417a998] tr{position:absolute;display:flex;align-items:center;width:100%;border-bottom:1px solid var(--color-border)}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListVirtual.vue"],names:[],mappings:"AACA,6BACC,kBAAA,CACA,mBAAA,CAEA,wEAAA,CACA,qBAAA,CACA,sBAAA,CACA,yBAAA,CAEA,aAAA,CACA,aAAA,CACA,WAAA,CAIC,4FACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,iBAAA,CAID,qEAEC,eAAA,CACA,UAAA,CACA,KAAA,CACA,wBAAA,CACA,6CAAA,CAQD,gCACC,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,UAAA,CACA,2CAAA",sourcesContent:["\n.files-list {\n\t--row-height: 55px;\n\t--cell-margin: 14px;\n\n\t--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);\n\t--checkbox-size: 24px;\n\t--clickable-area: 44px;\n\t--icon-preview-size: 32px;\n\n\tdisplay: block;\n\toverflow: auto;\n\theight: 100%;\n\n\t&::v-deep {\n\t\t// Table head, body and footer\n\t\ttbody, .vue-recycle-scroller__slot {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\twidth: 100%;\n\t\t\t// Necessary for virtual scrolling absolute\n\t\t\tposition: relative;\n\t\t}\n\n\t\t// Table header\n\t\t.vue-recycle-scroller__slot[role='thead'] {\n\t\t\t// Pinned on top when scrolling\n\t\t\tposition: sticky;\n\t\t\tz-index: 10;\n\t\t\ttop: 0;\n\t\t\theight: var(--row-height);\n\t\t\tbackground-color: var(--color-main-background);\n\t\t}\n\n\t\t/**\n\t\t * Common row styling. tr are handled by\n\t\t * vue-virtual-scroller, so we need to\n\t\t * have those rules in here.\n\t\t */\n\t\ttr {\n\t\t\tposition: absolute;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\twidth: 100%;\n\t\t\tborder-bottom: 1px solid var(--color-border);\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]),e.Z=a},358:function(t,e,n){var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".app-navigation-entry__settings-quota--not-unlimited[data-v-26c061ec] .app-navigation-entry__title{margin-top:-4px}.app-navigation-entry__settings-quota progress[data-v-26c061ec]{position:absolute;bottom:10px;margin-left:44px;width:calc(100% - 44px - 22px)}","",{version:3,sources:["webpack://./apps/files/src/components/NavigationQuota.vue"],names:[],mappings:"AAIC,mGACC,eAAA,CAGD,gEACC,iBAAA,CACA,WAAA,CACA,gBAAA,CACA,8BAAA",sourcesContent:["\n// User storage stats display\n.app-navigation-entry__settings-quota {\n\t// Align title with progress and icon\n\t&--not-unlimited::v-deep .app-navigation-entry__title {\n\t\tmargin-top: -4px;\n\t}\n\n\tprogress {\n\t\tposition: absolute;\n\t\tbottom: 10px;\n\t\tmargin-left: 44px;\n\t\twidth: calc(100% - 44px - 22px);\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},3491:function(t,e,n){var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".template-picker__item[data-v-6c072a31]{display:flex}.template-picker__label[data-v-6c072a31]{display:flex;align-items:center;flex:1 1;flex-direction:column}.template-picker__label[data-v-6c072a31],.template-picker__label *[data-v-6c072a31]{cursor:pointer;user-select:none}.template-picker__label[data-v-6c072a31]::before{display:none !important}.template-picker__preview[data-v-6c072a31]{display:block;overflow:hidden;flex:1 1;width:var(--width);min-height:var(--height);max-height:var(--height);padding:0;border:var(--border) solid var(--color-border);border-radius:var(--border-radius-large)}input:checked+label>.template-picker__preview[data-v-6c072a31]{border-color:var(--color-primary)}.template-picker__preview--failed[data-v-6c072a31]{display:flex}.template-picker__image[data-v-6c072a31]{max-width:100%;background-color:var(--color-main-background);object-fit:cover}.template-picker__preview--failed .template-picker__image[data-v-6c072a31]{width:calc(var(--margin)*8);margin:auto;background-color:rgba(0,0,0,0) !important;object-fit:initial}.template-picker__title[data-v-6c072a31]{overflow:hidden;max-width:calc(var(--width) + 4px);padding:var(--margin);white-space:nowrap;text-overflow:ellipsis}","",{version:3,sources:["webpack://./apps/files/src/components/TemplatePreview.vue"],names:[],mappings:"AAGC,wCACC,YAAA,CAGD,yCACC,YAAA,CAEA,kBAAA,CACA,QAAA,CACA,qBAAA,CAEA,oFACC,cAAA,CACA,gBAAA,CAGD,iDACC,uBAAA,CAIF,2CACC,aAAA,CACA,eAAA,CAEA,QAAA,CACA,kBAAA,CACA,wBAAA,CACA,wBAAA,CACA,SAAA,CACA,8CAAA,CACA,wCAAA,CAEA,+DACC,iCAAA,CAGD,mDAEC,YAAA,CAIF,yCACC,cAAA,CACA,6CAAA,CAEA,gBAAA,CAID,2EACC,2BAAA,CAEA,WAAA,CACA,yCAAA,CAEA,kBAAA,CAGD,yCACC,eAAA,CAEA,kCAAA,CACA,qBAAA,CACA,kBAAA,CACA,sBAAA",sourcesContent:["\n\n.template-picker {\n\t&__item {\n\t\tdisplay: flex;\n\t}\n\n\t&__label {\n\t\tdisplay: flex;\n\t\t// Align in the middle of the grid\n\t\talign-items: center;\n\t\tflex: 1 1;\n\t\tflex-direction: column;\n\n\t\t&, * {\n\t\t\tcursor: pointer;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&::before {\n\t\t\tdisplay: none !important;\n\t\t}\n\t}\n\n\t&__preview {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t\t// Stretch so all entries are the same width\n\t\tflex: 1 1;\n\t\twidth: var(--width);\n\t\tmin-height: var(--height);\n\t\tmax-height: var(--height);\n\t\tpadding: 0;\n\t\tborder: var(--border) solid var(--color-border);\n\t\tborder-radius: var(--border-radius-large);\n\n\t\tinput:checked + label > & {\n\t\t\tborder-color: var(--color-primary);\n\t\t}\n\n\t\t&--failed {\n\t\t\t// Make sure to properly center fallback icon\n\t\t\tdisplay: flex;\n\t\t}\n\t}\n\n\t&__image {\n\t\tmax-width: 100%;\n\t\tbackground-color: var(--color-main-background);\n\n\t\tobject-fit: cover;\n\t}\n\n\t// Failed preview, fallback to mime icon\n\t&__preview--failed &__image {\n\t\twidth: calc(var(--margin) * 8);\n\t\t// Center mime icon\n\t\tmargin: auto;\n\t\tbackground-color: transparent !important;\n\n\t\tobject-fit: initial;\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\t// also count preview border\n\t\tmax-width: calc(var(--width) + 2*2px);\n\t\tpadding: var(--margin);\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n}\n\n"],sourceRoot:""}]),e.Z=a},70148:function(t,e,n){var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".app-content[data-v-f52708d2]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}.app-content[data-v-f52708d2]:not(.app-content--hidden)+#app-content{display:none}.files-list__header[data-v-f52708d2]{display:flex;align-content:center;flex:0 0;margin:4px 4px 4px 50px}.files-list__header>*[data-v-f52708d2]{flex:0 0}.files-list__refresh-icon[data-v-f52708d2]{flex:0 0 44px;width:44px;height:44px}.files-list__loading-icon[data-v-f52708d2]{margin:auto}","",{version:3,sources:["webpack://./apps/files/src/views/FilesList.vue"],names:[],mappings:"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CAIA,qEACC,YAAA,CAQD,qCACC,YAAA,CACA,oBAAA,CAEA,QAAA,CAEA,uBAAA,CACA,uCAGC,QAAA,CAGF,2CACC,aAAA,CACA,UAAA,CACA,WAAA,CAED,2CACC,WAAA",sourcesContent:["\n.app-content {\n\t// Virtual list needs to be full height and is scrollable\n\tdisplay: flex;\n\toverflow: hidden;\n\tflex-direction: column;\n\tmax-height: 100%;\n\n\t// TODO: remove after all legacy views are migrated\n\t// Hides the legacy app-content if shown view is not legacy\n\t&:not(&--hidden)::v-deep + #app-content {\n\t\tdisplay: none;\n\t}\n}\n\n$margin: 4px;\n$navigationToggleSize: 50px;\n\n.files-list {\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-content: center;\n\t\t// Do not grow or shrink (vertically)\n\t\tflex: 0 0;\n\t\t// Align with the navigation toggle icon\n\t\tmargin: $margin $margin $margin $navigationToggleSize;\n\t\t> * {\n\t\t\t// Do not grow or shrink (horizontally)\n\t\t\t// Only the breadcrumbs shrinks\n\t\t\tflex: 0 0;\n\t\t}\n\t}\n\t&__refresh-icon {\n\t\tflex: 0 0 44px;\n\t\twidth: 44px;\n\t\theight: 44px;\n\t}\n\t&__loading-icon {\n\t\tmargin: auto;\n\t}\n}\n\n"],sourceRoot:""}]),e.Z=a},65581:function(t,e,n){var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".app-navigation[data-v-4238b71c] .app-navigation-entry-icon{background-repeat:no-repeat;background-position:center}.app-navigation>ul.app-navigation__list[data-v-4238b71c]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-4238b71c]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}","",{version:3,sources:["webpack://./apps/files/src/views/Navigation.vue"],names:[],mappings:"AAEA,4DACC,2BAAA,CACA,0BAAA,CAGD,yDAEC,gDAAA,CAGD,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA",sourcesContent:["\n// TODO: remove when https://github.com/nextcloud/nextcloud-vue/pull/3539 is in\n.app-navigation::v-deep .app-navigation-entry-icon {\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n}\n\n.app-navigation > ul.app-navigation__list {\n\t// Use flex gap value for more elegant spacing\n\tpadding-bottom: var(--default-grid-baseline, 4px);\n}\n\n.app-navigation-entry__settings {\n\theight: auto !important;\n\toverflow: hidden !important;\n\tpadding-top: 0 !important;\n\t// Prevent shrinking or growing\n\tflex: 0 0 auto;\n}\n"],sourceRoot:""}]),e.Z=a},20613:function(t,e,n){var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".setting-link[data-v-2e129f40]:hover{text-decoration:underline}","",{version:3,sources:["webpack://./apps/files/src/views/Settings.vue"],names:[],mappings:"AACA,qCACC,yBAAA",sourcesContent:["\n.setting-link:hover {\n\ttext-decoration: underline;\n}\n"],sourceRoot:""}]),e.Z=a},5103:function(t,e,n){var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,".templates-picker__form[data-v-715b4161]{padding:calc(var(--margin)*2);padding-bottom:0}.templates-picker__form h2[data-v-715b4161]{text-align:center;font-weight:bold;margin:var(--margin) 0 calc(var(--margin)*2)}.templates-picker__list[data-v-715b4161]{display:grid;grid-gap:calc(var(--margin)*2);grid-auto-columns:1fr;max-width:calc(var(--fullwidth)*6);grid-template-columns:repeat(auto-fit, var(--fullwidth));grid-auto-rows:1fr;justify-content:center}.templates-picker__buttons[data-v-715b4161]{display:flex;justify-content:space-between;padding:calc(var(--margin)*2) var(--margin);position:sticky;bottom:0;background-image:linear-gradient(0, var(--gradient-main-background))}.templates-picker__buttons button[data-v-715b4161],.templates-picker__buttons input[type=submit][data-v-715b4161]{height:44px}.templates-picker[data-v-715b4161] .modal-container{position:relative}.templates-picker__loading[data-v-715b4161]{position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;margin:0;background-color:var(--color-main-background-translucent)}","",{version:3,sources:["webpack://./apps/files/src/views/TemplatePicker.vue"],names:[],mappings:"AAEC,yCACC,6BAAA,CAEA,gBAAA,CAEA,4CACC,iBAAA,CACA,gBAAA,CACA,4CAAA,CAIF,yCACC,YAAA,CACA,8BAAA,CACA,qBAAA,CAEA,kCAAA,CACA,wDAAA,CAEA,kBAAA,CAEA,sBAAA,CAGD,4CACC,YAAA,CACA,6BAAA,CACA,2CAAA,CACA,eAAA,CACA,QAAA,CACA,oEAAA,CAEA,kHACC,WAAA,CAKF,oDACC,iBAAA,CAGD,4CACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,yDAAA",sourcesContent:["\n.templates-picker {\n\t&__form {\n\t\tpadding: calc(var(--margin) * 2);\n\t\t// Will be handled by the buttons\n\t\tpadding-bottom: 0;\n\n\t\th2 {\n\t\t\ttext-align: center;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: var(--margin) 0 calc(var(--margin) * 2);\n\t\t}\n\t}\n\n\t&__list {\n\t\tdisplay: grid;\n\t\tgrid-gap: calc(var(--margin) * 2);\n\t\tgrid-auto-columns: 1fr;\n\t\t// We want maximum 5 columns. Putting 6 as we don't count the grid gap. So it will always be lower than 6\n\t\tmax-width: calc(var(--fullwidth) * 6);\n\t\tgrid-template-columns: repeat(auto-fit, var(--fullwidth));\n\t\t// Make sure all rows are the same height\n\t\tgrid-auto-rows: 1fr;\n\t\t// Center the columns set\n\t\tjustify-content: center;\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tpadding: calc(var(--margin) * 2) var(--margin);\n\t\tposition: sticky;\n\t\tbottom: 0;\n\t\tbackground-image: linear-gradient(0, var(--gradient-main-background));\n\n\t\tbutton, input[type='submit'] {\n\t\t\theight: 44px;\n\t\t}\n\t}\n\n\t// Make sure we're relative for the loading emptycontent on top\n\t::v-deep .modal-container {\n\t\tposition: relative;\n\t}\n\n\t&__loading {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tmargin: 0;\n\t\tbackground-color: var(--color-main-background-translucent);\n\t}\n}\n\n"],sourceRoot:""}]),e.Z=a},92494:function(t,e,n){var i=n(87537),r=n.n(i),o=n(23645),a=n.n(o)()(r());a.push([t.id,"\n/* @keyframes preview-gradient-fade {\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n 100% {\n opacity: 1;\n }\n} */\n","",{version:3,sources:["webpack://./apps/files/src/components/FileEntry.vue"],names:[],mappings:";AAmgBA;;;;;;;;;;GAUA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Gary Kim \n -\n - @author Gary Kim \n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see .\n -\n --\x3e\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.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!./TemplatePreview.vue?vue&type=script&lang=js&\"","/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\nconst encodeFilePath = function(path) {\n\tconst pathSections = (path.startsWith('/') ? path : `/${path}`).split('/')\n\tlet relativePath = ''\n\tpathSections.forEach((section) => {\n\t\tif (section !== '') {\n\t\t\trelativePath += '/' + encodeURIComponent(section)\n\t\t}\n\t})\n\treturn relativePath\n}\n\n/**\n * Extract dir and name from file path\n *\n * @param {string} path the full path\n * @return {string[]} [dirPath, fileName]\n */\nconst extractFilePaths = function(path) {\n\tconst pathSections = path.split('/')\n\tconst fileName = pathSections[pathSections.length - 1]\n\tconst dirPath = pathSections.slice(0, pathSections.length - 1).join('/')\n\treturn [dirPath, fileName]\n}\n\nexport { encodeFilePath, extractFilePaths }\n","\n 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!./TemplatePreview.vue?vue&type=style&index=0&id=6c072a31&prod&lang=scss&scoped=true&\";\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!./TemplatePreview.vue?vue&type=style&index=0&id=6c072a31&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TemplatePreview.vue?vue&type=template&id=6c072a31&scoped=true&\"\nimport script from \"./TemplatePreview.vue?vue&type=script&lang=js&\"\nexport * from \"./TemplatePreview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TemplatePreview.vue?vue&type=style&index=0&id=6c072a31&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6c072a31\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"template-picker__item\"},[_c('input',{staticClass:\"radio\",attrs:{\"id\":_vm.id,\"type\":\"radio\",\"name\":\"template-picker\"},domProps:{\"checked\":_vm.checked},on:{\"change\":_vm.onCheck}}),_vm._v(\" \"),_c('label',{staticClass:\"template-picker__label\",attrs:{\"for\":_vm.id}},[_c('div',{staticClass:\"template-picker__preview\",class:_vm.failedPreview ? 'template-picker__preview--failed' : ''},[_c('img',{staticClass:\"template-picker__image\",attrs:{\"src\":_vm.realPreviewUrl,\"alt\":\"\",\"draggable\":\"false\"},on:{\"error\":_vm.onFailure}})]),_vm._v(\" \"),_c('span',{staticClass:\"template-picker__title\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.nameWithoutExt)+\"\\n\\t\\t\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePicker.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!./TemplatePicker.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!./TemplatePicker.vue?vue&type=style&index=0&id=715b4161&prod&lang=scss&scoped=true&\";\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!./TemplatePicker.vue?vue&type=style&index=0&id=715b4161&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TemplatePicker.vue?vue&type=template&id=715b4161&scoped=true&\"\nimport script from \"./TemplatePicker.vue?vue&type=script&lang=js&\"\nexport * from \"./TemplatePicker.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TemplatePicker.vue?vue&type=style&index=0&id=715b4161&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"715b4161\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.opened)?_c('NcModal',{staticClass:\"templates-picker\",attrs:{\"clear-view-delay\":-1,\"size\":\"normal\"},on:{\"close\":_vm.close}},[_c('form',{staticClass:\"templates-picker__form\",style:(_vm.style),on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onSubmit.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('files', 'Pick a template for {name}', { name: _vm.nameWithoutExt })))]),_vm._v(\" \"),_c('ul',{staticClass:\"templates-picker__list\"},[_c('TemplatePreview',_vm._b({attrs:{\"checked\":_vm.checked === _vm.emptyTemplate.fileid},on:{\"check\":_vm.onCheck}},'TemplatePreview',_vm.emptyTemplate,false)),_vm._v(\" \"),_vm._l((_vm.provider.templates),function(template){return _c('TemplatePreview',_vm._b({key:template.fileid,attrs:{\"checked\":_vm.checked === template.fileid,\"ratio\":_vm.provider.ratio},on:{\"check\":_vm.onCheck}},'TemplatePreview',template,false))})],2),_vm._v(\" \"),_c('div',{staticClass:\"templates-picker__buttons\"},[_c('button',{on:{\"click\":_vm.close}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Cancel'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{staticClass:\"primary\",attrs:{\"type\":\"submit\",\"aria-label\":_vm.t('files', 'Create a new file with the selected template')},domProps:{\"value\":_vm.t('files', 'Create')}})])]),_vm._v(\" \"),(_vm.loading)?_c('NcEmptyContent',{staticClass:\"templates-picker__loading\",attrs:{\"icon\":\"icon-loading\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files', 'Creating file'))+\"\\n\\t\")]):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Julius Härtl \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 .\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentDirectory } from './utils/davUtils.js'\nimport axios from '@nextcloud/axios'\nimport Vue from 'vue'\n\nimport TemplatePickerView from './views/TemplatePicker.vue'\nimport { showError } from '@nextcloud/dialogs'\n\n// Set up logger\nconst logger = getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n\n// Add translates functions\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\n// Create document root\nconst TemplatePickerRoot = document.createElement('div')\nTemplatePickerRoot.id = 'template-picker'\ndocument.body.appendChild(TemplatePickerRoot)\n\n// Retrieve and init templates\nlet templates = loadState('files', 'templates', [])\nlet templatesPath = loadState('files', 'templates_path', false)\nlogger.debug('Templates providers', templates)\nlogger.debug('Templates folder', { templatesPath })\n\n// Init vue app\nconst View = Vue.extend(TemplatePickerView)\nconst TemplatePicker = new View({\n\tname: 'TemplatePicker',\n\tpropsData: {\n\t\tlogger,\n\t},\n})\nTemplatePicker.$mount('#template-picker')\n\n// Init template engine after load to make sure it's the last injected entry\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (!templatesPath) {\n\t\tlogger.debug('Templates folder not initialized')\n\t\tconst initTemplatesPlugin = {\n\t\t\tattach(menu) {\n\t\t\t\t// register the new menu entry\n\t\t\t\tmenu.addMenuEntry({\n\t\t\t\t\tid: 'template-init',\n\t\t\t\t\tdisplayName: t('files', 'Set up templates folder'),\n\t\t\t\t\ttemplateName: t('files', 'Templates'),\n\t\t\t\t\ticonClass: 'icon-template-add',\n\t\t\t\t\tfileType: 'file',\n\t\t\t\t\tactionHandler(name) {\n\t\t\t\t\t\tinitTemplatesFolder(name)\n\t\t\t\t\t\tmenu.removeMenuEntry('template-init')\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t},\n\t\t}\n\t\tOC.Plugins.register('OCA.Files.NewFileMenu', initTemplatesPlugin)\n\t}\n})\n\n// Init template files menu\ntemplates.forEach((provider, index) => {\n\tconst newTemplatePlugin = {\n\t\tattach(menu) {\n\t\t\tconst fileList = menu.fileList\n\n\t\t\t// only attach to main file list, public view is not supported yet\n\t\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// register the new menu entry\n\t\t\tmenu.addMenuEntry({\n\t\t\t\tid: `template-new-${provider.app}-${index}`,\n\t\t\t\tdisplayName: provider.label,\n\t\t\t\ttemplateName: provider.label + provider.extension,\n\t\t\t\ticonClass: provider.iconClass || 'icon-file',\n\t\t\t\tfileType: 'file',\n\t\t\t\tactionHandler(name) {\n\t\t\t\t\tTemplatePicker.open(name, provider)\n\t\t\t\t},\n\t\t\t})\n\t\t},\n\t}\n\tOC.Plugins.register('OCA.Files.NewFileMenu', newTemplatePlugin)\n})\n\n/**\n * Init the template directory\n *\n * @param {string} name the templates folder name\n */\nconst initTemplatesFolder = async function(name) {\n\tconst templatePath = (getCurrentDirectory() + `/${name}`).replace('//', '/')\n\ttry {\n\t\tlogger.debug('Initializing the templates directory', { templatePath })\n\t\tconst response = await axios.post(generateOcsUrl('apps/files/api/v1/templates/path'), {\n\t\t\ttemplatePath,\n\t\t\tcopySystemTemplates: true,\n\t\t})\n\n\t\t// Go to template directory\n\t\tOCA.Files.App.currentFileList.changeDirectory(templatePath, true, true)\n\n\t\ttemplates = response.data.ocs.data.templates\n\t\ttemplatesPath = response.data.ocs.data.template_path\n\t} catch (error) {\n\t\tlogger.error('Unable to initialize the templates directory')\n\t\tshowError(t('files', 'Unable to initialize the templates directory'))\n\t}\n}\n","/*\n * @copyright Copyright (c) 2021 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\n(function() {\n\n\tconst FilesPlugin = {\n\t\tattach(fileList) {\n\t\t\tsubscribe('nextcloud:unified-search.search', ({ query }) => {\n\t\t\t\tfileList.setFilter(query)\n\t\t\t})\n\t\t\tsubscribe('nextcloud:unified-search.reset', () => {\n\t\t\t\tthis.query = null\n\t\t\t\tfileList.setFilter('')\n\t\t\t})\n\n\t\t},\n\t}\n\n\twindow.OC.Plugins.register('OCA.Files.FileList', FilesPlugin)\n\n})()\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\nimport { Node } from '@nextcloud/files'\nimport logger from '../logger'\n\ndeclare global {\n\tinterface Window {\n\t\tOC: any;\n\t\t_nc_fileactions: FileAction[] | undefined;\n\t}\n}\n\n/**\n * TODO: remove and move to @nextcloud/files\n * @see https://github.com/nextcloud/nextcloud-files/pull/608\n */\ninterface FileActionData {\n\t/** Unique ID */\n\tid: string\n\t/** Translatable string displayed in the menu */\n\tdisplayName: (files: Node[], view) => string\n\t/** Svg as inline string. */\n\ticonSvgInline: (files: Node[], view) => string\n\t/** Condition wether this action is shown or not */\n\tenabled?: (files: Node[], view) => boolean\n\t/**\n\t * Function executed on single file action\n\t * @returns true if the action was executed, false otherwise\n\t * @throws Error if the action failed\n\t */\n\texec: (file: Node, view) => Promise,\n\t/**\n\t * Function executed on multiple files action\n\t * @returns true if the action was executed, false otherwise\n\t * @throws Error if the action failed\n\t */\n\texecBatch?: (files: Node[], view) => Promise\n\t/** This action order in the list */\n\torder?: number,\n\t/** Make this action the default */\n\tdefault?: boolean,\n\t/**\n\t * If true, the renderInline function will be called\n\t */\n\tinline?: (file: Node, view) => boolean,\n\t/**\n\t * If defined, the returned html element will be\n\t * appended before the actions menu.\n\t */\n\trenderInline?: (file: Node, view) => HTMLElement,\n}\n\nexport class FileAction {\n\n\tprivate _action: FileActionData\n\n\tconstructor(action: FileActionData) {\n\t\tthis.validateAction(action)\n\t\tthis._action = action\n\t}\n\n\tget id() {\n\t\treturn this._action.id\n\t}\n\n\tget displayName() {\n\t\treturn this._action.displayName\n\t}\n\n\tget iconSvgInline() {\n\t\treturn this._action.iconSvgInline\n\t}\n\n\tget enabled() {\n\t\treturn this._action.enabled\n\t}\n\n\tget exec() {\n\t\treturn this._action.exec\n\t}\n\n\tget execBatch() {\n\t\treturn this._action.execBatch\n\t}\n\n\tget order() {\n\t\treturn this._action.order\n\t}\n\n\tget default() {\n\t\treturn this._action.default\n\t}\n\n\tget inline() {\n\t\treturn this._action.inline\n\t}\n\n\tget renderInline() {\n\t\treturn this._action.renderInline\n\t}\n\n\tprivate validateAction(action: FileActionData) {\n\t\tif (!action.id || typeof action.id !== 'string') {\n\t\t\tthrow new Error('Invalid id')\n\t\t}\n\n\t\tif (!action.displayName || typeof action.displayName !== 'function') {\n\t\t\tthrow new Error('Invalid displayName function')\n\t\t}\n\n\t\tif (!action.iconSvgInline || typeof action.iconSvgInline !== 'function') {\n\t\t\tthrow new Error('Invalid iconSvgInline function')\n\t\t}\n\n\t\tif (!action.exec || typeof action.exec !== 'function') {\n\t\t\tthrow new Error('Invalid exec function')\n\t\t}\n\n\t\t// Optional properties --------------------------------------------\n\t\tif ('enabled' in action && typeof action.enabled !== 'function') {\n\t\t\tthrow new Error('Invalid enabled function')\n\t\t}\n\n\t\tif ('execBatch' in action && typeof action.execBatch !== 'function') {\n\t\t\tthrow new Error('Invalid execBatch function')\n\t\t}\n\n\t\tif ('order' in action && typeof action.order !== 'number') {\n\t\t\tthrow new Error('Invalid order')\n\t\t}\n\n\t\tif ('default' in action && typeof action.default !== 'boolean') {\n\t\t\tthrow new Error('Invalid default')\n\t\t}\n\n\t\tif ('inline' in action && typeof action.inline !== 'function') {\n\t\t\tthrow new Error('Invalid inline function')\n\t\t}\n\n\t\tif ('renderInline' in action && typeof action.renderInline !== 'function') {\n\t\t\tthrow new Error('Invalid renderInline function')\n\t\t}\n\t}\n\n}\n\nexport const registerFileAction = function(action: FileAction): void {\n\tif (typeof window._nc_fileactions === 'undefined') {\n\t\twindow._nc_fileactions = []\n\t\tlogger.debug('FileActions initialized')\n\t}\n\n\t// Check duplicates\n\tif (window._nc_fileactions.find(search => search.id === action.id)) {\n\t\tlogger.error(`FileAction ${action.id} already registered`, { action })\n\t\treturn\n\t}\n\n\twindow._nc_fileactions.push(action)\n}\n\nexport const getFileActions = function(): FileAction[] {\n\treturn window._nc_fileactions || []\n}\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\nimport { emit } from '@nextcloud/event-bus'\nimport { Permission, Node } from '@nextcloud/files'\nimport { translate as t } from '@nextcloud/l10n'\nimport axios from '@nextcloud/axios'\nimport TrashCan from '@mdi/svg/svg/trash-can.svg?raw'\n\nimport { registerFileAction, FileAction } from '../services/FileAction.ts'\nimport logger from '../logger.js'\n\nregisterFileAction(new FileAction({\n\tid: 'delete',\n\tdisplayName(nodes: Node[], view) {\n\t\treturn view.id === 'trashbin'\n\t\t\t? t('files_trashbin', 'Delete permanently')\n\t\t\t: t('files', 'Delete')\n\t},\n\ticonSvgInline: () => TrashCan,\n\n\tenabled(nodes: Node[]) {\n\t\treturn nodes.length > 0 && nodes\n\t\t\t.map(node => node.permissions)\n\t\t\t.every(permission => (permission & Permission.DELETE) !== 0)\n\t},\n\n\tasync exec(node: Node) {\n\t\ttry {\n\t\t\tawait axios.delete(node.source)\n\n\t\t\t// Let's delete even if it's moved to the trashbin\n\t\t\t// since it has been removed from the current view\n\t\t\t// and changing the view will trigger a reload anyway.\n\t\t\temit('files:file:deleted', node)\n\t\t\treturn true\n\t\t} catch (error) {\n\t\t\tlogger.error('Error while deleting a file', { error, source: node.source, node })\n\t\t\treturn false\n\t\t}\n\t},\n\tasync execBatch(nodes: Node[], view) {\n\t\treturn Promise.all(nodes.map(node => this.exec(node, view)))\n\t},\n\n\torder: 100,\n}))\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport logger from '../logger.js'\n\n/**\n * Fetch and register the legacy files views\n */\nexport default function() {\n\tconst legacyViews = Object.values(loadState('files', 'navigation', {}))\n\n\tif (legacyViews.length > 0) {\n\t\tlogger.debug('Legacy files views detected. Processing...', legacyViews)\n\t\tlegacyViews.forEach(view => {\n\t\t\tregisterLegacyView(view)\n\t\t\tif (view.sublist) {\n\t\t\t\tview.sublist.forEach(subview => registerLegacyView({ ...subview, parent: view.id }))\n\t\t\t}\n\t\t})\n\t}\n}\n\nconst registerLegacyView = function({ id, name, order, icon, parent, classes = '', expanded, params }) {\n\tOCP.Files.Navigation.register({\n\t\tid,\n\t\tname,\n\t\torder,\n\t\tparams,\n\t\tparent,\n\t\texpanded: expanded === true,\n\t\ticonClass: icon ? `icon-${icon}` : 'nav-icon-' + id,\n\t\tlegacy: true,\n\t\tsticky: classes.includes('pinned'),\n\t})\n}\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n/* eslint-disable */\nimport type { Folder, Node } from '@nextcloud/files'\nimport isSvg from 'is-svg'\n\nimport logger from '../logger.js'\n\nexport type ContentsWithRoot = {\n\tfolder: Folder,\n\tcontents: Node[]\n}\n\nexport interface Column {\n\t/** Unique column ID */\n\tid: string\n\t/** Translated column title */\n\ttitle: string\n\t/** The content of the cell. The element will be appended within */\n\trender: (node: Node, view: Navigation) => HTMLElement\n\t/** Function used to sort Nodes between them */\n\tsort?: (nodeA: Node, nodeB: Node) => number\n\t/** Custom summary of the column to display at the end of the list.\n\t Will not be displayed if nothing is provided */\n\tsummary?: (node: Node[], view: Navigation) => string\n}\n\nexport interface Navigation {\n\t/** Unique view ID */\n\tid: string\n\t/** Translated view name */\n\tname: string\n\t/**\n\t * Method return the content of the provided path\n\t * This ideally should be a cancellable promise.\n\t * promise.cancel(reason) will be called when the directory\n\t * change and the promise is not resolved yet.\n\t * You _must_ also return the current directory\n\t * information alongside with its content.\n\t */\n\tgetContents: (path: string) => Promise\n\t/** The view icon as an inline svg */\n\ticon: string\n\t/** The view order */\n\torder: number\n\t/** This view column(s). Name and actions are\n\tby default always included */\n\tcolumns?: Column[]\n\t/** The empty view element to render your empty content into */\n\temptyView?: (div: HTMLDivElement) => void\n\t/** The parent unique ID */\n\tparent?: string\n\t/** This view is sticky (sent at the bottom) */\n\tsticky?: boolean\n\t/** This view has children and is expanded or not */\n\texpanded?: boolean\n\n\t/**\n\t * Will be used as default if the user\n\t * haven't customized their sorting column\n\t * */\n\tdefaultSortKey?: string\n\n\t/**\n\t * This view is sticky a legacy view.\n\t * Here until all the views are migrated to Vue.\n\t * @deprecated It will be removed in a near future\n\t */\n\tlegacy?: boolean\n\t/**\n\t * An icon class. \n\t * @deprecated It will be removed in a near future\n\t */\n\ticonClass?: string\n}\n\nexport default class {\n\n\tprivate _views: Navigation[] = []\n\tprivate _currentView: Navigation | null = null\n\n\tconstructor() {\n\t\tlogger.debug('Navigation service initialized')\n\t}\n\n\tregister(view: Navigation) {\n\t\ttry {\n\t\t\tisValidNavigation(view)\n\t\t\tisUniqueNavigation(view, this._views)\n\t\t} catch (e) {\n\t\t\tif (e instanceof Error) {\n\t\t\t\tlogger.error(e.message, { view })\n\t\t\t}\n\t\t\tthrow e\n\t\t}\n\n\t\tif (view.legacy) {\n\t\t\tlogger.warn('Legacy view detected, please migrate to Vue')\n\t\t}\n\n\t\tif (view.iconClass) {\n\t\t\tview.legacy = true\n\t\t}\n\n\t\tthis._views.push(view)\n\t}\n\n\tget views(): Navigation[] {\n\t\treturn this._views\n\t}\n\n\tsetActive(view: Navigation | null) {\n\t\tthis._currentView = view\n\t}\n\n\tget active(): Navigation | null {\n\t\treturn this._currentView\n\t}\n\n}\n\n/**\n * Make sure the given view is unique\n * and not already registered.\n */\nconst isUniqueNavigation = function(view: Navigation, views: Navigation[]): boolean {\n\tif (views.find(search => search.id === view.id)) {\n\t\tthrow new Error(`Navigation id ${view.id} is already registered`)\n\t}\n\treturn true\n}\n\n/**\n * Typescript cannot validate an interface.\n * Please keep in sync with the Navigation interface requirements.\n */\nconst isValidNavigation = function(view: Navigation): boolean {\n\tif (!view.id || typeof view.id !== 'string') {\n\t\tthrow new Error('Navigation id is required and must be a string')\n\t}\n\n\tif (!view.name || typeof view.name !== 'string') {\n\t\tthrow new Error('Navigation name is required and must be a string')\n\t}\n\n\t/**\n\t * Legacy handle their content and icon differently\n\t * TODO: remove when support for legacy views is removed\n\t */\n\tif (!view.legacy) {\n\t\tif (!view.getContents || typeof view.getContents !== 'function') {\n\t\t\tthrow new Error('Navigation getContents is required and must be a function')\n\t\t}\n\n\t\tif (!view.icon || typeof view.icon !== 'string' || !isSvg(view.icon)) {\n\t\t\tthrow new Error('Navigation icon is required and must be a valid svg string')\n\t\t}\n\t}\n\n\tif (!('order' in view) || typeof view.order !== 'number') {\n\t\tthrow new Error('Navigation order is required and must be a number')\n\t}\n\n\t// Optional properties\n\tif (view.columns) {\n\t\tview.columns.forEach(isValidColumn)\n\t}\n\n\tif (view.emptyView && typeof view.emptyView !== 'function') {\n\t\tthrow new Error('Navigation emptyView must be a function')\n\t}\n\n\tif (view.parent && typeof view.parent !== 'string') {\n\t\tthrow new Error('Navigation parent must be a string')\n\t}\n\n\tif ('sticky' in view && typeof view.sticky !== 'boolean') {\n\t\tthrow new Error('Navigation sticky must be a boolean')\n\t}\n\n\tif ('expanded' in view && typeof view.expanded !== 'boolean') {\n\t\tthrow new Error('Navigation expanded must be a boolean')\n\t}\n\n\tif (view.defaultSortKey && typeof view.defaultSortKey !== 'string') {\n\t\tthrow new Error('Navigation defaultSortKey must be a string')\n\t}\n\n\treturn true\n}\n\n/**\n * Typescript cannot validate an interface.\n * Please keep in sync with the Column interface requirements.\n */\nconst isValidColumn = function(column: Column): boolean {\n\tif (!column.id || typeof column.id !== 'string') {\n\t\tthrow new Error('A column id is required')\n\t}\n\n\tif (!column.title || typeof column.title !== 'string') {\n\t\tthrow new Error('A column title is required')\n\t}\n\n\tif (!column.render || typeof column.render !== 'function') {\n\t\tthrow new Error('A render function is required')\n\t}\n\n\t// Optional properties\n\tif (column.sort && typeof column.sort !== 'function') {\n\t\tthrow new Error('Column sortFunction must be a function')\n\t}\n\n\tif (column.summary && typeof column.summary !== 'function') {\n\t\tthrow new Error('Column summary must be a function')\n\t}\n\n\treturn true\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim \n *\n * @author Gary Kim \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 .\n *\n */\nimport { generateUrl } from '@nextcloud/router'\nimport logger from '../logger.js'\n\nexport default () => {\n\tif ('serviceWorker' in navigator) {\n\t\t// Use the window load event to keep the page load performant\n\t\twindow.addEventListener('load', async () => {\n\t\t\ttry {\n\t\t\t\tconst url = generateUrl('/apps/files/preview-service-worker.js', {}, { noRewrite: true })\n\t\t\t\tconst registration = await navigator.serviceWorker.register(url, { scope: '/' })\n\t\t\t\tlogger.debug('SW registered: ', { registration })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('SW registration failed: ', { error })\n\t\t\t}\n\t\t})\n\t} else {\n\t\tlogger.debug('Service Worker is not enabled on this browser.')\n\t}\n}\n","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.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!./NavigationQuota.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!./NavigationQuota.vue?vue&type=style&index=0&id=26c061ec&prod&lang=scss&scoped=true&\";\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!./NavigationQuota.vue?vue&type=style&index=0&id=26c061ec&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NavigationQuota.vue?vue&type=template&id=26c061ec&scoped=true&\"\nimport script from \"./NavigationQuota.vue?vue&type=script&lang=js&\"\nexport * from \"./NavigationQuota.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NavigationQuota.vue?vue&type=style&index=0&id=26c061ec&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"26c061ec\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.storageStats)?_c('NcAppNavigationItem',{staticClass:\"app-navigation-entry__settings-quota\",class:{ 'app-navigation-entry__settings-quota--not-unlimited': _vm.storageStats.quota >= 0},attrs:{\"aria-label\":_vm.t('files', 'Storage informations'),\"loading\":_vm.loadingStorageStats,\"name\":_vm.storageStatsTitle,\"title\":_vm.storageStatsTooltip,\"data-cy-files-navigation-settings-quota\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.debounceUpdateStorageStats.apply(null, arguments)}}},[_c('ChartPie',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"}),_vm._v(\" \"),(_vm.storageStats.quota >= 0)?_c('NcProgressBar',{attrs:{\"slot\":\"extra\",\"error\":_vm.storageStats.relative > 80,\"value\":Math.min(_vm.storageStats.relative, 100)},slot:\"extra\"}):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.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!./Setting.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./Setting.vue?vue&type=template&id=03406edc&\"\nimport script from \"./Setting.vue?vue&type=script&lang=js&\"\nexport * from \"./Setting.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n/* eslint-disable */\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateUrl } from '@nextcloud/router'\nimport { defineStore } from 'pinia'\nimport Vue from 'vue'\nimport axios from '@nextcloud/axios'\nimport type { UserConfig, UserConfigStore } from '../types.ts'\nimport { emit, subscribe } from '@nextcloud/event-bus'\n\nconst userConfig = loadState('files', 'config', {\n\tshow_hidden: false,\n\tcrop_image_previews: true,\n}) as UserConfig\n\nexport const useUserConfigStore = () => {\n\tconst store = defineStore('userconfig', {\n\t\tstate: () => ({\n\t\t\tuserConfig,\n\t\t} as UserConfigStore),\n\n\t\tactions: {\n\t\t\t/**\n\t\t\t * Update the user config local store\n\t\t\t */\n\t\t\tonUpdate(key: string, value: boolean) {\n\t\t\t\tVue.set(this.userConfig, key, value)\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Update the user config local store AND on server side\n\t\t\t */\n\t\t\tasync update(key: string, value: boolean) {\n\t\t\t\tawait axios.post(generateUrl('/apps/files/api/v1/config/' + key), {\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\n\t\t\t\temit('files:config:updated', { key, value })\n\t\t\t}\n\t\t}\n\t})\n\n\tconst userConfigStore = store()\n\n\t// Make sure we only register the listeners once\n\tif (!userConfigStore._initialized) {\n\t\tsubscribe('files:config:updated', function({ key, value }: { key: string, value: boolean }) {\n\t\t\tuserConfigStore.onUpdate(key, value)\n\t\t})\n\t\tuserConfigStore._initialized = true\n\t}\n\n\treturn userConfigStore\n}\n\n","\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.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!./Settings.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!./Settings.vue?vue&type=style&index=0&id=2e129f40&prod&lang=scss&scoped=true&\";\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!./Settings.vue?vue&type=style&index=0&id=2e129f40&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=2e129f40&scoped=true&\"\nimport script from \"./Settings.vue?vue&type=script&lang=js&\"\nexport * from \"./Settings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Settings.vue?vue&type=style&index=0&id=2e129f40&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2e129f40\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSettingsDialog',{attrs:{\"open\":_vm.open,\"show-navigation\":true,\"title\":_vm.t('files', 'Files settings')},on:{\"update:open\":_vm.onClose}},[_c('NcAppSettingsSection',{attrs:{\"id\":\"settings\",\"title\":_vm.t('files', 'Files settings')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.show_hidden},on:{\"update:checked\":function($event){return _vm.setConfig('show_hidden', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Show hidden files'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.crop_image_previews},on:{\"update:checked\":function($event){return _vm.setConfig('crop_image_previews', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Crop image previews'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.settings.length !== 0)?_c('NcAppSettingsSection',{attrs:{\"id\":\"more-settings\",\"title\":_vm.t('files', 'Additional settings')}},[_vm._l((_vm.settings),function(setting){return [_c('Setting',{key:setting.name,attrs:{\"el\":setting.el}})]})],2):_vm._e(),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"webdav\",\"title\":_vm.t('files', 'WebDAV')}},[_c('NcInputField',{attrs:{\"id\":\"webdav-url-input\",\"show-trailing-button\":true,\"success\":_vm.webdavUrlCopied,\"trailing-button-label\":_vm.t('files', 'Copy to clipboard'),\"value\":_vm.webdavUrl,\"readonly\":\"readonly\",\"type\":\"url\"},on:{\"focus\":function($event){return $event.target.select()},\"trailing-button-click\":_vm.copyCloudId},scopedSlots:_vm._u([{key:\"trailing-button-icon\",fn:function(){return [_c('Clipboard',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.webdavDocs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Use this address to access your Files via WebDAV'))+\" ↗\\n\\t\\t\\t\")])]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.appPasswordUrl}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'If you have enabled 2FA, you must create and use a new app password by clicking here.'))+\" ↗\\n\\t\\t\\t\")])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","/**\n * @copyright Copyright (c) 2022 Joas Schilling \n *\n * @author Joas Schilling \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 .\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\n/**\n * Set the page heading\n *\n * @param {string} heading page title from the history api\n * @since 27.0.0\n */\nexport function setPageHeading(heading) {\n\tconst headingEl = document.getElementById('page-heading-level-1')\n\tif (headingEl) {\n\t\theadingEl.textContent = heading\n\t}\n}\nexport default {\n\t/**\n\t * @return {boolean} Whether the user opted-out of shortcuts so that they should not be registered\n\t */\n\tdisableKeyboardShortcuts() {\n\t\treturn loadState('theming', 'shortcutsDisabled', false)\n\t},\n\tsetPageHeading,\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.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!./Navigation.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!./Navigation.vue?vue&type=style&index=0&id=4238b71c&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!./Navigation.vue?vue&type=style&index=0&id=4238b71c&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Navigation.vue?vue&type=template&id=4238b71c&scoped=true&\"\nimport script from \"./Navigation.vue?vue&type=script&lang=js&\"\nexport * from \"./Navigation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navigation.vue?vue&type=style&index=0&id=4238b71c&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 \"4238b71c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppNavigation',{attrs:{\"data-cy-files-navigation\":\"\"},scopedSlots:_vm._u([{key:\"list\",fn:function(){return _vm._l((_vm.parentViews),function(view){return _c('NcAppNavigationItem',{key:view.id,attrs:{\"allow-collapse\":true,\"data-cy-files-navigation-item\":view.id,\"icon\":view.iconClass,\"open\":view.expanded,\"pinned\":view.sticky,\"title\":view.name,\"to\":_vm.generateToNavigation(view)},on:{\"update:open\":function($event){return _vm.onToggleExpand(view)}}},[(view.icon)?_c('NcIconSvgWrapper',{attrs:{\"slot\":\"icon\",\"svg\":view.icon},slot:\"icon\"}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.childViews[view.id]),function(child){return _c('NcAppNavigationItem',{key:child.id,attrs:{\"data-cy-files-navigation-item\":child.id,\"exact\":true,\"icon\":child.iconClass,\"title\":child.name,\"to\":_vm.generateToNavigation(child)}},[(view.icon)?_c('NcIconSvgWrapper',{attrs:{\"slot\":\"icon\",\"svg\":view.icon},slot:\"icon\"}):_vm._e()],1)})],2)})},proxy:true},{key:\"footer\",fn:function(){return [_c('ul',{staticClass:\"app-navigation-entry__settings\"},[_c('NavigationQuota'),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"aria-label\":_vm.t('files', 'Open the files app settings'),\"title\":_vm.t('files', 'Files settings'),\"data-cy-files-navigation-settings-button\":\"\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openSettings.apply(null, arguments)}}},[_c('Cog',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"})],1)],1)]},proxy:true}])},[_vm._v(\" \"),_vm._v(\" \"),_c('SettingsModal',{attrs:{\"open\":_vm.settingsOpened,\"data-cy-files-navigation-settings\":\"\"},on:{\"close\":_vm.onSettingsClose}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n/* eslint-disable */\nimport type { Folder, Node } from '@nextcloud/files'\nimport type { FilesStore, RootsStore, RootOptions, Service, FilesState } from '../types.ts'\n\nimport { defineStore } from 'pinia'\nimport { subscribe } from '@nextcloud/event-bus'\nimport Vue from 'vue'\nimport logger from '../logger'\nimport { FileId } from '../types'\n\nexport const useFilesStore = () => {\n\tconst store = defineStore('files', {\n\t\tstate: (): FilesState => ({\n\t\t\tfiles: {} as FilesStore,\n\t\t\troots: {} as RootsStore,\n\t\t}),\n\n\t\tgetters: {\n\t\t\t/**\n\t\t\t * Get a file or folder by id\n\t\t\t */\n\t\t\tgetNode: (state) => (id: FileId): Node|undefined => state.files[id],\n\n\t\t\t/**\n\t\t\t * Get a list of files or folders by their IDs\n\t\t\t * Does not return undefined values\n\t\t\t */\n\t\t\tgetNodes: (state) => (ids: FileId[]): Node[] => ids\n\t\t\t\t.map(id => state.files[id])\n\t\t\t\t.filter(Boolean),\n\t\t\t/**\n\t\t\t * Get a file or folder by id\n\t\t\t */\n\t\t\tgetRoot: (state) => (service: Service): Folder|undefined => state.roots[service],\n\t\t},\n\n\t\tactions: {\n\t\t\tupdateNodes(nodes: Node[]) {\n\t\t\t\t// Update the store all at once\n\t\t\t\tconst files = nodes.reduce((acc, node) => {\n\t\t\t\t\tif (!node.attributes.fileid) {\n\t\t\t\t\t\tlogger.warn('Trying to update/set a node without fileid', node)\n\t\t\t\t\t\treturn acc\n\t\t\t\t\t}\n\t\t\t\t\tacc[node.attributes.fileid] = node\n\t\t\t\t\treturn acc\n\t\t\t\t}, {} as FilesStore)\n\n\t\t\t\tVue.set(this, 'files', {...this.files, ...files})\n\t\t\t},\n\n\t\t\tdeleteNodes(nodes: Node[]) {\n\t\t\t\tnodes.forEach(node => {\n\t\t\t\t\tif (node.fileid) {\n\t\t\t\t\t\tVue.delete(this.files, node.fileid)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\n\t\t\tsetRoot({ service, root }: RootOptions) {\n\t\t\t\tVue.set(this.roots, service, root)\n\t\t\t},\n\n\t\t\tonDeletedNode(node: Node) {\n\t\t\t\tthis.deleteNodes([node])\n\t\t\t},\n\t\t}\n\t})\n\n\tconst fileStore = store()\n\t// Make sure we only register the listeners once\n\tif (!fileStore._initialized) {\n\t\t// subscribe('files:file:created', fileStore.onCreatedNode)\n\t\tsubscribe('files:file:deleted', fileStore.onDeletedNode)\n\t\t// subscribe('files:file:moved', fileStore.onMovedNode)\n\t\t// subscribe('files:file:updated', fileStore.onUpdatedNode)\n\n\t\t// subscribe('files:folder:created', fileStore.onCreatedNode)\n\t\tsubscribe('files:folder:deleted', fileStore.onDeletedNode)\n\t\t// subscribe('files:folder:moved', fileStore.onMovedNode)\n\t\t// subscribe('files:folder:updated', fileStore.onUpdatedNode)\n\n\t\tfileStore._initialized = true\n\t}\n\n\treturn fileStore\n}\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n/* eslint-disable */\nimport type { PathOptions, ServicesState } from '../types.ts'\n\nimport { defineStore } from 'pinia'\nimport Vue from 'vue'\nimport { subscribe } from '@nextcloud/event-bus'\nimport { FileId } from '../types'\n\nexport const usePathsStore = () => {\n\tconst store = defineStore('paths', {\n\t\tstate: (): ServicesState => ({}),\n\n\t\tgetters: {\n\t\t\tgetPath: (state) => {\n\t\t\t\treturn (service: string, path: string): FileId|undefined => {\n\t\t\t\t\tif (!state[service]) {\n\t\t\t\t\t\treturn undefined\n\t\t\t\t\t}\n\t\t\t\t\treturn state[service][path]\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\n\t\tactions: {\n\t\t\taddPath(payload: PathOptions) {\n\t\t\t\t// If it doesn't exists, init the service state\n\t\t\t\tif (!this[payload.service]) {\n\t\t\t\t\tVue.set(this, payload.service, {})\n\t\t\t\t}\n\n\t\t\t\t// Now we can set the provided path\n\t\t\t\tVue.set(this[payload.service], payload.path, payload.fileid)\n\t\t\t},\n\t\t}\n\t})\n\n\tconst pathsStore = store()\n\t// Make sure we only register the listeners once\n\tif (!pathsStore._initialized) {\n\t\t// TODO: watch folders to update paths?\n\t\t// subscribe('files:folder:created', pathsStore.onCreatedNode)\n\t\t// subscribe('files:folder:deleted', pathsStore.onDeletedNode)\n\t\t// subscribe('files:folder:moved', pathsStore.onMovedNode)\n\n\t\tpathsStore._initialized = true\n\t}\n\n\treturn pathsStore\n}\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n/* eslint-disable */\nimport { defineStore } from 'pinia'\nimport Vue from 'vue'\nimport { FileId, SelectionStore } from '../types'\n\nexport const useSelectionStore = defineStore('selection', {\n\tstate: () => ({\n\t\tselected: [],\n\t\tlastSelection: [],\n\t\tlastSelectedIndex: null,\n\t} as SelectionStore),\n\n\tactions: {\n\t\t/**\n\t\t * Set the selection of fileIds\n\t\t */\n\t\tset(selection = [] as FileId[]) {\n\t\t\tVue.set(this, 'selected', selection)\n\t\t},\n\n\t\t/**\n\t\t * Set the last selected index\n\t\t */\n\t\tsetLastIndex(lastSelectedIndex = null as FileId | null) {\n\t\t\t// Update the last selection if we provided a new selection starting point\n\t\t\tVue.set(this, 'lastSelection', lastSelectedIndex ? this.selected : [])\n\t\t\tVue.set(this, 'lastSelectedIndex', lastSelectedIndex)\n\t\t},\n\n\t\t/**\n\t\t * Reset the selection\n\t\t */\n\t\treset() {\n\t\t\tVue.set(this, 'selected', [])\n\t\t\tVue.set(this, 'lastSelection', [])\n\t\t\tVue.set(this, 'lastSelectedIndex', null)\n\t\t}\n\t}\n})\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n/* eslint-disable */\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateUrl } from '@nextcloud/router'\nimport { defineStore } from 'pinia'\nimport Vue from 'vue'\nimport axios from '@nextcloud/axios'\nimport type { direction, SortingStore } from '../types.ts'\n\nconst saveUserConfig = (mode: string, direction: direction, view: string) => {\n\treturn axios.post(generateUrl('/apps/files/api/v1/sorting'), {\n\t\tmode,\n\t\tdirection,\n\t\tview,\n\t})\n}\n\nconst filesSortingConfig = loadState('files', 'filesSortingConfig', {}) as SortingStore\n\nexport const useSortingStore = defineStore('sorting', {\n\tstate: () => ({\n\t\tfilesSortingConfig,\n\t}),\n\n\tgetters: {\n\t\tisAscSorting: (state) => (view: string = 'files') => state.filesSortingConfig[view]?.direction !== 'desc',\n\t\tgetSortingMode: (state) => (view: string = 'files') => state.filesSortingConfig[view]?.mode,\n\t},\n\n\tactions: {\n\t\t/**\n\t\t * Set the sorting key AND sort by ASC\n\t\t * The key param must be a valid key of a File object\n\t\t * If not found, will be searched within the File attributes\n\t\t */\n\t\tsetSortingBy(key: string = 'basename', view: string = 'files') {\n\t\t\tconst config = this.filesSortingConfig[view] || {}\n\t\t\tconfig.mode = key\n\t\t\tconfig.direction = 'asc'\n\n\t\t\t// Save new config\n\t\t\tVue.set(this.filesSortingConfig, view, config)\n\t\t\tsaveUserConfig(config.mode, config.direction, view)\n\t\t},\n\n\t\t/**\n\t\t * Toggle the sorting direction\n\t\t */\n\t\ttoggleSortingDirection(view: string = 'files') {\n\t\t\tconst config = this.filesSortingConfig[view] || { 'direction': 'asc' }\n\t\t\tconst newDirection = config.direction === 'asc' ? 'desc' : 'asc'\n\t\t\tconfig.direction = newDirection\n\n\t\t\t// Save new config\n\t\t\tVue.set(this.filesSortingConfig, view, config)\n\t\t\tsaveUserConfig(config.mode, config.direction, view)\n\t\t}\n\t}\n})\n\n","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.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!./BreadCrumbs.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!./BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&\";\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!./BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BreadCrumbs.vue?vue&type=template&id=68b3b20b&scoped=true&\"\nimport script from \"./BreadCrumbs.vue?vue&type=script&lang=js&\"\nexport * from \"./BreadCrumbs.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"68b3b20b\",\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('NcBreadcrumbs',{attrs:{\"data-cy-files-content-breadcrumbs\":\"\"}},_vm._l((_vm.sections),function(section,index){return _c('NcBreadcrumb',_vm._b({key:section.dir,attrs:{\"aria-label\":_vm.ariaLabel(section),\"title\":_vm.ariaLabel(section)},nativeOn:{\"click\":function($event){return _vm.onClick(section.to)}},scopedSlots:_vm._u([(index === 0)?{key:\"icon\",fn:function(){return [_c('Home',{attrs:{\"size\":20}})]},proxy:true}:null],null,true)},'NcBreadcrumb',section,false))}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\n// The preview service worker cache name (see webpack config)\nconst SWCacheName = 'previews'\n\n/**\n * Check if the preview is already cached by the service worker\n */\nexport const isCachedPreview = function(previewUrl: string) {\n\treturn caches.open(SWCacheName)\n\t\t.then(function(cache) {\n\t\t\treturn cache.match(previewUrl)\n\t\t\t\t.then(function(response) {\n\t\t\t\t\treturn !!response\n\t\t\t\t})\n\t\t})\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.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!./CustomElementRender.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./CustomElementRender.vue?vue&type=template&id=2c07e380&\"\nimport script from \"./CustomElementRender.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomElementRender.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomSvgIconRender.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!./CustomSvgIconRender.vue?vue&type=script&lang=js&\"","\n\n\n\n\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!./CustomSvgIconRender.vue?vue&type=style&index=0&id=6646d6a5&prod&lang=scss&scoped=true&\";\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!./CustomSvgIconRender.vue?vue&type=style&index=0&id=6646d6a5&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CustomSvgIconRender.vue?vue&type=template&id=6646d6a5&scoped=true&\"\nimport script from \"./CustomSvgIconRender.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomSvgIconRender.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CustomSvgIconRender.vue?vue&type=style&index=0&id=6646d6a5&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6646d6a5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"custom-svg-icon\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n/* eslint-disable */\nimport { defineStore } from 'pinia'\nimport Vue from 'vue'\n\n/**\n * Observe various events and save the current\n * special keys states. Useful for checking the\n * current status of a key when executing a method.\n */\nexport const useKeyboardStore = () => {\n\tconst store = defineStore('keyboard', {\n\t\tstate: () => ({\t\t\t\n\t\t\taltKey: false,\n\t\t\tctrlKey: false,\n\t\t\tmetaKey: false,\n\t\t\tshiftKey: false,\n\t\t}),\n\n\t\tactions: {\n\t\t\tonEvent(event: MouseEvent | KeyboardEvent) {\n\t\t\t\tif (!event) {\n\t\t\t\t\tevent = window.event as MouseEvent | KeyboardEvent\n\t\t\t\t}\n\t\t\t\tVue.set(this, 'altKey', !!event.altKey)\n\t\t\t\tVue.set(this, 'ctrlKey', !!event.ctrlKey)\n\t\t\t\tVue.set(this, 'metaKey', !!event.metaKey)\n\t\t\t\tVue.set(this, 'shiftKey', !!event.shiftKey)\n\t\t\t},\n\t\t}\n\t})\n\n\tconst keyboardStore = store()\n\t// Make sure we only register the listeners once\n\tif (!keyboardStore._initialized) {\n\t\twindow.addEventListener('keydown', keyboardStore.onEvent)\n\t\twindow.addEventListener('keyup', keyboardStore.onEvent)\n\t\twindow.addEventListener('mousemove', keyboardStore.onEvent)\n\n\t\tkeyboardStore._initialized = true\n\t}\n\n\treturn keyboardStore\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.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!./FileEntry.vue?vue&type=style&index=0&id=4f1730f6&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!./FileEntry.vue?vue&type=style&index=0&id=4f1730f6&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\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/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=1&id=4f1730f6&prod&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=1&id=4f1730f6&prod&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntry.vue?vue&type=template&id=4f1730f6&scoped=true&\"\nimport script from \"./FileEntry.vue?vue&type=script&lang=ts&\"\nexport * from \"./FileEntry.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FileEntry.vue?vue&type=style&index=0&id=4f1730f6&prod&scoped=true&lang=scss&\"\nimport style1 from \"./FileEntry.vue?vue&type=style&index=1&id=4f1730f6&prod&lang=css&\"\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 \"4f1730f6\",\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('Fragment',[_c('td',{staticClass:\"files-list__row-checkbox\"},[(_vm.active)?_c('NcCheckboxRadioSwitch',{attrs:{\"aria-label\":_vm.t('files', 'Select the row for {displayName}', { displayName: _vm.displayName }),\"checked\":_vm.selectedFiles,\"value\":_vm.fileid,\"name\":\"selectedFiles\"},on:{\"update:checked\":_vm.onSelectionChange}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\"},[_c('a',_vm._b({ref:\"name\"},'a',_vm.linkTo,false),[_c('span',{staticClass:\"files-list__row-icon\"},[(_vm.source.type === 'folder')?_c('FolderIcon'):(_vm.previewUrl && !_vm.backgroundFailed)?_c('span',{ref:\"previewImg\",staticClass:\"files-list__row-icon-preview\",style:({ backgroundImage: _vm.backgroundImage })}):(_vm.mimeIconUrl)?_c('span',{staticClass:\"files-list__row-icon-preview files-list__row-icon-preview--mime\",style:({ backgroundImage: _vm.mimeIconUrl })}):_c('FileIcon')],1),_vm._v(\" \"),_c('span',{staticClass:\"files-list__row-name-text\"},[_vm._v(_vm._s(_vm.displayName))])])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-actions\",class:`files-list__row-actions-${_vm.uniqueId}`},[(_vm.active)?_c('NcActions',{ref:\"actionsMenu\",attrs:{\"disabled\":_vm.source._loading,\"force-title\":true,\"inline\":_vm.enabledInlineActions.length}},_vm._l((_vm.enabledMenuActions),function(action){return _c('NcActionButton',{key:action.id,class:'files-list__row-action-' + action.id,on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('CustomSvgIconRender',{attrs:{\"svg\":action.iconSvgInline([_vm.source], _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(action.displayName([_vm.source], _vm.currentView))+\"\\n\\t\\t\\t\")])}),1):_vm._e()],1),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__row-size\",style:({ opacity: _vm.sizeOpacity })},[_c('span',[_vm._v(_vm._s(_vm.size))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('td',{key:column.id,staticClass:\"files-list__row-column-custom\",class:`files-list__row-${_vm.currentView?.id}-${column.id}`},[(_vm.active)?_c('CustomElementRender',{attrs:{\"current-view\":_vm.currentView,\"render\":column.render,\"source\":_vm.source}}):_vm._e()],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.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!./FilesListFooter.vue?vue&type=style&index=0&id=3a8b911c&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!./FilesListFooter.vue?vue&type=style&index=0&id=3a8b911c&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListFooter.vue?vue&type=template&id=3a8b911c&scoped=true&\"\nimport script from \"./FilesListFooter.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListFooter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListFooter.vue?vue&type=style&index=0&id=3a8b911c&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 \"3a8b911c\",\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('tr',[_c('th',{staticClass:\"files-list__row-checkbox\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('files', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\"},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.summary))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-size\"},[_c('span',[_vm._v(_vm._s(_vm.totalSize))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column)},[_c('span',[_vm._v(_vm._s(column.summary?.(_vm.nodes, _vm.currentView)))])])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.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!./FilesListHeaderActions.vue?vue&type=style&index=0&id=ebdf16d4&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!./FilesListHeaderActions.vue?vue&type=style&index=0&id=ebdf16d4&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListHeaderActions.vue?vue&type=template&id=ebdf16d4&scoped=true&\"\nimport script from \"./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListHeaderActions.vue?vue&type=style&index=0&id=ebdf16d4&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 \"ebdf16d4\",\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('th',{staticClass:\"files-list__column files-list__row-actions-batch\",attrs:{\"colspan\":\"2\"}},[_c('NcActions',{ref:\"actionsMenu\",attrs:{\"disabled\":!!_vm.loading || _vm.areSomeNodesLoading,\"force-title\":true,\"inline\":3}},_vm._l((_vm.enabledActions),function(action){return _c('NcActionButton',{key:action.id,class:'files-list__row-actions-batch-' + action.id,on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('CustomSvgIconRender',{attrs:{\"svg\":action.iconSvgInline(_vm.nodes, _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_vm.nodes, _vm.currentView))+\"\\n\\t\\t\")])}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.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!./FilesListHeaderButton.vue?vue&type=style&index=0&id=443029be&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!./FilesListHeaderButton.vue?vue&type=style&index=0&id=443029be&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListHeaderButton.vue?vue&type=template&id=443029be&\"\nimport script from \"./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListHeaderButton.vue?vue&type=style&index=0&id=443029be&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,_setup=_vm._self._setupProxy;return _c('NcButton',{staticClass:\"files-list__column-sort-button\",class:{'files-list__column-sort-button--active': _vm.sortingMode === _vm.mode},attrs:{\"aria-label\":_vm.sortAriaLabel(_vm.name),\"type\":\"tertiary\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleSortBy(_vm.mode)}}},[(_vm.sortingMode !== _vm.mode || _vm.isAscSorting)?_c('MenuUp',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}):_c('MenuDown',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\"+_vm._s(_vm.name)+\"\\n\")],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.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!./FilesListHeader.vue?vue&type=style&index=0&id=2cb97ee2&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!./FilesListHeader.vue?vue&type=style&index=0&id=2cb97ee2&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListHeader.vue?vue&type=template&id=2cb97ee2&scoped=true&\"\nimport script from \"./FilesListHeader.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListHeader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListHeader.vue?vue&type=style&index=0&id=2cb97ee2&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 \"2cb97ee2\",\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('tr',[_c('th',{staticClass:\"files-list__column files-list__row-checkbox\"},[_c('NcCheckboxRadioSwitch',_vm._b({on:{\"update:checked\":_vm.onToggleAll}},'NcCheckboxRadioSwitch',_vm.selectAllBind,false))],1),_vm._v(\" \"),(!_vm.isNoneSelected)?_c('FilesListHeaderActions',{attrs:{\"current-view\":_vm.currentView,\"selected-nodes\":_vm.selectedNodes}}):[_c('th',{staticClass:\"files-list__column files-list__row-name files-list__column--sortable\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleSortBy('basename')}}},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('FilesListHeaderButton',{attrs:{\"name\":_vm.t('files', 'Name'),\"mode\":\"basename\"}})],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-size\",class:{'files-list__column--sortable': _vm.isSizeAvailable}},[_c('FilesListHeaderButton',{attrs:{\"name\":_vm.t('files', 'Size'),\"mode\":\"size\"}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column)},[(!!column.sort)?_c('FilesListHeaderButton',{attrs:{\"name\":column.title,\"mode\":column.id}}):_c('span',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(column.title)+\"\\n\\t\\t\\t\")])],1)})]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts&\"","\n\n\n\n\n\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!./FilesListVirtual.vue?vue&type=style&index=0&id=e417a998&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!./FilesListVirtual.vue?vue&type=style&index=0&id=e417a998&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListVirtual.vue?vue&type=template&id=e417a998&scoped=true&\"\nimport script from \"./FilesListVirtual.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListVirtual.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListVirtual.vue?vue&type=style&index=0&id=e417a998&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 \"e417a998\",\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('RecycleScroller',{ref:\"recycleScroller\",staticClass:\"files-list\",attrs:{\"key-field\":\"source\",\"items\":_vm.nodes,\"item-size\":55,\"table-mode\":true,\"item-class\":\"files-list__row\",\"item-tag\":\"tr\",\"list-class\":\"files-list__body\",\"list-tag\":\"tbody\",\"role\":\"table\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ item, active, index }){return [_c('FileEntry',{attrs:{\"active\":active,\"index\":index,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes,\"source\":item}})]}},{key:\"before\",fn:function(){return [_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.currentView.caption || '')+\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list.'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('FilesListHeader',{attrs:{\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes}})]},proxy:true},{key:\"after\",fn:function(){return [_c('FilesListFooter',{attrs:{\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes,\"summary\":_vm.summary}})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.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!./FilesList.vue?vue&type=style&index=0&id=f52708d2&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!./FilesList.vue?vue&type=style&index=0&id=f52708d2&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesList.vue?vue&type=template&id=f52708d2&scoped=true&\"\nimport script from \"./FilesList.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesList.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesList.vue?vue&type=style&index=0&id=f52708d2&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 \"f52708d2\",\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('NcAppContent',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.currentView?.legacy),expression:\"!currentView?.legacy\"}],class:{'app-content--hidden': _vm.currentView?.legacy},attrs:{\"data-cy-files-content\":\"\"}},[_c('div',{staticClass:\"files-list__header\"},[_c('BreadCrumbs',{attrs:{\"path\":_vm.dir},on:{\"reload\":_vm.fetchContent}}),_vm._v(\" \"),(_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__refresh-icon\"}):_vm._e()],1),_vm._v(\" \"),(_vm.loading && !_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"title\":_vm.t('files', 'Loading current folder')}}):(!_vm.loading && _vm.isEmptyDir)?_c('NcEmptyContent',{attrs:{\"title\":_vm.t('files', 'No files in here'),\"description\":_vm.t('files', 'No files or folders have been deleted yet'),\"data-cy-files-content-empty\":\"\"},scopedSlots:_vm._u([{key:\"action\",fn:function(){return [(_vm.dir !== '/')?_c('NcButton',{attrs:{\"aria-label\":\"t('files', 'Go to the previous folder')\",\"type\":\"primary\",\"to\":_vm.toPreviousDir}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Go back'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true},{key:\"icon\",fn:function(){return [_c('TrashCan')]},proxy:true}])}):_c('FilesListVirtual',{ref:\"filesListVirtual\",attrs:{\"current-view\":_vm.currentView,\"nodes\":_vm.dirContents}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Gary Kim \n *\n * @author Gary Kim \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 .\n *\n */\n\nexport default class Settings {\n\n\t_settings\n\n\tconstructor() {\n\t\tthis._settings = []\n\t\tconsole.debug('OCA.Files.Settings initialized')\n\t}\n\n\t/**\n\t * Register a new setting\n\t *\n\t * @since 19.0.0\n\t * @param {OCA.Files.Settings.Setting} view element to add to settings\n\t * @return {boolean} whether registering was successful\n\t */\n\tregister(view) {\n\t\tif (this._settings.filter(e => e.name === view.name).length > 0) {\n\t\t\tconsole.error('A setting with the same name is already registered')\n\t\t\treturn false\n\t\t}\n\t\tthis._settings.push(view)\n\t\treturn true\n\t}\n\n\t/**\n\t * All settings elements\n\t *\n\t * @return {OCA.Files.Settings.Setting[]} All currently registered settings\n\t */\n\tget settings() {\n\t\treturn this._settings\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim \n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author Gary Kim \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 .\n *\n */\n\nexport default class Setting {\n\n\t_close\n\t_el\n\t_name\n\t_open\n\n\t/**\n\t * Create a new files app setting\n\t *\n\t * @since 19.0.0\n\t * @param {string} name the name of this setting\n\t * @param {object} component the component\n\t * @param {Function} component.el function that returns an unmounted dom element to be added\n\t * @param {Function} [component.open] callback for when setting is added\n\t * @param {Function} [component.close] callback for when setting is closed\n\t */\n\tconstructor(name, { el, open, close }) {\n\t\tthis._name = name\n\t\tthis._el = el\n\t\tthis._open = open\n\t\tthis._close = close\n\n\t\tif (typeof this._open !== 'function') {\n\t\t\tthis._open = () => {}\n\t\t}\n\n\t\tif (typeof this._close !== 'function') {\n\t\t\tthis._close = () => {}\n\t\t}\n\t}\n\n\tget name() {\n\t\treturn this._name\n\t}\n\n\tget el() {\n\t\treturn this._el\n\t}\n\n\tget open() {\n\t\treturn this._open\n\t}\n\n\tget close() {\n\t\treturn this._close\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\nimport Vue from 'vue'\nimport Router from 'vue-router'\nimport { generateUrl } from '@nextcloud/router'\nimport { stringify } from 'query-string'\n\nVue.use(Router)\n\nconst router = new Router({\n\tmode: 'history',\n\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: generateUrl('/apps/files', ''),\n\tlinkActiveClass: 'active',\n\n\troutes: [\n\t\t{\n\t\t\tpath: '/',\n\t\t\t// Pretending we're using the default view\n\t\t\talias: '/files',\n\t\t},\n\t\t{\n\t\t\tpath: '/:view/:fileid?',\n\t\t\tname: 'filelist',\n\t\t\tprops: true,\n\t\t},\n\t],\n\n\t// Custom stringifyQuery to prevent encoding of slashes in the url\n\tstringifyQuery(query) {\n\t\tconst result = stringify(query).replace(/%2F/gmi, '/')\n\t\treturn result ? ('?' + result) : ''\n\t},\n})\n\nexport default router\n","import './templates.js'\nimport './legacy/filelistSearch.js'\nimport './actions/deleteAction.ts'\n\nimport processLegacyFilesViews from './legacy/navigationMapper.js'\n\nimport Vue from 'vue'\nimport { createPinia, PiniaVuePlugin } from 'pinia'\n\nimport NavigationService from './services/Navigation.ts'\nimport registerPreviewServiceWorker from './services/ServiceWorker.js'\n\nimport NavigationView from './views/Navigation.vue'\nimport FilesListView from './views/FilesList.vue'\n\nimport SettingsService from './services/Settings.js'\nimport SettingsModel from './models/Setting.js'\n\nimport router from './router/router.js'\n\n// Init private and public Files namespace\nwindow.OCA.Files = window.OCA.Files ?? {}\nwindow.OCP.Files = window.OCP.Files ?? {}\n\n// Init Pinia store\nVue.use(PiniaVuePlugin)\nconst pinia = createPinia()\n\n// Init Navigation Service\nconst Navigation = new NavigationService()\nObject.assign(window.OCP.Files, { Navigation })\nVue.prototype.$navigation = Navigation\n\n// Init Files App Settings Service\nconst Settings = new SettingsService()\nObject.assign(window.OCA.Files, { Settings })\nObject.assign(window.OCA.Files.Settings, { Setting: SettingsModel })\n\n// Init Navigation View\nconst View = Vue.extend(NavigationView)\nconst FilesNavigationRoot = new View({\n\tname: 'FilesNavigationRoot',\n\tpropsData: {\n\t\tNavigation,\n\t},\n\trouter,\n\tpinia,\n})\nFilesNavigationRoot.$mount('#app-navigation-files')\n\n// Init content list view\nconst ListView = Vue.extend(FilesListView)\nconst FilesList = new ListView({\n\tname: 'FilesListRoot',\n\trouter,\n\tpinia,\n})\nFilesList.$mount('#app-content-vue')\n\n// Init legacy files views\nprocessLegacyFilesViews()\n\n// Register preview service worker\nregisterPreviewServiceWorker()\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, \".breadcrumb[data-v-68b3b20b]{flex:1 1 100% !important;width:100%}.breadcrumb[data-v-68b3b20b] a{cursor:pointer !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/BreadCrumbs.vue\"],\"names\":[],\"mappings\":\"AACA,6BAEC,wBAAA,CACA,UAAA,CAEA,+BACC,yBAAA\",\"sourcesContent\":[\"\\n.breadcrumb {\\n\\t// Take as much space as possible\\n\\tflex: 1 1 100% !important;\\n\\twidth: 100%;\\n\\n\\t::v-deep a {\\n\\t\\tcursor: pointer !important;\\n\\t}\\n}\\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, \".custom-svg-icon[data-v-6646d6a5]{display:flex;align-items:center;align-self:center;justify-content:center;justify-self:center;width:44px;height:44px;opacity:1}.custom-svg-icon[data-v-6646d6a5] svg{height:22px;width:22px;fill:currentColor}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/CustomSvgIconRender.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,YAAA,CACA,kBAAA,CACA,iBAAA,CACA,sBAAA,CACA,mBAAA,CACA,UAAA,CACA,WAAA,CACA,SAAA,CAEA,sCAGC,WAAA,CACA,UAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n.custom-svg-icon {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\talign-self: center;\\n\\tjustify-content: center;\\n\\tjustify-self: center;\\n\\twidth: 44px;\\n\\theight: 44px;\\n\\topacity: 1;\\n\\n\\t::v-deep svg {\\n\\t\\t// mdi icons have a size of 24px\\n\\t\\t// 22px results in roughly 16px inner size\\n\\t\\theight: 22px;\\n\\t\\twidth: 22px;\\n\\t\\tfill: currentColor;\\n\\t}\\n}\\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, \"td[data-v-4f1730f6],th[data-v-4f1730f6]{display:flex;align-items:center;flex:0 0 auto;justify-content:left;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}td span[data-v-4f1730f6],th span[data-v-4f1730f6]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list__row-checkbox[data-v-4f1730f6]{justify-content:center}.files-list__row-checkbox[data-v-4f1730f6] .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list__row-checkbox[data-v-4f1730f6] .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list__row-checkbox[data-v-4f1730f6] .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list__row-icon[data-v-4f1730f6]{display:flex;align-items:center;justify-content:center;width:var(--icon-preview-size);height:100%;margin-right:var(--checkbox-padding);color:var(--color-primary-element)}.files-list__row-icon>span[data-v-4f1730f6]{justify-content:flex-start}.files-list__row-icon[data-v-4f1730f6] svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list__row-icon-preview[data-v-4f1730f6]{overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center;background-size:contain}.files-list__row-name[data-v-4f1730f6]{overflow:hidden;flex:1 1 auto}.files-list__row-name a[data-v-4f1730f6]{display:flex;align-items:center;width:100%;height:100%}.files-list__row-name a:focus .files-list__row-name-text[data-v-4f1730f6],.files-list__row-name a:focus-visible .files-list__row-name-text[data-v-4f1730f6]{outline:2px solid var(--color-main-text) !important;border-radius:20px}.files-list__row-name .files-list__row-name-text[data-v-4f1730f6]{padding:5px 10px;margin-left:-10px}.files-list__row-actions[data-v-4f1730f6]{width:auto}.files-list__row-actions~td[data-v-4f1730f6],.files-list__row-actions~th[data-v-4f1730f6]{margin:0 var(--cell-margin)}.files-list__row-actions[data-v-4f1730f6]>button .button-vue__text{font-weight:normal}.files-list__row-actions[data-v-4f1730f6]>button:not(:hover,:focus,:active) .button-vue__wrapper{color:var(--color-text-maxcontrast)}.files-list__row-size[data-v-4f1730f6]{justify-content:flex-end;width:calc(var(--row-height)*1.5);color:var(--color-main-text)}.files-list__row-size[data-v-4f1730f6] .files-list__column-sort-button{padding:0 16px 0 4px !important}.files-list__row-size[data-v-4f1730f6] .files-list__column-sort-button .button-vue__wrapper{flex-direction:row}.files-list__row-column-custom[data-v-4f1730f6]{width:calc(var(--row-height)*2)}tr[data-v-4f1730f6]:hover,tr[data-v-4f1730f6]:focus,tr[data-v-4f1730f6]:active{background-color:var(--color-background-dark)}.files-list__row-icon-preview[data-v-4f1730f6]:not([style*=background]){background:var(--color-loading-dark)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/mixins/fileslist-row.scss\",\"webpack://./apps/files/src/components/FileEntry.vue\"],\"names\":[],\"mappings\":\"AA4BA,wCACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,oBAAA,CACA,uBAAA,CACA,wBAAA,CACA,QAAA,CACA,SAAA,CACA,mCAAA,CACA,WAAA,CAKA,kDACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAIF,2CACC,sBAAA,CACA,kEACC,YAAA,CACA,sBAAA,CAEA,iCAAA,CAEA,qGACC,2BAAA,CACA,4BAAA,CACA,QAAA,CACA,8DAAA,CAGD,+FACC,mBAAA,CAKH,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,8BAAA,CACA,WAAA,CAEA,oCAAA,CACA,kCAAA,CAEA,4CACC,0BAAA,CAGD,2CACC,8BAAA,CACA,+BAAA,CAGD,+CACC,eAAA,CACA,8BAAA,CACA,+BAAA,CACA,kCAAA,CACA,2BAAA,CAEA,0BAAA,CACA,uBAAA,CAIF,uCAEC,eAAA,CAEA,aAAA,CAEA,yCACC,YAAA,CACA,kBAAA,CAEA,UAAA,CACA,WAAA,CAGA,4JAEC,mDAAA,CACA,kBAAA,CAIF,kEAEC,gBAAA,CACA,iBAAA,CAIF,0CACC,UAAA,CAGA,0FAEC,2BAAA,CAIA,mEAEC,kBAAA,CAED,iGAEC,mCAAA,CAKH,uCAEC,wBAAA,CACA,iCAAA,CAEA,4BAAA,CAGA,uEACC,+BAAA,CACA,4FACC,kBAAA,CAKH,gDACC,+BAAA,CCnKA,+EAGC,6CAAA,CAKF,wEACI,oCAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2023 John Molakvoæ \\n *\\n * @author John Molakvoæ \\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 .\\n *\\n */\\n\\n/**\\n * ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠\\n * This file is for every column styling that must be\\n * shared between BOTH the files list AND the list header.\\n * ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠\\n */\\ntd, th {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tflex: 0 0 auto;\\n\\tjustify-content: left;\\n\\twidth: var(--row-height);\\n\\theight: var(--row-height);\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tborder: none;\\n\\n\\t// Columns should try to add any text\\n\\t// node wrapped in a span. That should help\\n\\t// with the ellipsis on overflow.\\n\\tspan {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\\n.files-list__row-checkbox {\\n\\tjustify-content: center;\\n\\t&::v-deep .checkbox-radio-switch {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\n\\t\\t--icon-size: var(--checkbox-size);\\n\\n\\t\\tlabel.checkbox-radio-switch__label {\\n\\t\\t\\twidth: var(--clickable-area);\\n\\t\\t\\theight: var(--clickable-area);\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\\n\\t\\t}\\n\\n\\t\\t.checkbox-radio-switch__icon {\\n\\t\\t\\tmargin: 0 !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n.files-list__row-icon {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\twidth: var(--icon-preview-size);\\n\\theight: 100%;\\n\\t// Show same padding as the checkbox right padding for visual balance\\n\\tmargin-right: var(--checkbox-padding);\\n\\tcolor: var(--color-primary-element);\\n\\n\\t& > span {\\n\\t\\tjustify-content: flex-start;\\n\\t}\\n\\n\\t&::v-deep svg {\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: var(--icon-preview-size);\\n\\t}\\n\\n\\t&-preview {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: var(--icon-preview-size);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\t// Center and contain the preview\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: contain;\\n\\t}\\n}\\n\\n.files-list__row-name {\\n\\t// Prevent link from overflowing\\n\\toverflow: hidden;\\n\\t// Take as much space as possible\\n\\tflex: 1 1 auto;\\n\\n\\ta {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\t// Fill cell height and width\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\n\\t\\t// Keyboard indicator a11y\\n\\t\\t&:focus .files-list__row-name-text,\\n\\t\\t&:focus-visible .files-list__row-name-text {\\n\\t\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t\\tborder-radius: 20px;\\n\\t\\t}\\n\\t}\\n\\n\\t.files-list__row-name-text {\\n\\t\\t// Make some space for the outline\\n\\t\\tpadding: 5px 10px;\\n\\t\\tmargin-left: -10px;\\n\\t}\\n}\\n\\n.files-list__row-actions {\\n\\twidth: auto;\\n\\n\\t// Add margin to all cells after the actions\\n\\t& ~ td,\\n\\t& ~ th {\\n\\t\\tmargin: 0 var(--cell-margin);\\n\\t}\\n\\n\\t&::v-deep > button {\\n\\t\\t.button-vue__text {\\n\\t\\t\\t// Remove bold from default button styling\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t}\\n\\t\\t&:not(:hover, :focus, :active) .button-vue__wrapper {\\n\\t\\t\\t// Also apply color-text-maxcontrast to non-active button\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n}\\n\\n.files-list__row-size {\\n\\t// Right align text\\n\\tjustify-content: flex-end;\\n\\twidth: calc(var(--row-height) * 1.5);\\n\\t// opacity varies with the size\\n\\tcolor: var(--color-main-text);\\n\\n\\t// Icon is before text since size is right aligned\\n\\t::v-deep .files-list__column-sort-button {\\n\\t\\tpadding: 0 16px 0 4px !important;\\n\\t\\t.button-vue__wrapper {\\n\\t\\t\\tflex-direction: row;\\n\\t\\t}\\n\\t}\\n}\\n\\n.files-list__row-column-custom {\\n\\twidth: calc(var(--row-height) * 2);\\n}\\n\",\"\\n@import '../mixins/fileslist-row.scss';\\n\\n/* Hover effect on tbody lines only */\\ntr {\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n}\\n\\n/* Preview not loaded animation effect */\\n.files-list__row-icon-preview:not([style*='background']) {\\n background: var(--color-loading-dark);\\n\\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\\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, \"td[data-v-3a8b911c],th[data-v-3a8b911c]{display:flex;align-items:center;flex:0 0 auto;justify-content:left;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}td span[data-v-3a8b911c],th span[data-v-3a8b911c]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list__row-checkbox[data-v-3a8b911c]{justify-content:center}.files-list__row-checkbox[data-v-3a8b911c] .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list__row-checkbox[data-v-3a8b911c] .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list__row-checkbox[data-v-3a8b911c] .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list__row-icon[data-v-3a8b911c]{display:flex;align-items:center;justify-content:center;width:var(--icon-preview-size);height:100%;margin-right:var(--checkbox-padding);color:var(--color-primary-element)}.files-list__row-icon>span[data-v-3a8b911c]{justify-content:flex-start}.files-list__row-icon[data-v-3a8b911c] svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list__row-icon-preview[data-v-3a8b911c]{overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center;background-size:contain}.files-list__row-name[data-v-3a8b911c]{overflow:hidden;flex:1 1 auto}.files-list__row-name a[data-v-3a8b911c]{display:flex;align-items:center;width:100%;height:100%}.files-list__row-name a:focus .files-list__row-name-text[data-v-3a8b911c],.files-list__row-name a:focus-visible .files-list__row-name-text[data-v-3a8b911c]{outline:2px solid var(--color-main-text) !important;border-radius:20px}.files-list__row-name .files-list__row-name-text[data-v-3a8b911c]{padding:5px 10px;margin-left:-10px}.files-list__row-actions[data-v-3a8b911c]{width:auto}.files-list__row-actions~td[data-v-3a8b911c],.files-list__row-actions~th[data-v-3a8b911c]{margin:0 var(--cell-margin)}.files-list__row-actions[data-v-3a8b911c]>button .button-vue__text{font-weight:normal}.files-list__row-actions[data-v-3a8b911c]>button:not(:hover,:focus,:active) .button-vue__wrapper{color:var(--color-text-maxcontrast)}.files-list__row-size[data-v-3a8b911c]{justify-content:flex-end;width:calc(var(--row-height)*1.5);color:var(--color-main-text)}.files-list__row-size[data-v-3a8b911c] .files-list__column-sort-button{padding:0 16px 0 4px !important}.files-list__row-size[data-v-3a8b911c] .files-list__column-sort-button .button-vue__wrapper{flex-direction:row}.files-list__row-column-custom[data-v-3a8b911c]{width:calc(var(--row-height)*2)}tr[data-v-3a8b911c]{padding-bottom:300px;border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}td[data-v-3a8b911c]{user-select:none;color:var(--color-text-maxcontrast) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/mixins/fileslist-row.scss\",\"webpack://./apps/files/src/components/FilesListFooter.vue\"],\"names\":[],\"mappings\":\"AA4BA,wCACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,oBAAA,CACA,uBAAA,CACA,wBAAA,CACA,QAAA,CACA,SAAA,CACA,mCAAA,CACA,WAAA,CAKA,kDACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAIF,2CACC,sBAAA,CACA,kEACC,YAAA,CACA,sBAAA,CAEA,iCAAA,CAEA,qGACC,2BAAA,CACA,4BAAA,CACA,QAAA,CACA,8DAAA,CAGD,+FACC,mBAAA,CAKH,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,8BAAA,CACA,WAAA,CAEA,oCAAA,CACA,kCAAA,CAEA,4CACC,0BAAA,CAGD,2CACC,8BAAA,CACA,+BAAA,CAGD,+CACC,eAAA,CACA,8BAAA,CACA,+BAAA,CACA,kCAAA,CACA,2BAAA,CAEA,0BAAA,CACA,uBAAA,CAIF,uCAEC,eAAA,CAEA,aAAA,CAEA,yCACC,YAAA,CACA,kBAAA,CAEA,UAAA,CACA,WAAA,CAGA,4JAEC,mDAAA,CACA,kBAAA,CAIF,kEAEC,gBAAA,CACA,iBAAA,CAIF,0CACC,UAAA,CAGA,0FAEC,2BAAA,CAIA,mEAEC,kBAAA,CAED,iGAEC,mCAAA,CAKH,uCAEC,wBAAA,CACA,iCAAA,CAEA,4BAAA,CAGA,uEACC,+BAAA,CACA,4FACC,kBAAA,CAKH,gDACC,+BAAA,CCpKD,oBACC,oBAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAGD,oBACC,gBAAA,CAEA,8CAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2023 John Molakvoæ \\n *\\n * @author John Molakvoæ \\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 .\\n *\\n */\\n\\n/**\\n * ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠\\n * This file is for every column styling that must be\\n * shared between BOTH the files list AND the list header.\\n * ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠\\n */\\ntd, th {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tflex: 0 0 auto;\\n\\tjustify-content: left;\\n\\twidth: var(--row-height);\\n\\theight: var(--row-height);\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tborder: none;\\n\\n\\t// Columns should try to add any text\\n\\t// node wrapped in a span. That should help\\n\\t// with the ellipsis on overflow.\\n\\tspan {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\\n.files-list__row-checkbox {\\n\\tjustify-content: center;\\n\\t&::v-deep .checkbox-radio-switch {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\n\\t\\t--icon-size: var(--checkbox-size);\\n\\n\\t\\tlabel.checkbox-radio-switch__label {\\n\\t\\t\\twidth: var(--clickable-area);\\n\\t\\t\\theight: var(--clickable-area);\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\\n\\t\\t}\\n\\n\\t\\t.checkbox-radio-switch__icon {\\n\\t\\t\\tmargin: 0 !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n.files-list__row-icon {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\twidth: var(--icon-preview-size);\\n\\theight: 100%;\\n\\t// Show same padding as the checkbox right padding for visual balance\\n\\tmargin-right: var(--checkbox-padding);\\n\\tcolor: var(--color-primary-element);\\n\\n\\t& > span {\\n\\t\\tjustify-content: flex-start;\\n\\t}\\n\\n\\t&::v-deep svg {\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: var(--icon-preview-size);\\n\\t}\\n\\n\\t&-preview {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: var(--icon-preview-size);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\t// Center and contain the preview\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: contain;\\n\\t}\\n}\\n\\n.files-list__row-name {\\n\\t// Prevent link from overflowing\\n\\toverflow: hidden;\\n\\t// Take as much space as possible\\n\\tflex: 1 1 auto;\\n\\n\\ta {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\t// Fill cell height and width\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\n\\t\\t// Keyboard indicator a11y\\n\\t\\t&:focus .files-list__row-name-text,\\n\\t\\t&:focus-visible .files-list__row-name-text {\\n\\t\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t\\tborder-radius: 20px;\\n\\t\\t}\\n\\t}\\n\\n\\t.files-list__row-name-text {\\n\\t\\t// Make some space for the outline\\n\\t\\tpadding: 5px 10px;\\n\\t\\tmargin-left: -10px;\\n\\t}\\n}\\n\\n.files-list__row-actions {\\n\\twidth: auto;\\n\\n\\t// Add margin to all cells after the actions\\n\\t& ~ td,\\n\\t& ~ th {\\n\\t\\tmargin: 0 var(--cell-margin);\\n\\t}\\n\\n\\t&::v-deep > button {\\n\\t\\t.button-vue__text {\\n\\t\\t\\t// Remove bold from default button styling\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t}\\n\\t\\t&:not(:hover, :focus, :active) .button-vue__wrapper {\\n\\t\\t\\t// Also apply color-text-maxcontrast to non-active button\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n}\\n\\n.files-list__row-size {\\n\\t// Right align text\\n\\tjustify-content: flex-end;\\n\\twidth: calc(var(--row-height) * 1.5);\\n\\t// opacity varies with the size\\n\\tcolor: var(--color-main-text);\\n\\n\\t// Icon is before text since size is right aligned\\n\\t::v-deep .files-list__column-sort-button {\\n\\t\\tpadding: 0 16px 0 4px !important;\\n\\t\\t.button-vue__wrapper {\\n\\t\\t\\tflex-direction: row;\\n\\t\\t}\\n\\t}\\n}\\n\\n.files-list__row-column-custom {\\n\\twidth: calc(var(--row-height) * 2);\\n}\\n\",\"\\n@import '../mixins/fileslist-row.scss';\\n\\n// Scoped row\\ntr {\\n\\tpadding-bottom: 300px;\\n\\tborder-top: 1px solid var(--color-border);\\n\\t// Prevent hover effect on the whole row\\n\\tbackground-color: transparent !important;\\n\\tborder-bottom: none !important;\\n}\\n\\ntd {\\n\\tuser-select: none;\\n\\t// Make sure the cell colors don't apply to column headers\\n\\tcolor: var(--color-text-maxcontrast) !important;\\n}\\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, \"td[data-v-2cb97ee2],th[data-v-2cb97ee2]{display:flex;align-items:center;flex:0 0 auto;justify-content:left;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}td span[data-v-2cb97ee2],th span[data-v-2cb97ee2]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list__row-checkbox[data-v-2cb97ee2]{justify-content:center}.files-list__row-checkbox[data-v-2cb97ee2] .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list__row-checkbox[data-v-2cb97ee2] .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list__row-checkbox[data-v-2cb97ee2] .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list__row-icon[data-v-2cb97ee2]{display:flex;align-items:center;justify-content:center;width:var(--icon-preview-size);height:100%;margin-right:var(--checkbox-padding);color:var(--color-primary-element)}.files-list__row-icon>span[data-v-2cb97ee2]{justify-content:flex-start}.files-list__row-icon[data-v-2cb97ee2] svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list__row-icon-preview[data-v-2cb97ee2]{overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center;background-size:contain}.files-list__row-name[data-v-2cb97ee2]{overflow:hidden;flex:1 1 auto}.files-list__row-name a[data-v-2cb97ee2]{display:flex;align-items:center;width:100%;height:100%}.files-list__row-name a:focus .files-list__row-name-text[data-v-2cb97ee2],.files-list__row-name a:focus-visible .files-list__row-name-text[data-v-2cb97ee2]{outline:2px solid var(--color-main-text) !important;border-radius:20px}.files-list__row-name .files-list__row-name-text[data-v-2cb97ee2]{padding:5px 10px;margin-left:-10px}.files-list__row-actions[data-v-2cb97ee2]{width:auto}.files-list__row-actions~td[data-v-2cb97ee2],.files-list__row-actions~th[data-v-2cb97ee2]{margin:0 var(--cell-margin)}.files-list__row-actions[data-v-2cb97ee2]>button .button-vue__text{font-weight:normal}.files-list__row-actions[data-v-2cb97ee2]>button:not(:hover,:focus,:active) .button-vue__wrapper{color:var(--color-text-maxcontrast)}.files-list__row-size[data-v-2cb97ee2]{justify-content:flex-end;width:calc(var(--row-height)*1.5);color:var(--color-main-text)}.files-list__row-size[data-v-2cb97ee2] .files-list__column-sort-button{padding:0 16px 0 4px !important}.files-list__row-size[data-v-2cb97ee2] .files-list__column-sort-button .button-vue__wrapper{flex-direction:row}.files-list__row-column-custom[data-v-2cb97ee2]{width:calc(var(--row-height)*2)}.files-list__column[data-v-2cb97ee2]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-2cb97ee2]{cursor:pointer}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/mixins/fileslist-row.scss\",\"webpack://./apps/files/src/components/FilesListHeader.vue\"],\"names\":[],\"mappings\":\"AA4BA,wCACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,oBAAA,CACA,uBAAA,CACA,wBAAA,CACA,QAAA,CACA,SAAA,CACA,mCAAA,CACA,WAAA,CAKA,kDACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAIF,2CACC,sBAAA,CACA,kEACC,YAAA,CACA,sBAAA,CAEA,iCAAA,CAEA,qGACC,2BAAA,CACA,4BAAA,CACA,QAAA,CACA,8DAAA,CAGD,+FACC,mBAAA,CAKH,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,8BAAA,CACA,WAAA,CAEA,oCAAA,CACA,kCAAA,CAEA,4CACC,0BAAA,CAGD,2CACC,8BAAA,CACA,+BAAA,CAGD,+CACC,eAAA,CACA,8BAAA,CACA,+BAAA,CACA,kCAAA,CACA,2BAAA,CAEA,0BAAA,CACA,uBAAA,CAIF,uCAEC,eAAA,CAEA,aAAA,CAEA,yCACC,YAAA,CACA,kBAAA,CAEA,UAAA,CACA,WAAA,CAGA,4JAEC,mDAAA,CACA,kBAAA,CAIF,kEAEC,gBAAA,CACA,iBAAA,CAIF,0CACC,UAAA,CAGA,0FAEC,2BAAA,CAIA,mEAEC,kBAAA,CAED,iGAEC,mCAAA,CAKH,uCAEC,wBAAA,CACA,iCAAA,CAEA,4BAAA,CAGA,uEACC,+BAAA,CACA,4FACC,kBAAA,CAKH,gDACC,+BAAA,CCtKD,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2023 John Molakvoæ \\n *\\n * @author John Molakvoæ \\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 .\\n *\\n */\\n\\n/**\\n * ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠\\n * This file is for every column styling that must be\\n * shared between BOTH the files list AND the list header.\\n * ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠\\n */\\ntd, th {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tflex: 0 0 auto;\\n\\tjustify-content: left;\\n\\twidth: var(--row-height);\\n\\theight: var(--row-height);\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tborder: none;\\n\\n\\t// Columns should try to add any text\\n\\t// node wrapped in a span. That should help\\n\\t// with the ellipsis on overflow.\\n\\tspan {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\\n.files-list__row-checkbox {\\n\\tjustify-content: center;\\n\\t&::v-deep .checkbox-radio-switch {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\n\\t\\t--icon-size: var(--checkbox-size);\\n\\n\\t\\tlabel.checkbox-radio-switch__label {\\n\\t\\t\\twidth: var(--clickable-area);\\n\\t\\t\\theight: var(--clickable-area);\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\\n\\t\\t}\\n\\n\\t\\t.checkbox-radio-switch__icon {\\n\\t\\t\\tmargin: 0 !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n.files-list__row-icon {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\twidth: var(--icon-preview-size);\\n\\theight: 100%;\\n\\t// Show same padding as the checkbox right padding for visual balance\\n\\tmargin-right: var(--checkbox-padding);\\n\\tcolor: var(--color-primary-element);\\n\\n\\t& > span {\\n\\t\\tjustify-content: flex-start;\\n\\t}\\n\\n\\t&::v-deep svg {\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: var(--icon-preview-size);\\n\\t}\\n\\n\\t&-preview {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: var(--icon-preview-size);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\t// Center and contain the preview\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: contain;\\n\\t}\\n}\\n\\n.files-list__row-name {\\n\\t// Prevent link from overflowing\\n\\toverflow: hidden;\\n\\t// Take as much space as possible\\n\\tflex: 1 1 auto;\\n\\n\\ta {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\t// Fill cell height and width\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\n\\t\\t// Keyboard indicator a11y\\n\\t\\t&:focus .files-list__row-name-text,\\n\\t\\t&:focus-visible .files-list__row-name-text {\\n\\t\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t\\tborder-radius: 20px;\\n\\t\\t}\\n\\t}\\n\\n\\t.files-list__row-name-text {\\n\\t\\t// Make some space for the outline\\n\\t\\tpadding: 5px 10px;\\n\\t\\tmargin-left: -10px;\\n\\t}\\n}\\n\\n.files-list__row-actions {\\n\\twidth: auto;\\n\\n\\t// Add margin to all cells after the actions\\n\\t& ~ td,\\n\\t& ~ th {\\n\\t\\tmargin: 0 var(--cell-margin);\\n\\t}\\n\\n\\t&::v-deep > button {\\n\\t\\t.button-vue__text {\\n\\t\\t\\t// Remove bold from default button styling\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t}\\n\\t\\t&:not(:hover, :focus, :active) .button-vue__wrapper {\\n\\t\\t\\t// Also apply color-text-maxcontrast to non-active button\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n}\\n\\n.files-list__row-size {\\n\\t// Right align text\\n\\tjustify-content: flex-end;\\n\\twidth: calc(var(--row-height) * 1.5);\\n\\t// opacity varies with the size\\n\\tcolor: var(--color-main-text);\\n\\n\\t// Icon is before text since size is right aligned\\n\\t::v-deep .files-list__column-sort-button {\\n\\t\\tpadding: 0 16px 0 4px !important;\\n\\t\\t.button-vue__wrapper {\\n\\t\\t\\tflex-direction: row;\\n\\t\\t}\\n\\t}\\n}\\n\\n.files-list__row-column-custom {\\n\\twidth: calc(var(--row-height) * 2);\\n}\\n\",\"\\n@import '../mixins/fileslist-row.scss';\\n.files-list__column {\\n\\tuser-select: none;\\n\\t// Make sure the cell colors don't apply to column headers\\n\\tcolor: var(--color-text-maxcontrast) !important;\\n\\n\\t&--sortable {\\n\\t\\tcursor: pointer;\\n\\t}\\n}\\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, \".files-list__row-actions-batch[data-v-ebdf16d4]{flex:1 1 100% !important}.files-list__row-actions-batch[data-v-ebdf16d4] .button-vue__wrapper{width:100%}.files-list__row-actions-batch[data-v-ebdf16d4] .button-vue__wrapper span.button-vue__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListHeaderActions.vue\"],\"names\":[],\"mappings\":\"AACA,gDACC,wBAAA,CAGA,qEACC,UAAA,CACA,2FACC,eAAA,CACA,sBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.files-list__row-actions-batch {\\n\\tflex: 1 1 100% !important;\\n\\n\\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\\n\\t::v-deep .button-vue__wrapper {\\n\\t\\twidth: 100%;\\n\\t\\tspan.button-vue__text {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\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, \".files-list__column-sort-button{margin:0 calc(var(--cell-margin)*-1);padding:0 4px 0 16px !important}.files-list__column-sort-button .button-vue__wrapper{flex-direction:row-reverse;width:100%}.files-list__column-sort-button .button-vue__icon{transition-timing-function:linear;transition-duration:.1s;transition-property:opacity;opacity:0}.files-list__column-sort-button .button-vue__text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list__column-sort-button--active .button-vue__icon,.files-list__column-sort-button:hover .button-vue__icon,.files-list__column-sort-button:focus .button-vue__icon,.files-list__column-sort-button:active .button-vue__icon{opacity:1 !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListHeaderButton.vue\"],\"names\":[],\"mappings\":\"AACA,gCAEC,oCAAA,CAEA,+BAAA,CAGA,qDACC,0BAAA,CAGA,UAAA,CAGD,kDACC,iCAAA,CACA,uBAAA,CACA,2BAAA,CACA,SAAA,CAID,kDACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAOA,mOACC,oBAAA\",\"sourcesContent\":[\"\\n.files-list__column-sort-button {\\n\\t// Compensate for cells margin\\n\\tmargin: 0 calc(var(--cell-margin) * -1);\\n\\t// Reverse padding\\n\\tpadding: 0 4px 0 16px !important;\\n\\n\\t// Icon after text\\n\\t.button-vue__wrapper {\\n\\t\\tflex-direction: row-reverse;\\n\\t\\t// Take max inner width for text overflow ellipsis\\n\\t\\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t.button-vue__icon {\\n\\t\\ttransition-timing-function: linear;\\n\\t\\ttransition-duration: .1s;\\n\\t\\ttransition-property: opacity;\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\\n\\t.button-vue__text {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\n\\t&--active,\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\t.button-vue__icon {\\n\\t\\t\\topacity: 1 !important;\\n\\t\\t}\\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, \".files-list[data-v-e417a998]{--row-height: 55px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: 44px;--icon-preview-size: 32px;display:block;overflow:auto;height:100%}.files-list[data-v-e417a998] tbody,.files-list[data-v-e417a998] .vue-recycle-scroller__slot{display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-e417a998] .vue-recycle-scroller__slot[role=thead]{position:sticky;z-index:10;top:0;height:var(--row-height);background-color:var(--color-main-background)}.files-list[data-v-e417a998] tr{position:absolute;display:flex;align-items:center;width:100%;border-bottom:1px solid var(--color-border)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,kBAAA,CACA,mBAAA,CAEA,wEAAA,CACA,qBAAA,CACA,sBAAA,CACA,yBAAA,CAEA,aAAA,CACA,aAAA,CACA,WAAA,CAIC,4FACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,iBAAA,CAID,qEAEC,eAAA,CACA,UAAA,CACA,KAAA,CACA,wBAAA,CACA,6CAAA,CAQD,gCACC,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,UAAA,CACA,2CAAA\",\"sourcesContent\":[\"\\n.files-list {\\n\\t--row-height: 55px;\\n\\t--cell-margin: 14px;\\n\\n\\t--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);\\n\\t--checkbox-size: 24px;\\n\\t--clickable-area: 44px;\\n\\t--icon-preview-size: 32px;\\n\\n\\tdisplay: block;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\n\\t&::v-deep {\\n\\t\\t// Table head, body and footer\\n\\t\\ttbody, .vue-recycle-scroller__slot {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\t// Necessary for virtual scrolling absolute\\n\\t\\t\\tposition: relative;\\n\\t\\t}\\n\\n\\t\\t// Table header\\n\\t\\t.vue-recycle-scroller__slot[role='thead'] {\\n\\t\\t\\t// Pinned on top when scrolling\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tz-index: 10;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t/**\\n\\t\\t * Common row styling. tr are handled by\\n\\t\\t * vue-virtual-scroller, so we need to\\n\\t\\t * have those rules in here.\\n\\t\\t */\\n\\t\\ttr {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n}\\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, \".app-navigation-entry__settings-quota--not-unlimited[data-v-26c061ec] .app-navigation-entry__title{margin-top:-4px}.app-navigation-entry__settings-quota progress[data-v-26c061ec]{position:absolute;bottom:10px;margin-left:44px;width:calc(100% - 44px - 22px)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/NavigationQuota.vue\"],\"names\":[],\"mappings\":\"AAIC,mGACC,eAAA,CAGD,gEACC,iBAAA,CACA,WAAA,CACA,gBAAA,CACA,8BAAA\",\"sourcesContent\":[\"\\n// User storage stats display\\n.app-navigation-entry__settings-quota {\\n\\t// Align title with progress and icon\\n\\t&--not-unlimited::v-deep .app-navigation-entry__title {\\n\\t\\tmargin-top: -4px;\\n\\t}\\n\\n\\tprogress {\\n\\t\\tposition: absolute;\\n\\t\\tbottom: 10px;\\n\\t\\tmargin-left: 44px;\\n\\t\\twidth: calc(100% - 44px - 22px);\\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, \".template-picker__item[data-v-6c072a31]{display:flex}.template-picker__label[data-v-6c072a31]{display:flex;align-items:center;flex:1 1;flex-direction:column}.template-picker__label[data-v-6c072a31],.template-picker__label *[data-v-6c072a31]{cursor:pointer;user-select:none}.template-picker__label[data-v-6c072a31]::before{display:none !important}.template-picker__preview[data-v-6c072a31]{display:block;overflow:hidden;flex:1 1;width:var(--width);min-height:var(--height);max-height:var(--height);padding:0;border:var(--border) solid var(--color-border);border-radius:var(--border-radius-large)}input:checked+label>.template-picker__preview[data-v-6c072a31]{border-color:var(--color-primary)}.template-picker__preview--failed[data-v-6c072a31]{display:flex}.template-picker__image[data-v-6c072a31]{max-width:100%;background-color:var(--color-main-background);object-fit:cover}.template-picker__preview--failed .template-picker__image[data-v-6c072a31]{width:calc(var(--margin)*8);margin:auto;background-color:rgba(0,0,0,0) !important;object-fit:initial}.template-picker__title[data-v-6c072a31]{overflow:hidden;max-width:calc(var(--width) + 4px);padding:var(--margin);white-space:nowrap;text-overflow:ellipsis}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/TemplatePreview.vue\"],\"names\":[],\"mappings\":\"AAGC,wCACC,YAAA,CAGD,yCACC,YAAA,CAEA,kBAAA,CACA,QAAA,CACA,qBAAA,CAEA,oFACC,cAAA,CACA,gBAAA,CAGD,iDACC,uBAAA,CAIF,2CACC,aAAA,CACA,eAAA,CAEA,QAAA,CACA,kBAAA,CACA,wBAAA,CACA,wBAAA,CACA,SAAA,CACA,8CAAA,CACA,wCAAA,CAEA,+DACC,iCAAA,CAGD,mDAEC,YAAA,CAIF,yCACC,cAAA,CACA,6CAAA,CAEA,gBAAA,CAID,2EACC,2BAAA,CAEA,WAAA,CACA,yCAAA,CAEA,kBAAA,CAGD,yCACC,eAAA,CAEA,kCAAA,CACA,qBAAA,CACA,kBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n\\n.template-picker {\\n\\t&__item {\\n\\t\\tdisplay: flex;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tdisplay: flex;\\n\\t\\t// Align in the middle of the grid\\n\\t\\talign-items: center;\\n\\t\\tflex: 1 1;\\n\\t\\tflex-direction: column;\\n\\n\\t\\t&, * {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&::before {\\n\\t\\t\\tdisplay: none !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview {\\n\\t\\tdisplay: block;\\n\\t\\toverflow: hidden;\\n\\t\\t// Stretch so all entries are the same width\\n\\t\\tflex: 1 1;\\n\\t\\twidth: var(--width);\\n\\t\\tmin-height: var(--height);\\n\\t\\tmax-height: var(--height);\\n\\t\\tpadding: 0;\\n\\t\\tborder: var(--border) solid var(--color-border);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\n\\t\\tinput:checked + label > & {\\n\\t\\t\\tborder-color: var(--color-primary);\\n\\t\\t}\\n\\n\\t\\t&--failed {\\n\\t\\t\\t// Make sure to properly center fallback icon\\n\\t\\t\\tdisplay: flex;\\n\\t\\t}\\n\\t}\\n\\n\\t&__image {\\n\\t\\tmax-width: 100%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\n\\t\\tobject-fit: cover;\\n\\t}\\n\\n\\t// Failed preview, fallback to mime icon\\n\\t&__preview--failed &__image {\\n\\t\\twidth: calc(var(--margin) * 8);\\n\\t\\t// Center mime icon\\n\\t\\tmargin: auto;\\n\\t\\tbackground-color: transparent !important;\\n\\n\\t\\tobject-fit: initial;\\n\\t}\\n\\n\\t&__title {\\n\\t\\toverflow: hidden;\\n\\t\\t// also count preview border\\n\\t\\tmax-width: calc(var(--width) + 2*2px);\\n\\t\\tpadding: var(--margin);\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\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, \".app-content[data-v-f52708d2]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}.app-content[data-v-f52708d2]:not(.app-content--hidden)+#app-content{display:none}.files-list__header[data-v-f52708d2]{display:flex;align-content:center;flex:0 0;margin:4px 4px 4px 50px}.files-list__header>*[data-v-f52708d2]{flex:0 0}.files-list__refresh-icon[data-v-f52708d2]{flex:0 0 44px;width:44px;height:44px}.files-list__loading-icon[data-v-f52708d2]{margin:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesList.vue\"],\"names\":[],\"mappings\":\"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CAIA,qEACC,YAAA,CAQD,qCACC,YAAA,CACA,oBAAA,CAEA,QAAA,CAEA,uBAAA,CACA,uCAGC,QAAA,CAGF,2CACC,aAAA,CACA,UAAA,CACA,WAAA,CAED,2CACC,WAAA\",\"sourcesContent\":[\"\\n.app-content {\\n\\t// Virtual list needs to be full height and is scrollable\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\tflex-direction: column;\\n\\tmax-height: 100%;\\n\\n\\t// TODO: remove after all legacy views are migrated\\n\\t// Hides the legacy app-content if shown view is not legacy\\n\\t&:not(&--hidden)::v-deep + #app-content {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\\n$margin: 4px;\\n$navigationToggleSize: 50px;\\n\\n.files-list {\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-content: center;\\n\\t\\t// Do not grow or shrink (vertically)\\n\\t\\tflex: 0 0;\\n\\t\\t// Align with the navigation toggle icon\\n\\t\\tmargin: $margin $margin $margin $navigationToggleSize;\\n\\t\\t> * {\\n\\t\\t\\t// Do not grow or shrink (horizontally)\\n\\t\\t\\t// Only the breadcrumbs shrinks\\n\\t\\t\\tflex: 0 0;\\n\\t\\t}\\n\\t}\\n\\t&__refresh-icon {\\n\\t\\tflex: 0 0 44px;\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t}\\n\\t&__loading-icon {\\n\\t\\tmargin: auto;\\n\\t}\\n}\\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, \".app-navigation[data-v-4238b71c] .app-navigation-entry-icon{background-repeat:no-repeat;background-position:center}.app-navigation>ul.app-navigation__list[data-v-4238b71c]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-4238b71c]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Navigation.vue\"],\"names\":[],\"mappings\":\"AAEA,4DACC,2BAAA,CACA,0BAAA,CAGD,yDAEC,gDAAA,CAGD,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA\",\"sourcesContent\":[\"\\n// TODO: remove when https://github.com/nextcloud/nextcloud-vue/pull/3539 is in\\n.app-navigation::v-deep .app-navigation-entry-icon {\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-position: center;\\n}\\n\\n.app-navigation > ul.app-navigation__list {\\n\\t// Use flex gap value for more elegant spacing\\n\\tpadding-bottom: var(--default-grid-baseline, 4px);\\n}\\n\\n.app-navigation-entry__settings {\\n\\theight: auto !important;\\n\\toverflow: hidden !important;\\n\\tpadding-top: 0 !important;\\n\\t// Prevent shrinking or growing\\n\\tflex: 0 0 auto;\\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, \".setting-link[data-v-2e129f40]:hover{text-decoration:underline}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Settings.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,yBAAA\",\"sourcesContent\":[\"\\n.setting-link:hover {\\n\\ttext-decoration: underline;\\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, \".templates-picker__form[data-v-715b4161]{padding:calc(var(--margin)*2);padding-bottom:0}.templates-picker__form h2[data-v-715b4161]{text-align:center;font-weight:bold;margin:var(--margin) 0 calc(var(--margin)*2)}.templates-picker__list[data-v-715b4161]{display:grid;grid-gap:calc(var(--margin)*2);grid-auto-columns:1fr;max-width:calc(var(--fullwidth)*6);grid-template-columns:repeat(auto-fit, var(--fullwidth));grid-auto-rows:1fr;justify-content:center}.templates-picker__buttons[data-v-715b4161]{display:flex;justify-content:space-between;padding:calc(var(--margin)*2) var(--margin);position:sticky;bottom:0;background-image:linear-gradient(0, var(--gradient-main-background))}.templates-picker__buttons button[data-v-715b4161],.templates-picker__buttons input[type=submit][data-v-715b4161]{height:44px}.templates-picker[data-v-715b4161] .modal-container{position:relative}.templates-picker__loading[data-v-715b4161]{position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;margin:0;background-color:var(--color-main-background-translucent)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/TemplatePicker.vue\"],\"names\":[],\"mappings\":\"AAEC,yCACC,6BAAA,CAEA,gBAAA,CAEA,4CACC,iBAAA,CACA,gBAAA,CACA,4CAAA,CAIF,yCACC,YAAA,CACA,8BAAA,CACA,qBAAA,CAEA,kCAAA,CACA,wDAAA,CAEA,kBAAA,CAEA,sBAAA,CAGD,4CACC,YAAA,CACA,6BAAA,CACA,2CAAA,CACA,eAAA,CACA,QAAA,CACA,oEAAA,CAEA,kHACC,WAAA,CAKF,oDACC,iBAAA,CAGD,4CACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,yDAAA\",\"sourcesContent\":[\"\\n.templates-picker {\\n\\t&__form {\\n\\t\\tpadding: calc(var(--margin) * 2);\\n\\t\\t// Will be handled by the buttons\\n\\t\\tpadding-bottom: 0;\\n\\n\\t\\th2 {\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin: var(--margin) 0 calc(var(--margin) * 2);\\n\\t\\t}\\n\\t}\\n\\n\\t&__list {\\n\\t\\tdisplay: grid;\\n\\t\\tgrid-gap: calc(var(--margin) * 2);\\n\\t\\tgrid-auto-columns: 1fr;\\n\\t\\t// We want maximum 5 columns. Putting 6 as we don't count the grid gap. So it will always be lower than 6\\n\\t\\tmax-width: calc(var(--fullwidth) * 6);\\n\\t\\tgrid-template-columns: repeat(auto-fit, var(--fullwidth));\\n\\t\\t// Make sure all rows are the same height\\n\\t\\tgrid-auto-rows: 1fr;\\n\\t\\t// Center the columns set\\n\\t\\tjustify-content: center;\\n\\t}\\n\\n\\t&__buttons {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: calc(var(--margin) * 2) var(--margin);\\n\\t\\tposition: sticky;\\n\\t\\tbottom: 0;\\n\\t\\tbackground-image: linear-gradient(0, var(--gradient-main-background));\\n\\n\\t\\tbutton, input[type='submit'] {\\n\\t\\t\\theight: 44px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Make sure we're relative for the loading emptycontent on top\\n\\t::v-deep .modal-container {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t&__loading {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\tmargin: 0;\\n\\t\\tbackground-color: var(--color-main-background-translucent);\\n\\t}\\n}\\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, \"\\n/* @keyframes preview-gradient-fade {\\n 0% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0.5;\\n }\\n 100% {\\n opacity: 1;\\n }\\n} */\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry.vue\"],\"names\":[],\"mappings\":\";AAmgBA;;;;;;;;;;GAUA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.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 = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(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 = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2181;","__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\t2181: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(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(function(id) { return 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], function() { return __webpack_require__(41638); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getCurrentDirectory","currentDirInfo","OCA","Files","App","currentFileList","dirInfo","path","name","replace","getTemplates","axios","generateOcsUrl","response","data","ocs","createFromTemplate","filePath","templatePath","templateType","inheritAttrs","props","basename","type","required","checked","default","fileid","filename","previewUrl","hasPreview","mime","ratio","failedPreview","computed","nameWithoutExt","id","realPreviewUrl","getCurrentUser","document","getElementById","value","pathSections","startsWith","split","relativePath","forEach","section","encodeURIComponent","mimeIcon","methods","onCheck","onFailure","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","attrs","domProps","on","_v","class","_s","components","NcEmptyContent","NcModal","TemplatePreview","logger","loading","opened","provider","emptyTemplate","selectedTemplate","style","open","templates","fetchedProvider","close","onSubmit","currentDirectory","fileList","extension","normalize","fileInfo","model","filesClient","fileAction","$file","dir","fileActions","fileInfoModel","console","showError","$event","preventDefault","stopPropagation","apply","arguments","t","_b","_l","template","key","_e","getLoggerBuilder","setApp","detectUser","build","Vue","n","TemplatePickerRoot","createElement","body","appendChild","loadState","templatesPath","debug","TemplatePicker","TemplatePickerView","propsData","$mount","window","addEventListener","initTemplatesPlugin","attach","menu","addMenuEntry","displayName","templateName","iconClass","fileType","actionHandler","initTemplatesFolder","removeMenuEntry","OC","Plugins","register","index","newTemplatePlugin","app","label","FilesPlugin","copySystemTemplates","changeDirectory","template_path","error","subscribe","query","setFilter","action","FileAction","validateAction","_action","iconSvgInline","enabled","exec","execBatch","order","inline","renderInline","Error","getFileActions","_nc_fileactions","nodes","view","TrashCan","length","map","node","permissions","every","permission","Permission","source","emit","Promise","all","find","search","push","registerLegacyView","icon","parent","classes","expanded","params","OCP","Navigation","legacy","sticky","includes","isValidNavigation","isUniqueNavigation","_views","e","message","_currentView","views","getContents","isSvg","columns","isValidColumn","emptyView","defaultSortKey","column","title","render","sort","summary","ChartPie","NcAppNavigationItem","NcProgressBar","loadingStorageStats","storageStats","storageStatsTitle","usedQuotaByte","used","quota","storageStatsTooltip","beforeMount","setInterval","debounceUpdateStorageStats","throttleUpdateStorageStats","updateStorageStats","event","slot","relative","Math","min","el","mounted","userConfig","show_hidden","crop_image_previews","useUserConfigStore","store","defineStore","state","actions","onUpdate","update","generateUrl","userConfigStore","_initialized","Clipboard","NcAppSettingsDialog","NcAppSettingsSection","NcCheckboxRadioSwitch","NcInputField","Setting","setup","settings","webdavUrl","webdavDocs","appPasswordUrl","webdavUrlCopied","beforeDestroy","onClose","setConfig","copyCloudId","navigator","showSuccess","setTimeout","setting","target","select","scopedSlots","_u","fn","proxy","Cog","NavigationQuota","NcAppNavigation","NcIconSvgWrapper","SettingsModal","settingsOpened","currentViewId","currentView","parentViews","filter","childViews","reduce","list","watch","showView","heading","headingEl","newAppContent","itemId","setPageHeading","textContent","onLegacyNavigationChanged","onToggleExpand","show","generateToNavigation","openSettings","onSettingsClose","child","useFilesStore","fileStore","files","roots","getters","getNode","getNodes","ids","Boolean","getRoot","service","updateNodes","acc","attributes","deleteNodes","setRoot","root","onDeletedNode","usePathsStore","pathsStore","getPath","addPath","payload","useSelectionStore","selected","lastSelection","lastSelectedIndex","set","selection","setLastIndex","reset","saveUserConfig","mode","direction","filesSortingConfig","useSortingStore","isAscSorting","getSortingMode","setSortingBy","config","toggleSortingDirection","newDirection","Home","NcBreadcrumbs","NcBreadcrumb","filesStore","dirs","sections","exact","to","getNodeFromId","getFileIdFromPath","getDirDisplayName","onClick","ariaLabel","_setupProxy","nativeOn","isCachedPreview","caches","then","cache","match","element","svg","CustomElementRender","CustomSvgIconRender","FileIcon","FolderIcon","Fragment","NcActionButton","NcActions","NcLoadingIcon","active","isSizeAvailable","selectionStore","keyboardStore","altKey","ctrlKey","metaKey","shiftKey","onEvent","backgroundFailed","backgroundImage","size","sizeOpacity","linkTo","is","href","selectedFiles","cropPreviews","url","mimeIconUrl","enabledActions","enabledInlineActions","enabledMenuActions","uniqueId","debounceIfNotCached","isCached","fetchAndApplyPreview","img","resolve","reject","onCancel","resetState","clearImg","hashCode","hash","onActionClick","success","onSelectionChange","slice","start","end","filesToSelect","isAlreadySelected","formatFileSize","ref","_loading","opacity","currentFolder","totalSize","classForColumn","selectedNodes","areSomeNodesLoading","selectionIds","results","failedIds","MenuDown","MenuUp","NcButton","inject","sortingStore","mapState","sortingMode","sortAriaLabel","toggleSortBy","FilesListHeaderButton","FilesListHeaderActions","provide","selectAllBind","indeterminate","isAllSelected","isNoneSelected","isSomeSelected","onToggleAll","RecycleScroller","FileEntry","FilesListHeader","FilesListFooter","summaryFile","count","summaryFolder","slots","getFileId","item","caption","BreadCrumbs","FilesListVirtual","NcAppContent","promise","dirContents","isEmptyDir","isRefreshing","toPreviousDir","newView","oldView","newDir","oldDir","fetchContent","folder","contents","folders","directives","rawName","expression","Settings","_settings","_name","_el","_open","_close","Router","base","linkActiveClass","routes","alias","stringifyQuery","result","stringify","PiniaVuePlugin","pinia","createPinia","NavigationService","Object","assign","legacyViews","SettingsService","SettingsModel","NavigationView","router","FilesListView","values","sublist","subview","noRewrite","serviceWorker","scope","registration","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","keys","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"files-main.js?v=9551aae37bf38f69fabf","mappings":";6BAAIA,sFC8CSC,EAAsB,WAAW,YACvCC,GAAoB,QAAH,EAAAC,WAAG,OAAO,QAAP,EAAH,EAAKC,aAAK,OAAK,QAAL,EAAV,EAAYC,WAAG,OAAiB,QAAjB,EAAf,EAAiBC,uBAAe,WAA7B,EAAH,EAAkCC,UACrD,CAAEC,KAAM,IAAKC,KAAM,IAGvB,MAAO,UAAGP,EAAeM,KAAI,YAAIN,EAAeO,MAAOC,QAAQ,SAAU,IAC1E,iZC3BO,IAAMC,EAAY,4CAAG,mHACJC,EAAAA,QAAAA,KAAUC,EAAAA,EAAAA,gBAAe,gCAA+B,OAAjE,OAARC,EAAW,EAAH,uBACPA,EAASC,KAAKC,IAAID,MAAI,2CAC7B,kBAHwB,mCAYZE,EAAkB,4CAAG,WAAeC,EAAUC,EAAcC,GAAY,sGAC7DR,EAAAA,QAAAA,MAAWC,EAAAA,EAAAA,gBAAe,sCAAuC,CACvFK,SAAAA,EACAC,aAAAA,EACAC,aAAAA,IACC,OAJY,OAARN,EAAW,EAAH,uBAKPA,EAASC,KAAKC,IAAID,MAAI,2CAC7B,gBAP8B,0CCiB/B,MCtD4L,EDwD5L,CACAN,KAAAA,kBACAY,cAAAA,EAEAC,MAAAA,CACAC,SAAAA,CACAC,KAAAA,OACAC,UAAAA,GAEAC,QAAAA,CACAF,KAAAA,QACAG,SAAAA,GAEAC,OAAAA,CACAJ,KAAAA,CAAAA,OAAAA,QACAC,UAAAA,GAEAI,SAAAA,CACAL,KAAAA,OACAC,UAAAA,GAEAK,WAAAA,CACAN,KAAAA,OACAG,QAAAA,MAEAI,WAAAA,CACAP,KAAAA,QACAG,SAAAA,GAEAK,KAAAA,CACAR,KAAAA,OACAC,UAAAA,GAEAQ,MAAAA,CACAT,KAAAA,OACAG,QAAAA,OAIAZ,KAAAA,WACA,OACAmB,eAAAA,EAEA,EAEAC,SAAAA,CAMAC,eAAAA,WACA,iGACA,EAEAC,GAAAA,WACA,4CACA,EAEAC,eAAAA,WAEA,yCACA,cAGA,gBACA,iBFxFSC,EAAAA,EAAAA,OE8FT,sGAFA,6DFxFQC,SAASC,eAAe,iBAAmBD,SAASC,eAAe,gBAAgBC,MEwF3F,iDExGgClC,EFwGhC,cEvGOmC,GAAgBnC,EAAKoC,WAAW,KAAOpC,EAAO,IAAH,OAAOA,IAAQqC,MAAM,KAClEC,EAAe,GACnBH,EAAaI,SAAQ,SAACC,GACL,KAAZA,IACHF,GAAgB,IAAMG,mBAAmBD,GAE3C,IACOF,GFgGR,yCExGuB,IAAStC,EACzBmC,EACFG,CFyGL,EAEAI,SAAAA,WACA,wCACA,GAGAC,QAAAA,CACAC,QAAAA,WACA,+BACA,EACAC,UAAAA,WACA,qBACA,oIGnIIC,EAAU,CAAC,EAEfA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,YAAiB,WALlD,eCFA,GAXgB,OACd,GCTW,WAAkB,IAAIM,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,KAAK,CAACE,YAAY,yBAAyB,CAACF,EAAG,QAAQ,CAACE,YAAY,QAAQC,MAAM,CAAC,GAAKL,EAAIvB,GAAG,KAAO,QAAQ,KAAO,mBAAmB6B,SAAS,CAAC,QAAUN,EAAIlC,SAASyC,GAAG,CAAC,OAASP,EAAIR,WAAWQ,EAAIQ,GAAG,KAAKN,EAAG,QAAQ,CAACE,YAAY,yBAAyBC,MAAM,CAAC,IAAML,EAAIvB,KAAK,CAACyB,EAAG,MAAM,CAACE,YAAY,2BAA2BK,MAAMT,EAAI1B,cAAgB,mCAAqC,IAAI,CAAC4B,EAAG,MAAM,CAACE,YAAY,yBAAyBC,MAAM,CAAC,IAAML,EAAItB,eAAe,IAAM,GAAG,UAAY,SAAS6B,GAAG,CAAC,MAAQP,EAAIP,eAAeO,EAAIQ,GAAG,KAAKN,EAAG,OAAO,CAACE,YAAY,0BAA0B,CAACJ,EAAIQ,GAAG,WAAWR,EAAIU,GAAGV,EAAIxB,gBAAgB,eAC3sB,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,+UEwDhC,IAIA,GACA3B,KAAAA,iBAEA8D,WAAAA,CACAC,eAAAA,IACAC,QAAAA,IACAC,gBAAAA,GAGApD,MAAAA,CACAqD,OAAAA,CACAnD,KAAAA,OACAC,UAAAA,IAIAV,KAAAA,WACA,OAEAW,SAAAA,EACAkD,SAAAA,EACAnE,KAAAA,KACAoE,QAAAA,EACAC,SAAAA,KAEA,EAEA3C,SAAAA,CAMAC,eAAAA,WACA,iCACA,2CACA,SACA,EAEA2C,cAAAA,WAAA,QACA,OACAxD,SAAAA,EAAAA,QAAAA,SACAK,QAAAA,EACAC,SAAAA,KAAAA,EAAAA,QAAAA,SACAE,YAAAA,EACAC,MAAAA,QAAAA,EAAAA,KAAAA,gBAAAA,IAAAA,OAAAA,EAAAA,EAAAA,UAAAA,MAAAA,QAAAA,EAAAA,KAAAA,gBAAAA,IAAAA,OAAAA,EAAAA,EAAAA,WAEA,EAEAgD,iBAAAA,WAAA,WACA,+EACA,EAOAC,MAAAA,WACA,OACA,iBACA,kBACA,iBACA,sBACA,0CAlEA,IAkEA,+BAEA,GAGA9B,QAAAA,CAOA+B,KAAAA,SAAAA,EAAAA,GAAA,kJAIA,OAFA,iCACA,SACA,sBAEAvE,IAAA,OACA,GADAwE,EAAAA,EAAAA,KAEAC,QADAA,EAAAA,EAAAA,MAAAA,SAAAA,GAAA,4CACAA,CAAA,qBACA,wDAIA,GAFA,aAGAA,IAAAA,EAAAA,UAAAA,OAAAA,CAAA,gBACA,+CAKA,uDApBA,EAqBA,EAKAC,MAAAA,WACA,uCACA,gBACA,eACA,eACA,kBACA,EAOAjC,QAAAA,SAAAA,GACA,cACA,EAEAkC,SAAAA,WAAA,wKASA,OARA,aACAC,EAAAA,IACAC,EAAAA,QAAAA,EAAAA,WAAAA,IAAAA,GAAAA,QAAAA,EAAAA,EAAAA,aAAAA,IAAAA,GAAAA,QAAAA,EAAAA,EAAAA,WAAAA,IAAAA,OAAAA,EAAAA,EAAAA,gBAGA,4BACA,yCAAA/E,KAAAA,EAAAA,KAAAgF,UAAAA,QAAAA,EAAAA,EAAAA,gBAAAA,IAAAA,OAAAA,EAAAA,EAAAA,YACA,sEACA,kBAGAxE,GACAyE,EAAAA,EAAAA,WAAAA,GAAAA,OAAAA,EAAAA,KAAAA,OAAAA,EAAAA,OACA,QADAA,EACA,kDACA,QADA,EACA,uDACA,OAGA,OAPAC,EAAAA,EAAAA,KAKA,qCAEA,UACAH,aAAAA,EAAAA,EAAAA,oBAAAA,EAAAA,MAAAA,MAAAA,SAAAA,EAAAA,GAAA,oBAAAzE,EAAAA,EAAAA,KACA6E,EAAAA,IAAAA,IAAAA,MAAAA,cAAAA,EAAAA,CACAC,YAAAA,aAAAA,EAAAA,EAAAA,eAIAC,EAAAA,IAAAA,MAAAA,YAAAA,qBAAAA,EAAAA,KAAAA,OAAAA,GAAAA,kBAEAA,EAAAA,OAAAA,EAAAA,SAAAA,CACAC,MAAAA,aAAAA,EAAAA,EAAAA,WAAAA,EAAAA,MACAC,IAAAA,EACAR,SAAAA,EACAS,YAAAA,aAAAA,EAAAA,EAAAA,YACAC,cAAAA,IAIA,4DAEA,kEACAC,EAAAA,MAAAA,EAAAA,KACAC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,QAAAA,4CAAA,QAEA,OAFA,UAEA,yFA3CA,EA6CA,ICnP2L,cCWvL,EAAU,CAAC,EAEf,EAAQ7C,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,YAAiB,WALlD,ICbI,GAAY,OACd,GCTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAQF,EAAIiB,OAAQf,EAAG,UAAU,CAACE,YAAY,mBAAmBC,MAAM,CAAC,oBAAoB,EAAE,KAAO,UAAUE,GAAG,CAAC,MAAQP,EAAIyB,QAAQ,CAACvB,EAAG,OAAO,CAACE,YAAY,yBAAyBiB,MAAOrB,EAAIqB,MAAOd,GAAG,CAAC,OAAS,SAASkC,GAAyD,OAAjDA,EAAOC,iBAAiBD,EAAOE,kBAAyB3C,EAAI0B,SAASkB,MAAM,KAAMC,UAAU,IAAI,CAAC3C,EAAG,KAAK,CAACF,EAAIQ,GAAGR,EAAIU,GAAGV,EAAI8C,EAAE,QAAS,6BAA8B,CAAEjG,KAAMmD,EAAIxB,qBAAsBwB,EAAIQ,GAAG,KAAKN,EAAG,KAAK,CAACE,YAAY,0BAA0B,CAACF,EAAG,kBAAkBF,EAAI+C,GAAG,CAAC1C,MAAM,CAAC,QAAUL,EAAIlC,UAAYkC,EAAImB,cAAcnD,QAAQuC,GAAG,CAAC,MAAQP,EAAIR,UAAU,kBAAkBQ,EAAImB,eAAc,IAAQnB,EAAIQ,GAAG,KAAKR,EAAIgD,GAAIhD,EAAIkB,SAASK,WAAW,SAAS0B,GAAU,OAAO/C,EAAG,kBAAkBF,EAAI+C,GAAG,CAACG,IAAID,EAASjF,OAAOqC,MAAM,CAAC,QAAUL,EAAIlC,UAAYmF,EAASjF,OAAO,MAAQgC,EAAIkB,SAAS7C,OAAOkC,GAAG,CAAC,MAAQP,EAAIR,UAAU,kBAAkByD,GAAS,GAAO,KAAI,GAAGjD,EAAIQ,GAAG,KAAKN,EAAG,MAAM,CAACE,YAAY,6BAA6B,CAACF,EAAG,SAAS,CAACK,GAAG,CAAC,MAAQP,EAAIyB,QAAQ,CAACzB,EAAIQ,GAAG,aAAaR,EAAIU,GAAGV,EAAI8C,EAAE,QAAS,WAAW,cAAc9C,EAAIQ,GAAG,KAAKN,EAAG,QAAQ,CAACE,YAAY,UAAUC,MAAM,CAAC,KAAO,SAAS,aAAaL,EAAI8C,EAAE,QAAS,iDAAiDxC,SAAS,CAAC,MAAQN,EAAI8C,EAAE,QAAS,iBAAiB9C,EAAIQ,GAAG,KAAMR,EAAIgB,QAASd,EAAG,iBAAiB,CAACE,YAAY,4BAA4BC,MAAM,CAAC,KAAO,iBAAiB,CAACL,EAAIQ,GAAG,SAASR,EAAIU,GAAGV,EAAI8C,EAAE,QAAS,kBAAkB,UAAU9C,EAAImD,MAAM,GAAGnD,EAAImD,IAClgD,GACsB,IDUpB,EACA,KACA,WACA,MAIF,EAAe,EAAiB,iIEgBhC,IAAMpC,GAASqC,EAAAA,EAAAA,MACbC,OAAO,SACPC,aACAC,QAGFC,EAAAA,QAAAA,MAAU,CACTjE,QAAS,CACRuD,EAAAA,EAAAA,GACAW,EAAAA,EAAAA,MAKF,IAAMC,EAAqB9E,SAAS+E,cAAc,OAClDD,EAAmBjF,GAAK,kBACxBG,SAASgF,KAAKC,YAAYH,GAG1B,IAAInC,GAAYuC,EAAAA,EAAAA,GAAU,QAAS,YAAa,IAC5CC,GAAgBD,EAAAA,EAAAA,GAAU,QAAS,kBAAkB,GACzD/C,EAAOiD,MAAM,sBAAuBzC,GACpCR,EAAOiD,MAAM,mBAAoB,CAAED,cAAAA,IAGnC,IACME,GAAiB,IADVT,EAAAA,QAAAA,OAAWU,GACD,CAAS,CAC/BrH,KAAM,iBACNsH,UAAW,CACVpD,OAAAA,KAGFkD,GAAeG,OAAO,oBAGtBC,OAAOC,iBAAiB,oBAAoB,WAC3C,IAAKP,EAAe,CACnBhD,EAAOiD,MAAM,oCACb,IAAMO,EAAsB,CAC3BC,OAAM,SAACC,GAENA,EAAKC,aAAa,CACjBjG,GAAI,gBACJkG,aAAa7B,EAAAA,EAAAA,IAAE,QAAS,2BACxB8B,cAAc9B,EAAAA,EAAAA,IAAE,QAAS,aACzB+B,UAAW,oBACXC,SAAU,OACVC,cAAa,SAAClI,GACbmI,GAAoBnI,GACpB4H,EAAKQ,gBAAgB,gBACtB,GAEF,GAEDC,GAAGC,QAAQC,SAAS,wBAAyBb,EAC9C,CACD,IAGAhD,EAAUpC,SAAQ,SAAC+B,EAAUmE,GAC5B,IAAMC,EAAoB,CACzBd,OAAM,SAACC,GACN,IAAM7C,EAAW6C,EAAK7C,SAGF,UAAhBA,EAASnD,IAAkC,iBAAhBmD,EAASnD,IAKxCgG,EAAKC,aAAa,CACjBjG,GAAI,gBAAF,OAAkByC,EAASqE,IAAG,YAAIF,GACpCV,YAAazD,EAASsE,MACtBZ,aAAc1D,EAASsE,MAAQtE,EAASW,UACxCgD,UAAW3D,EAAS2D,WAAa,YACjCC,SAAU,OACVC,cAAa,SAAClI,GACboH,GAAe3C,KAAKzE,EAAMqE,EAC3B,GAEF,GAEDgE,GAAGC,QAAQC,SAAS,wBAAyBE,EAC9C,IAOA,ICnGOG,GDmGDT,GAAmB,+CAAG,WAAenI,GAAI,wFAGyB,OAFjEU,GAAgBlB,IAAwB,IAAH,OAAOQ,IAAQC,QAAQ,KAAM,KAAI,SAE3EiE,EAAOiD,MAAM,uCAAwC,CAAEzG,aAAAA,IAAe,SAC/CP,EAAAA,QAAAA,MAAWC,EAAAA,EAAAA,gBAAe,oCAAqC,CACrFM,aAAAA,EACAmI,qBAAqB,IACpB,OAHIxI,EAAW,EAAH,KAMdX,IAAIC,MAAMC,IAAIC,gBAAgBiJ,gBAAgBpI,GAAc,GAAM,GAElEgE,EAAYrE,EAASC,KAAKC,IAAID,KAAKoE,UACnCwC,EAAgB7G,EAASC,KAAKC,IAAID,KAAKyI,cAAa,kDAEpD7E,EAAO8E,MAAM,iDACbrD,EAAAA,EAAAA,KAAUM,EAAAA,EAAAA,IAAE,QAAS,iDAAgD,wOAEtE,gBAlBwB,kDCnGlB2C,GAAc,CACnBjB,OAAM,SAAC5C,GAAU,YAChBkE,EAAAA,GAAAA,IAAU,mCAAmC,YAAe,IAAZC,EAAK,EAALA,MAC/CnE,EAASoE,UAAUD,EACpB,KACAD,EAAAA,GAAAA,IAAU,kCAAkC,WAC3C,EAAKC,MAAQ,KACbnE,EAASoE,UAAU,GACpB,GAED,GAGD3B,OAAOa,GAAGC,QAAQC,SAAS,qBAAsBK,gCChBlD,IAAerC,EAAAA,EAAAA,MACbC,OAAO,SACPC,aACAC,qsBC8CK,IA8FoC0C,GA9F9BC,GAAU,WAItB,WAAYD,0GAAwB,uIACnChG,KAAKkG,eAAeF,GACpBhG,KAAKmG,QAAUH,CAChB,SAmFC,SAnFA,oBAED,WACC,OAAOhG,KAAKmG,QAAQ3H,EACrB,GAAC,uBAED,WACC,OAAOwB,KAAKmG,QAAQzB,WACrB,GAAC,yBAED,WACC,OAAO1E,KAAKmG,QAAQC,aACrB,GAAC,mBAED,WACC,OAAOpG,KAAKmG,QAAQE,OACrB,GAAC,gBAED,WACC,OAAOrG,KAAKmG,QAAQG,IACrB,GAAC,qBAED,WACC,OAAOtG,KAAKmG,QAAQI,SACrB,GAAC,iBAED,WACC,OAAOvG,KAAKmG,QAAQK,KACrB,GAAC,mBAED,WACC,OAAOxG,KAAKmG,QAAQrI,OACrB,GAAC,kBAED,WACC,OAAOkC,KAAKmG,QAAQM,MACrB,GAAC,wBAED,WACC,OAAOzG,KAAKmG,QAAQO,YACrB,GAAC,4BAED,SAAuBV,GACtB,IAAKA,EAAOxH,IAA2B,iBAAdwH,EAAOxH,GAC/B,MAAM,IAAImI,MAAM,cAGjB,IAAKX,EAAOtB,aAA6C,mBAAvBsB,EAAOtB,YACxC,MAAM,IAAIiC,MAAM,gCAGjB,IAAKX,EAAOI,eAAiD,mBAAzBJ,EAAOI,cAC1C,MAAM,IAAIO,MAAM,kCAGjB,IAAKX,EAAOM,MAA+B,mBAAhBN,EAAOM,KACjC,MAAM,IAAIK,MAAM,yBAIjB,GAAI,YAAaX,GAAoC,mBAAnBA,EAAOK,QACxC,MAAM,IAAIM,MAAM,4BAGjB,GAAI,cAAeX,GAAsC,mBAArBA,EAAOO,UAC1C,MAAM,IAAII,MAAM,8BAGjB,GAAI,UAAWX,GAAkC,iBAAjBA,EAAOQ,MACtC,MAAM,IAAIG,MAAM,iBAGjB,GAAI,YAAaX,GAAoC,kBAAnBA,EAAOlI,QACxC,MAAM,IAAI6I,MAAM,mBAGjB,GAAI,WAAYX,GAAmC,mBAAlBA,EAAOS,OACvC,MAAM,IAAIE,MAAM,2BAGjB,GAAI,iBAAkBX,GAAyC,mBAAxBA,EAAOU,aAC7C,MAAM,IAAIC,MAAM,gCAElB,2EAAC,EA1FqB,GA6GVC,GAAiB,WAC7B,OAAOxC,OAAOyC,iBAAmB,EAClC,khDAjB2Cb,GCxIxB,IAAIC,GAAW,CACjCzH,GAAI,SACJkG,YAAW,SAACoC,EAAeC,GAC1B,MAAmB,aAAZA,EAAKvI,IACTqE,EAAAA,EAAAA,IAAE,iBAAkB,uBACpBA,EAAAA,EAAAA,IAAE,QAAS,SACf,EACAuD,cAAe,kBAAMY,EAAQ,EAE7BX,QAAO,SAACS,GACP,OAAOA,EAAMG,OAAS,GAAKH,EACzBI,KAAI,SAAAC,GAAI,OAAIA,EAAKC,WAAW,IAC5BC,OAAM,SAAAC,GAAU,OAAyC,IAApCA,EAAaC,GAAAA,GAAAA,OAAwB,GAC7D,EAEMjB,KAAI,SAACa,GAAY,yJAEfpK,EAAAA,QAAAA,OAAaoK,EAAKK,QAAO,OAKC,OAAhCC,EAAAA,GAAAA,IAAK,qBAAsBN,GAAK,mBACzB,GAAI,OAEsE,OAFtE,yBAEXrG,GAAAA,MAAa,8BAA+B,CAAE8E,MAAK,KAAE4B,OAAQL,EAAKK,OAAQL,KAAAA,IAAO,mBAC1E,GAAK,wDAXS,EAavB,EACMZ,UAAS,SAACO,EAAeC,GAAM,oKAC7BW,QAAQC,IAAIb,EAAMI,KAAI,SAAAC,GAAI,OAAI,EAAKb,KAAKa,EAAMJ,EAAK,MAAE,0CADxB,EAErC,EAEAP,MAAO,WDwG+B,IAA3BpC,OAAOyC,kBACjBzC,OAAOyC,gBAAkB,GACzB/F,GAAAA,MAAa,4BAIVsD,OAAOyC,gBAAgBe,MAAK,SAAAC,GAAM,OAAIA,EAAOrJ,KAAOwH,GAAOxH,EAAE,IAChEsC,GAAAA,MAAa,cAAD,OAAekF,GAAOxH,GAAE,uBAAuB,CAAEwH,OAAAA,KAI9D5B,OAAOyC,gBAAgBiB,KAAK9B,IExI7B,IAAM+B,GAAqB,SAAH,GAA+E,IAAjEvJ,EAAE,EAAFA,GAAI5B,EAAI,EAAJA,KAAM4J,EAAK,EAALA,MAAOwB,EAAI,EAAJA,KAAMC,EAAM,EAANA,OAAM,IAAEC,QAAAA,OAAO,IAAG,KAAE,EAAEC,EAAQ,EAARA,SAAUC,EAAM,EAANA,OAC5FC,IAAI9L,MAAM+L,WAAWnD,SAAS,CAC7B3G,GAAAA,EACA5B,KAAAA,EACA4J,MAAAA,EACA4B,OAAAA,EACAH,OAAAA,EACAE,UAAuB,IAAbA,EACVvD,UAAWoD,EAAO,QAAH,OAAWA,GAAS,YAAcxJ,EACjD+J,QAAQ,EACRC,OAAQN,EAAQO,SAAS,WAE3B,i2BC7BiC,kBA2EhC,0GAAc,0BAHiB,IAAE,uBACS,MAGzC3H,GAAAA,MAAa,iCACd,SAkCC,SAlCA,4BAED,SAASiG,GACR,IACC2B,GAAkB3B,GAClB4B,GAAmB5B,EAAM/G,KAAK4I,OAM/B,CALE,MAAOC,GAIR,MAHIA,aAAalC,OAChB7F,GAAAA,MAAa+H,EAAEC,QAAS,CAAE/B,KAAAA,IAErB8B,CACP,CAEI9B,EAAKwB,QACRzH,GAAAA,KAAY,+CAGTiG,EAAKnC,YACRmC,EAAKwB,QAAS,GAGfvI,KAAK4I,OAAOd,KAAKf,EAClB,GAAC,iBAED,WACC,OAAO/G,KAAK4I,MACb,GAAC,uBAED,SAAU7B,GACT/G,KAAK+I,aAAehC,CACrB,GAAC,kBAED,WACC,OAAO/G,KAAK+I,YACb,2EAAC,EA/G+B,GAuH3BJ,GAAqB,SAAS5B,EAAkBiC,GACrD,GAAIA,EAAMpB,MAAK,SAAAC,GAAM,OAAIA,EAAOrJ,KAAOuI,EAAKvI,EAAE,IAC7C,MAAM,IAAImI,MAAM,iBAAD,OAAkBI,EAAKvI,GAAE,2BAEzC,OAAO,CACR,EAMMkK,GAAoB,SAAS3B,GAClC,IAAKA,EAAKvI,IAAyB,iBAAZuI,EAAKvI,GAC3B,MAAM,IAAImI,MAAM,kDAGjB,IAAKI,EAAKnK,MAA6B,iBAAdmK,EAAKnK,KAC7B,MAAM,IAAI+J,MAAM,oDAOjB,IAAKI,EAAKwB,OAAQ,CACjB,IAAKxB,EAAKkC,aAA2C,mBAArBlC,EAAKkC,YACpC,MAAM,IAAItC,MAAM,6DAGjB,IAAKI,EAAKiB,MAA6B,iBAAdjB,EAAKiB,OAAsBkB,KAAMnC,EAAKiB,MAC9D,MAAM,IAAIrB,MAAM,6DAElB,CAEA,KAAM,UAAWI,IAA+B,iBAAfA,EAAKP,MACrC,MAAM,IAAIG,MAAM,qDAQjB,GAJII,EAAKoC,SACRpC,EAAKoC,QAAQjK,QAAQkK,IAGlBrC,EAAKsC,WAAuC,mBAAnBtC,EAAKsC,UACjC,MAAM,IAAI1C,MAAM,2CAGjB,GAAII,EAAKkB,QAAiC,iBAAhBlB,EAAKkB,OAC9B,MAAM,IAAItB,MAAM,sCAGjB,GAAI,WAAYI,GAA+B,kBAAhBA,EAAKyB,OACnC,MAAM,IAAI7B,MAAM,uCAGjB,GAAI,aAAcI,GAAiC,kBAAlBA,EAAKoB,SACrC,MAAM,IAAIxB,MAAM,yCAGjB,GAAII,EAAKuC,gBAAiD,iBAAxBvC,EAAKuC,eACtC,MAAM,IAAI3C,MAAM,8CAGjB,OAAO,CACR,EAMMyC,GAAgB,SAASG,GAC9B,IAAKA,EAAO/K,IAA2B,iBAAd+K,EAAO/K,GAC/B,MAAM,IAAImI,MAAM,2BAGjB,IAAK4C,EAAOC,OAAiC,iBAAjBD,EAAOC,MAClC,MAAM,IAAI7C,MAAM,8BAGjB,IAAK4C,EAAOE,QAAmC,mBAAlBF,EAAOE,OACnC,MAAM,IAAI9C,MAAM,iCAIjB,GAAI4C,EAAOG,MAA+B,mBAAhBH,EAAOG,KAChC,MAAM,IAAI/C,MAAM,0CAGjB,GAAI4C,EAAOI,SAAqC,mBAAnBJ,EAAOI,QACnC,MAAM,IAAIhD,MAAM,qCAGjB,OAAO,CACR,kUCrNA,ocCWA,QACA/J,KAAAA,kBAEA8D,WAAAA,CACAkJ,SAAAA,GAAAA,EACAC,oBAAAA,KACAC,cAAAA,MAGA5M,KAAAA,WACA,OACA6M,qBAAAA,EACAC,cAAAA,EAAAA,EAAAA,GAAAA,QAAAA,eAAAA,MAEA,EAEA1L,SAAAA,CACA2L,kBAAAA,WAAA,UACA,oEACA,qEAGA,kEACA,uCAAAC,cAAAA,IAGA,yCACAC,KAAAA,EACAC,MAAAA,GAEA,EACAC,oBAAAA,WACA,kCAIA,qDAHA,EAIA,GAGAC,YAAAA,WAKAC,YAAAA,KAAAA,2BAAAA,MAEA1E,EAAAA,GAAAA,IAAAA,qBAAAA,KAAAA,6BACAA,EAAAA,GAAAA,IAAAA,qBAAAA,KAAAA,6BACAA,EAAAA,GAAAA,IAAAA,mBAAAA,KAAAA,6BACAA,EAAAA,GAAAA,IAAAA,qBAAAA,KAAAA,6BAEAA,EAAAA,GAAAA,IAAAA,uBAAAA,KAAAA,6BACAA,EAAAA,GAAAA,IAAAA,uBAAAA,KAAAA,6BACAA,EAAAA,GAAAA,IAAAA,qBAAAA,KAAAA,6BACAA,EAAAA,GAAAA,IAAAA,uBAAAA,KAAAA,2BACA,EAEAvG,QAAAA,CAEAkL,4BAAAA,EAAAA,GAAAA,GAAAA,KAAAA,SAAAA,GACA,0BACA,IAEAC,4BAAAA,EAAAA,GAAAA,GAAAA,KAAAA,SAAAA,GACA,0BACA,IAQAC,mBAAAA,WAAA,oKAAAC,EAAAA,EAAAA,OAAAA,QAAAA,IAAAA,EAAAA,GAAAA,EAAAA,GAAAA,MACA,uEAIA,kDAEA5N,EAAAA,QAAAA,KAAAA,EAAAA,EAAAA,aAAAA,6BAAA,UACAE,OADAA,EAAAA,EAAAA,OACAA,QAAAA,EAAAA,EAAAA,YAAAA,IAAAA,GAAAA,EAAAA,KAAAA,CAAA,sBACA,2CAEA,6EAEA6D,GAAAA,MAAAA,kCAAAA,CAAA8E,MAAAA,EAAAA,KAEA,IACArD,EAAAA,EAAAA,IAAAA,EAAAA,QAAAA,oCACA,QAEA,OAFA,UAEA,qGAnBA,EAqBA,EAEAM,EAAAA,EAAAA,KCpI4L,gBCWxL,GAAU,CAAC,EAEf,GAAQnD,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAQF,EAAIiK,aAAc/J,EAAG,sBAAsB,CAACE,YAAY,uCAAuCK,MAAM,CAAE,sDAAuDT,EAAIiK,aAAaI,OAAS,GAAGhK,MAAM,CAAC,aAAaL,EAAI8C,EAAE,QAAS,wBAAwB,QAAU9C,EAAIgK,oBAAoB,KAAOhK,EAAIkK,kBAAkB,MAAQlK,EAAIsK,oBAAoB,0CAA0C,IAAI/J,GAAG,CAAC,MAAQ,SAASkC,GAAyD,OAAjDA,EAAOE,kBAAkBF,EAAOC,iBAAwB1C,EAAIyK,2BAA2B7H,MAAM,KAAMC,UAAU,IAAI,CAAC3C,EAAG,WAAW,CAACG,MAAM,CAAC,KAAO,OAAO,KAAO,IAAIwK,KAAK,SAAS7K,EAAIQ,GAAG,KAAMR,EAAIiK,aAAaI,OAAS,EAAGnK,EAAG,gBAAgB,CAACG,MAAM,CAAC,KAAO,QAAQ,MAAQL,EAAIiK,aAAaa,SAAW,GAAG,MAAQC,KAAKC,IAAIhL,EAAIiK,aAAaa,SAAU,MAAMD,KAAK,UAAU7K,EAAImD,MAAM,GAAGnD,EAAImD,IACh2B,GACsB,IDUpB,EACA,KACA,WACA,MAIF,GAAe,GAAiB,gHEnBoJ,GC0BpL,CACAtG,KAAAA,UACAa,MAAAA,CACAuN,GAAAA,CACArN,KAAAA,SACAC,UAAAA,IAGAqN,QAAAA,WACA,+BACA,GClBA,IAXgB,OACd,ICRW,WAA+C,OAAOhL,EAA5BD,KAAYE,MAAMD,IAAa,MACtE,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,kIEYhC,IAAMiL,IAAarH,EAAAA,EAAAA,GAAU,QAAS,SAAU,CAC/CsH,aAAa,EACbC,qBAAqB,IAGTC,GAAqB,WACjC,IAAMC,GAAQC,EAAAA,GAAAA,IAAY,aAAc,CACvCC,MAAO,iBAAO,CACbN,WAAAA,GACA,EAEDO,QAAS,CAIRC,SAAQ,SAACzI,EAAapE,GACrB0E,EAAAA,QAAAA,IAAQvD,KAAKkL,WAAYjI,EAAKpE,EAC/B,EAKM8M,OAAM,SAAC1I,EAAapE,GAAgB,+IACnC9B,EAAAA,QAAAA,MAAW6O,EAAAA,EAAAA,aAAY,6BAA+B3I,GAAM,CACjEpE,MAAAA,IACC,QAEF4I,EAAAA,GAAAA,IAAK,uBAAwB,CAAExE,IAAAA,EAAKpE,MAAAA,IAAQ,kOAC7C,KAIIgN,EAAkBP,IAUxB,OAPKO,EAAgBC,gBACpBjG,EAAAA,GAAAA,IAAU,wBAAwB,YAA0D,IAA/C5C,EAAG,EAAHA,IAAKpE,EAAK,EAALA,MACjDgN,EAAgBH,SAASzI,EAAKpE,EAC/B,IACAgN,EAAgBC,cAAe,GAGzBD,CACR,4HCqBA,QACAjP,KAAAA,WACA8D,WAAAA,CACAqL,UAAAA,GAAAA,EACAC,oBAAAA,KACAC,qBAAAA,KACAC,sBAAAA,KACAC,aAAAA,KACAC,QAAAA,IAGA3O,MAAAA,CACA4D,KAAAA,CACA1D,KAAAA,QACAG,SAAAA,IAIAuO,MAAAA,WAEA,OACAR,gBAFA,KAIA,EAEA3O,KAAAA,WAAA,YACA,OAEAoP,UAAAA,QAAAA,EAAAA,OAAAA,WAAAA,IAAAA,GAAAA,QAAAA,EAAAA,EAAAA,aAAAA,IAAAA,GAAAA,QAAAA,EAAAA,EAAAA,gBAAAA,IAAAA,OAAAA,EAAAA,EAAAA,WAAAA,GAGAC,WAAAA,EAAAA,EAAAA,mBAAAA,aAAAA,mBAAAA,QAAAA,GAAAA,EAAAA,EAAAA,aAAAA,IAAAA,OAAAA,EAAAA,EAAAA,MACAC,WAAAA,iEACAC,gBAAAA,EAAAA,EAAAA,aAAAA,sDACAC,iBAAAA,EAEA,EAEApO,SAAAA,CACA4M,WAAAA,WACA,sCACA,GAGAZ,YAAAA,WAEA,qDACA,EAEAqC,cAAAA,WAEA,sDACA,EAEArN,QAAAA,CACAsN,QAAAA,WACA,mBACA,EAEAC,UAAAA,SAAAA,EAAAA,GACA,gCACA,EAEAC,YAAAA,WAAA,4IACA,GAAAnO,SAAAA,cAAAA,0BAAAA,SAEAoO,UAAAA,UAAAA,CAAA,eAEA,OAAAxK,EAAAA,EAAAA,IAAAA,EAAAA,QAAAA,+BAAA,0CAIAwK,UAAAA,UAAAA,UAAAA,EAAAA,WAAA,OACA,sBACAC,EAAAA,EAAAA,IAAAA,EAAAA,QAAAA,mCACAC,YAAAA,WACA,oBACA,oOACA,EAEApK,EAAAA,EAAAA,KC9KqL,kBCWjL,GAAU,CAAC,EAEf,GAAQnD,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,sBAAsB,CAACG,MAAM,CAAC,KAAOL,EAAIsB,KAAK,mBAAkB,EAAK,MAAQtB,EAAI8C,EAAE,QAAS,mBAAmBvC,GAAG,CAAC,cAAcP,EAAI6M,UAAU,CAAC3M,EAAG,uBAAuB,CAACG,MAAM,CAAC,GAAK,WAAW,MAAQL,EAAI8C,EAAE,QAAS,oBAAoB,CAAC5C,EAAG,wBAAwB,CAACG,MAAM,CAAC,QAAUL,EAAImL,WAAWC,aAAa7K,GAAG,CAAC,iBAAiB,SAASkC,GAAQ,OAAOzC,EAAI8M,UAAU,cAAerK,EAAO,IAAI,CAACzC,EAAIQ,GAAG,WAAWR,EAAIU,GAAGV,EAAI8C,EAAE,QAAS,sBAAsB,YAAY9C,EAAIQ,GAAG,KAAKN,EAAG,wBAAwB,CAACG,MAAM,CAAC,QAAUL,EAAImL,WAAWE,qBAAqB9K,GAAG,CAAC,iBAAiB,SAASkC,GAAQ,OAAOzC,EAAI8M,UAAU,sBAAuBrK,EAAO,IAAI,CAACzC,EAAIQ,GAAG,WAAWR,EAAIU,GAAGV,EAAI8C,EAAE,QAAS,wBAAwB,aAAa,GAAG9C,EAAIQ,GAAG,KAA8B,IAAxBR,EAAIuM,SAASrF,OAAchH,EAAG,uBAAuB,CAACG,MAAM,CAAC,GAAK,gBAAgB,MAAQL,EAAI8C,EAAE,QAAS,yBAAyB,CAAC9C,EAAIgD,GAAIhD,EAAIuM,UAAU,SAASY,GAAS,MAAO,CAACjN,EAAG,UAAU,CAACgD,IAAIiK,EAAQtQ,KAAKwD,MAAM,CAAC,GAAK8M,EAAQlC,MAAM,KAAI,GAAGjL,EAAImD,KAAKnD,EAAIQ,GAAG,KAAKN,EAAG,uBAAuB,CAACG,MAAM,CAAC,GAAK,SAAS,MAAQL,EAAI8C,EAAE,QAAS,YAAY,CAAC5C,EAAG,eAAe,CAACG,MAAM,CAAC,GAAK,mBAAmB,wBAAuB,EAAK,QAAUL,EAAI2M,gBAAgB,wBAAwB3M,EAAI8C,EAAE,QAAS,qBAAqB,MAAQ9C,EAAIwM,UAAU,SAAW,WAAW,KAAO,OAAOjM,GAAG,CAAC,MAAQ,SAASkC,GAAQ,OAAOA,EAAO2K,OAAOC,QAAQ,EAAE,wBAAwBrN,EAAI+M,aAAaO,YAAYtN,EAAIuN,GAAG,CAAC,CAACrK,IAAI,uBAAuBsK,GAAG,WAAW,MAAO,CAACtN,EAAG,YAAY,CAACG,MAAM,CAAC,KAAO,MAAM,EAAEoN,OAAM,OAAUzN,EAAIQ,GAAG,KAAKN,EAAG,KAAK,CAACA,EAAG,IAAI,CAACE,YAAY,eAAeC,MAAM,CAAC,KAAOL,EAAIyM,WAAW,OAAS,SAAS,IAAM,wBAAwB,CAACzM,EAAIQ,GAAG,aAAaR,EAAIU,GAAGV,EAAI8C,EAAE,QAAS,qDAAqD,kBAAkB9C,EAAIQ,GAAG,KAAKN,EAAG,MAAMF,EAAIQ,GAAG,KAAKN,EAAG,KAAK,CAACA,EAAG,IAAI,CAACE,YAAY,eAAeC,MAAM,CAAC,KAAOL,EAAI0M,iBAAiB,CAAC1M,EAAIQ,GAAG,aAAaR,EAAIU,GAAGV,EAAI8C,EAAE,QAAS,0FAA0F,mBAAmB,IAAI,EACvlE,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,m0CEwEhC,QACAjG,KAAAA,aAEA8D,WAAAA,CACA+M,IAAAA,GAAAA,QACAC,gBAAAA,GACAC,gBAAAA,KACA9D,oBAAAA,KACA+D,iBAAAA,KACAC,cAAAA,IAGApQ,MAAAA,CAEA6K,WAAAA,CACA3K,KAAAA,GACAC,UAAAA,IAIAV,KAAAA,WACA,OACA4Q,gBAAAA,EAEA,EAEAxP,SAAAA,CACAyP,cAAAA,WAAA,QACA,kGACA,EAGAC,YAAAA,WAAA,WACA,oEACA,EAGAhF,MAAAA,WACA,4BACA,EAGAiF,YAAAA,WACA,kBAEAC,QAAAA,SAAAA,GAAA,mBAEAxE,MAAAA,SAAAA,EAAAA,GACA,sBACA,GACA,EAGAyE,WAAAA,WACA,kBAEAD,QAAAA,SAAAA,GAAA,oBAEAE,QAAAA,SAAAA,EAAAA,GAMA,OALAC,EAAAA,EAAAA,QAAAA,GAAAA,uDAAAA,EAAAA,EAAAA,SAAAA,ukBAAAA,CAAAA,IAEAA,EAAAA,EAAAA,QAAAA,MAAAA,SAAAA,EAAAA,GACA,sBACA,IACA,OACA,MACA,GAGAC,MAAAA,CACAN,YAAAA,SAAAA,EAAAA,IAIA,+CAIA,6BACAlN,GAAAA,MAAAA,qBAAAA,CAAAtC,GAAAA,EAAAA,GAAAuI,KAAAA,IAGA,mBACA,GAGAuD,YAAAA,WAAA,WACA,mBACAxJ,GAAAA,MAAAA,6CAAAA,CAAAiG,KAAAA,KAAAA,cACA,kCAGAlB,EAAAA,GAAAA,IAAAA,kCAAAA,KAAAA,4BAGAA,EAAAA,GAAAA,IAAAA,iCAAAA,WACA/E,GAAAA,MAAAA,0BAAAA,GAAAA,CAAAA,EAAAA,EAAAA,cACA,yBACA,GACA,EAEAxB,QAAAA,CAKAiP,SAAAA,SAAAA,EAAAA,GAAA,cCvK+BC,EACxBC,ED0KP,GAFA,yKAEA,mBACA,gGACA9P,SAAAA,iBAAAA,+BAAAA,SAAAA,SAAAA,GACAqM,EAAAA,UAAAA,IAAAA,SACA,IACA0D,EAAAA,UAAAA,OAAAA,UAGA,0CAAAvM,OAAAA,IAAAA,EAAAA,IAAAA,EACA,GAAAwM,OAAAA,EAAAA,GAAAxM,IAAAA,GAEArB,GAAAA,MAAAA,qCAAAA,GACAsD,OAAAA,OAAAA,GAAAA,QAAAA,IAAAA,OAAAA,OAAAA,MAAAA,OAAAA,IACAA,OAAAA,OAAAA,GAAAA,QAAAA,IAAAA,OAAAA,OAAAA,MAAAA,aAAAA,GACA,CAEA,6BC3L+BoK,ED4L/BI,EAAAA,MC3LOH,EAAY9P,SAASC,eAAe,2BAEzC6P,EAAUI,YAAcL,ID0L1B/G,EAAAA,GAAAA,IAAAA,2BAAAA,EACA,EAQAqH,0BAAAA,WAAA,8DAAAtQ,GAAAA,SAAAA,EAAAA,EAAAA,GACA,6DACA,0CAGA,+CAAA4J,OAAAA,CAAArB,KAAAA,EAAAA,OACA,6BACA,iBAEA,EAQAgI,eAAAA,SAAAA,GAEAhI,EAAAA,UAAAA,EAAAA,SACAhK,EAAAA,QAAAA,MAAAA,EAAAA,EAAAA,aAAAA,uCAAAA,OAAAA,EAAAA,KAAAA,CAAAiS,KAAAA,EAAAA,UACA,EAOAC,qBAAAA,SAAAA,GACA,aACA,eAAA9M,EAAAA,EAAAA,IAAApE,EAAAA,EAAAA,OACA,OAAAnB,KAAAA,WAAAwL,OAAAA,EAAAA,OAAAtC,MAAAA,CAAA3D,IAAAA,EAAApE,OAAAA,GACA,CACA,OAAAnB,KAAAA,WAAAwL,OAAAA,CAAArB,KAAAA,EAAAA,IACA,EAKAmI,aAAAA,WACA,sBACA,EAKAC,gBAAAA,WACA,sBACA,EAEAtM,EAAAA,EAAAA,KEtRuL,kBCWnL,GAAU,CAAC,EAEf,GAAQnD,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,kBAAkB,CAACG,MAAM,CAAC,2BAA2B,IAAIiN,YAAYtN,EAAIuN,GAAG,CAAC,CAACrK,IAAI,OAAOsK,GAAG,WAAW,OAAOxN,EAAIgD,GAAIhD,EAAIkO,aAAa,SAASlH,GAAM,OAAO9G,EAAG,sBAAsB,CAACgD,IAAI8D,EAAKvI,GAAG4B,MAAM,CAAC,kBAAiB,EAAK,gCAAgC2G,EAAKvI,GAAG,KAAOuI,EAAKnC,UAAU,KAAOmC,EAAKoB,SAAS,OAASpB,EAAKyB,OAAO,MAAQzB,EAAKnK,KAAK,GAAKmD,EAAIkP,qBAAqBlI,IAAOzG,GAAG,CAAC,cAAc,SAASkC,GAAQ,OAAOzC,EAAIgP,eAAehI,EAAK,IAAI,CAAEA,EAAKiB,KAAM/H,EAAG,mBAAmB,CAACG,MAAM,CAAC,KAAO,OAAO,IAAM2G,EAAKiB,MAAM4C,KAAK,SAAS7K,EAAImD,KAAKnD,EAAIQ,GAAG,KAAKR,EAAIgD,GAAIhD,EAAIoO,WAAWpH,EAAKvI,KAAK,SAAS4Q,GAAO,OAAOnP,EAAG,sBAAsB,CAACgD,IAAImM,EAAM5Q,GAAG4B,MAAM,CAAC,gCAAgCgP,EAAM5Q,GAAG,OAAQ,EAAK,KAAO4Q,EAAMxK,UAAU,MAAQwK,EAAMxS,KAAK,GAAKmD,EAAIkP,qBAAqBG,KAAS,CAAErI,EAAKiB,KAAM/H,EAAG,mBAAmB,CAACG,MAAM,CAAC,KAAO,OAAO,IAAM2G,EAAKiB,MAAM4C,KAAK,SAAS7K,EAAImD,MAAM,EAAE,KAAI,EAAE,GAAE,EAAEsK,OAAM,GAAM,CAACvK,IAAI,SAASsK,GAAG,WAAW,MAAO,CAACtN,EAAG,KAAK,CAACE,YAAY,kCAAkC,CAACF,EAAG,mBAAmBF,EAAIQ,GAAG,KAAKN,EAAG,sBAAsB,CAACG,MAAM,CAAC,aAAaL,EAAI8C,EAAE,QAAS,+BAA+B,MAAQ9C,EAAI8C,EAAE,QAAS,kBAAkB,2CAA2C,IAAIvC,GAAG,CAAC,MAAQ,SAASkC,GAAyD,OAAjDA,EAAOC,iBAAiBD,EAAOE,kBAAyB3C,EAAImP,aAAavM,MAAM,KAAMC,UAAU,IAAI,CAAC3C,EAAG,MAAM,CAACG,MAAM,CAAC,KAAO,OAAO,KAAO,IAAIwK,KAAK,UAAU,IAAI,GAAG,EAAE4C,OAAM,MAAS,CAACzN,EAAIQ,GAAG,KAAKR,EAAIQ,GAAG,KAAKN,EAAG,gBAAgB,CAACG,MAAM,CAAC,KAAOL,EAAI+N,eAAe,oCAAoC,IAAIxN,GAAG,CAAC,MAAQP,EAAIoP,oBAAoB,EAC7nD,GACsB,IDUpB,EACA,KACA,WACA,MAIF,GAAe,GAAiB,qzCEYzB,IAAME,GAAgB,WAC5B,IA0DMC,GA1DQ/D,EAAAA,GAAAA,IAAY,QAAS,CAClCC,MAAO,iBAAmB,CACzB+D,MAAO,CAAC,EACRC,MAAO,CAAC,EACR,EAEDC,QAAS,CAIRC,QAAS,SAAClE,GAAK,OAAM,SAAChN,GAAU,OAAqBgN,EAAM+D,MAAM/Q,EAAG,GAMpEmR,SAAU,SAACnE,GAAK,OAAK,SAACoE,GAAa,OAAaA,EAC9C1I,KAAI,SAAA1I,GAAE,OAAIgN,EAAM+D,MAAM/Q,EAAG,IACzB0P,OAAO2B,QAAQ,GAIjBC,QAAS,SAACtE,GAAK,OAAM,SAACuE,GAAgB,OAAuBvE,EAAMgE,MAAMO,EAAQ,IAGlFtE,QAAS,CACRuE,YAAW,SAAClJ,GAEX,IAAMyI,EAAQzI,EAAMsH,QAAO,SAAC6B,EAAK9I,GAChC,OAAKA,EAAK+I,WAAWnS,QAIrBkS,EAAI9I,EAAK+I,WAAWnS,QAAUoJ,EACvB8I,IAJNnP,GAAAA,KAAY,6CAA8CqG,GACnD8I,EAIT,GAAG,CAAC,GAEJ1M,EAAAA,QAAAA,IAAQvD,KAAM,QAAS,SAAIA,KAAKuP,OAAUA,GAC3C,EAEAY,YAAW,SAACrJ,GAAe,WAC1BA,EAAM5H,SAAQ,SAAAiI,GACTA,EAAKpJ,QACRwF,EAAAA,QAAAA,OAAW,EAAKgM,MAAOpI,EAAKpJ,OAE9B,GACD,EAEAqS,QAAO,YAAiC,IAA9BL,EAAO,EAAPA,QAASM,EAAI,EAAJA,KAClB9M,EAAAA,QAAAA,IAAQvD,KAAKwP,MAAOO,EAASM,EAC9B,EAEAC,cAAa,SAACnJ,GACbnH,KAAKmQ,YAAY,CAAChJ,GACnB,IAIgBmE,GAgBlB,OAdKgE,EAAUxD,gBAEdjG,EAAAA,GAAAA,IAAU,qBAAsByJ,EAAUgB,gBAK1CzK,EAAAA,GAAAA,IAAU,uBAAwByJ,EAAUgB,eAI5ChB,EAAUxD,cAAe,GAGnBwD,CACR,EC9EaiB,GAAgB,WAC5B,IA2BMC,GA3BQjF,EAAAA,GAAAA,IAAY,QAAS,CAClCC,MAAO,iBAAsB,CAAC,CAAC,EAE/BiE,QAAS,CACRgB,QAAS,SAACjF,GACT,OAAO,SAACuE,EAAiBpT,GACxB,GAAK6O,EAAMuE,GAGX,OAAOvE,EAAMuE,GAASpT,EACvB,CACD,GAGD8O,QAAS,CACRiF,QAAO,SAACC,GAEF3Q,KAAK2Q,EAAQZ,UACjBxM,EAAAA,QAAAA,IAAQvD,KAAM2Q,EAAQZ,QAAS,CAAC,GAIjCxM,EAAAA,QAAAA,IAAQvD,KAAK2Q,EAAQZ,SAAUY,EAAQhU,KAAMgU,EAAQ5S,OACtD,IAIiBuN,GAWnB,OATKkF,EAAW1E,eAMf0E,EAAW1E,cAAe,GAGpB0E,CACR,EC3CaI,IAAoBrF,EAAAA,GAAAA,IAAY,YAAa,CACzDC,MAAO,iBAAO,CACbqF,SAAU,GACVC,cAAe,GACfC,kBAAmB,KACnB,EAEDtF,QAAS,CAIRuF,IAAG,WAA6B,IAA5BC,EAAY,UAAH,6CAAG,GACf1N,EAAAA,QAAAA,IAAQvD,KAAM,WAAYiR,EAC3B,EAKAC,aAAY,WAA4C,IAA3CH,EAAoB,UAAH,6CAAG,KAEhCxN,EAAAA,QAAAA,IAAQvD,KAAM,gBAAiB+Q,EAAoB/Q,KAAK6Q,SAAW,IACnEtN,EAAAA,QAAAA,IAAQvD,KAAM,oBAAqB+Q,EACpC,EAKAI,MAAK,WACJ5N,EAAAA,QAAAA,IAAQvD,KAAM,WAAY,IAC1BuD,EAAAA,QAAAA,IAAQvD,KAAM,gBAAiB,IAC/BuD,EAAAA,QAAAA,IAAQvD,KAAM,oBAAqB,KACpC,KC5BIoR,GAAiB,SAACC,EAAcC,EAAsBvK,GAC3D,OAAOhK,EAAAA,QAAAA,MAAW6O,EAAAA,EAAAA,aAAY,8BAA+B,CAC5DyF,KAAAA,EACAC,UAAAA,EACAvK,KAAAA,GAEF,EAEMwK,IAAqB1N,EAAAA,EAAAA,GAAU,QAAS,qBAAsB,CAAC,GAExD2N,IAAkBjG,EAAAA,GAAAA,IAAY,UAAW,CACrDC,MAAO,iBAAO,CACb+F,mBAAAA,GACA,EAED9B,QAAS,CACRgC,aAAc,SAACjG,GAAK,OAAK,iBAACzE,EAAe,UAAH,6CAAG,QAAO,MAAmD,UAAhB,QAA9B,EAAAyE,EAAM+F,mBAAmBxK,UAAK,aAA9B,EAAgCuK,UAAoB,GACzGI,eAAgB,SAAClG,GAAK,OAAK,iBAACzE,EAAe,UAAH,6CAAG,QAAO,OAAmC,QAAnC,EAAKyE,EAAM+F,mBAAmBxK,UAAK,aAA9B,EAAgCsK,IAAI,IAG5F5F,QAAS,CAMRkG,aAAY,WAAmD,IAAlD1O,EAAc,UAAH,6CAAG,WAAY8D,EAAe,UAAH,6CAAG,QAC/C6K,EAAS5R,KAAKuR,mBAAmBxK,IAAS,CAAC,EACjD6K,EAAOP,KAAOpO,EACd2O,EAAON,UAAY,MAGnB/N,EAAAA,QAAAA,IAAQvD,KAAKuR,mBAAoBxK,EAAM6K,GACvCR,GAAeQ,EAAOP,KAAMO,EAAON,UAAWvK,EAC/C,EAKA8K,uBAAsB,WAAyB,IAAxB9K,EAAe,UAAH,6CAAG,QAC/B6K,EAAS5R,KAAKuR,mBAAmBxK,IAAS,CAAE,UAAa,OACzD+K,EAAoC,QAArBF,EAAON,UAAsB,OAAS,MAC3DM,EAAON,UAAYQ,EAGnBvO,EAAAA,QAAAA,IAAQvD,KAAKuR,mBAAoBxK,EAAM6K,GACvCR,GAAeQ,EAAOP,KAAMO,EAAON,UAAWvK,EAC/C,03CClDF,IC1BwL,GD0BzK,iBAAW,CAC1BnK,KAAAA,cAEA8D,WAAAA,CACAqR,KAAAA,GAAAA,EACAC,cAAAA,KACAC,aAAAA,MAGAxU,MAAAA,CACAd,KAAAA,CACAgB,KAAAA,OACAG,QAAAA,MAIAuO,MAAAA,WAGA,OACA6F,WAHA,KAIA1B,WAHA,KAKA,EAEAlS,SAAAA,CACA0P,YAAAA,WACA,8BACA,EAEAmE,KAAAA,WACA,QAEA,4CAFA,EAEA,IAFA,0CAIA,+rBACA,EAEAC,SAAAA,WAAA,WACA,kCACA,6BAAAtM,MAAAA,CAAA3D,IAAAA,KACA,OACAA,IAAAA,EACAkQ,OAAAA,EACAzV,KAAAA,EAAAA,kBAAAA,GACA0V,GAAAA,EAEA,GACA,GAGAhT,QAAAA,CACAiT,cAAAA,SAAAA,GACA,iCACA,EACAC,kBAAAA,SAAAA,GAAA,MACA,qFACA,EACAC,kBAAAA,SAAAA,GAAA,MACA,WACA,yBAGA,gCACA,wBACA,4FACA,EAEAC,QAAAA,SAAAA,GAAA,OACA,+EACA,oBAEA,EAEAC,UAAAA,SAAAA,GAAA,QACA,kHACA,sCAEA,0CACA,iBE9FI,GAAU,CAAC,EAEf,GAAQjT,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAM0S,YAAmB3S,EAAG,gBAAgB,CAACG,MAAM,CAAC,oCAAoC,KAAKL,EAAIgD,GAAIhD,EAAIqS,UAAU,SAASjT,EAAQiG,GAAO,OAAOnF,EAAG,eAAeF,EAAI+C,GAAG,CAACG,IAAI9D,EAAQgD,IAAI/B,MAAM,CAAC,aAAaL,EAAI4S,UAAUxT,GAAS,MAAQY,EAAI4S,UAAUxT,IAAU0T,SAAS,CAAC,MAAQ,SAASrQ,GAAQ,OAAOzC,EAAI2S,QAAQvT,EAAQmT,GAAG,GAAGjF,YAAYtN,EAAIuN,GAAG,CAAY,IAAVlI,EAAa,CAACnC,IAAI,OAAOsK,GAAG,WAAW,MAAO,CAACtN,EAAG,OAAO,CAACG,MAAM,CAAC,KAAO,MAAM,EAAEoN,OAAM,GAAM,MAAM,MAAK,IAAO,eAAerO,GAAQ,GAAO,IAAG,EACtjB,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,wIESnB2T,GAAkB,SAAS7U,GACvC,OAAO8U,OAAO1R,KANK,YAOjB2R,MAAK,SAASC,GACd,OAAOA,EAAMC,MAAMjV,GACjB+U,MAAK,SAAS/V,GACd,QAASA,CACV,GACF,GACF,ECVakW,IAAsB5H,EAAAA,GAAAA,IAAY,cAAe,CAC7DC,MAAO,iBAAO,CACbxK,OAAQ,KACR,IC7B8L,GCgChM,CACApE,KAAAA,sBACAa,MAAAA,CACA+J,OAAAA,CACA7J,KAAAA,OACAC,UAAAA,GAEAoQ,YAAAA,CACArQ,KAAAA,OACAC,UAAAA,GAEA6L,OAAAA,CACA9L,KAAAA,SACAC,UAAAA,IAGAU,SAAAA,CACA8U,QAAAA,WACA,gDACA,GAEA9E,MAAAA,CACA8E,QAAAA,WACA,mCACA,qBACA,GAEAnI,QAAAA,WACA,mCACA,qBACA,GC5CA,IAXgB,OACd,ICRW,WAA+C,OAAOhL,EAA5BD,KAAYE,MAAMD,IAAa,OACtE,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,oBElBgK,GC6BhM,CACArD,KAAAA,sBACAa,MAAAA,CACA4V,IAAAA,CACA1V,KAAAA,OACAC,UAAAA,IAGA0Q,MAAAA,CACA+E,IAAAA,WACA,4CACA,GAEApI,QAAAA,WACA,4CACA,eCjCI,GAAU,CAAC,EAEf,GAAQvL,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAA+C,OAAOG,EAA5BD,KAAYE,MAAMD,IAAa,OAAO,CAACE,YAAY,mBAC1F,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,6wEEgHhC,YAEA,GAAe,iBAAW,CAC1BvD,KAAAA,YAEA8D,WAAAA,CACA4S,oBAAAA,GACAC,oBAAAA,GACAC,SAAAA,GAAAA,EACAC,WAAAA,GAAAA,QACAC,SAAAA,GAAAA,GACAC,eAAAA,KACAC,UAAAA,KACA1H,sBAAAA,KACA2H,cAAAA,MAGApW,MAAAA,CACAqW,OAAAA,CACAnW,KAAAA,QACAG,SAAAA,GAEAiW,gBAAAA,CACApW,KAAAA,QACAG,SAAAA,GAEA0J,OAAAA,CACA7J,KAAAA,OACAC,UAAAA,GAEAwH,MAAAA,CACAzH,KAAAA,OACAC,UAAAA,GAEAkJ,MAAAA,CACAnJ,KAAAA,MACAC,UAAAA,IAIAyO,MAAAA,WAMA,OACA2H,iBANA,KAOA9B,WANA,KAOA+B,eChIOA,GArBQ1I,EAAAA,GAAAA,IAAY,WAAY,CACrCC,MAAO,iBAAO,CACb0I,QAAQ,EACRC,SAAS,EACTC,SAAS,EACTC,UAAU,EACV,EAED5I,QAAS,CACR6I,QAAO,SAAC3J,GACFA,IACJA,EAAQvG,OAAOuG,OAEhBpH,EAAAA,QAAAA,IAAQvD,KAAM,WAAY2K,EAAMuJ,QAChC3Q,EAAAA,QAAAA,IAAQvD,KAAM,YAAa2K,EAAMwJ,SACjC5Q,EAAAA,QAAAA,IAAQvD,KAAM,YAAa2K,EAAMyJ,SACjC7Q,EAAAA,QAAAA,IAAQvD,KAAM,aAAc2K,EAAM0J,SACnC,IAIoB/I,GAEjB2I,EAAcnI,eAClB1H,OAAOC,iBAAiB,UAAW4P,EAAcK,SACjDlQ,OAAOC,iBAAiB,QAAS4P,EAAcK,SAC/ClQ,OAAOC,iBAAiB,YAAa4P,EAAcK,SAEnDL,EAAcnI,cAAe,GAGvBmI,GDuHRM,eANA,KAOA1I,gBANA,MClJgC,IAsBzBoI,CDoIP,EAEA/W,KAAAA,WACA,OACAsX,kBAAAA,EACAC,gBAAAA,GACA1T,QAAAA,GAEA,EAEAzC,SAAAA,CACA4M,WAAAA,WACA,sCACA,EAEA8C,YAAAA,WACA,8BACA,EAEA7E,QAAAA,WAAA,MACA,oEACA,EAEAhH,IAAAA,WAAA,QAEA,uHACA,EAEApE,OAAAA,WAAA,UACA,8HACA,EACA2G,YAAAA,WACA,2CACA,oBACA,EACAgQ,KAAAA,WACA,uCACA,8BACA,2BAEA,cACA,EAEAC,YAAAA,WACA,uCACA,cACA,EAKA,IAEA,EAFA,IAEA,0BADA,SACA,EACA,EAEAC,OAAAA,WACA,gCACA,gCAAA9O,MAAAA,CAAA3D,KAAAA,EAAAA,EAAAA,MAAAA,KAAAA,IAAAA,KAAAA,OAAAA,aACA,OACA0S,GAAAA,cACArL,MAAAA,KAAAA,EAAAA,QAAAA,qBAAAA,CAAA5M,KAAAA,KAAAA,cACA0V,GAAAA,EAEA,CACA,OACAwC,KAAAA,KAAAA,OAAAA,OAEAtL,MAAAA,KAAAA,EAAAA,QAAAA,uBAAAA,CAAA5M,KAAAA,KAAAA,cAEA,EAEAmY,cAAAA,WACA,mCACA,EACAC,WAAAA,WAAA,UACA,2JACA,EAEAC,aAAAA,WACA,0CACA,EAEAhX,WAAAA,WACA,IACA,wEAMA,OAJAiX,EAAAA,aAAAA,IAAAA,IAAAA,MACAA,EAAAA,aAAAA,IAAAA,IAAAA,MAEAA,EAAAA,aAAAA,IAAAA,KAAAA,IAAAA,KAAAA,aAAAA,IAAAA,KACA,MAGA,CAFA,SACA,WACA,CACA,EAEAC,YAAAA,WAAA,UACA,+CACA,8HACA,SACA,qBAEA,EACA,EAEAC,eAAAA,WAAA,WACA,UACAlH,QAAAA,SAAAA,GAAA,yDACAxE,MAAAA,SAAAA,EAAAA,GAAA,kCACA,EAEA2L,qBAAAA,WAAA,WACA,+IACA,EAEAC,mBAAAA,WACA,mBACA,8BACA7J,GAAAA,QAAAA,SAAAA,GAAA,oBAEA,EAEA8J,SAAAA,WACA,wCACA,EAEAC,WAAAA,CACAC,IAAAA,WACA,0CACA,EACAzE,IAAAA,SAAAA,GACA,wCACA,IAIA1C,MAAAA,CACAwF,OAAAA,SAAAA,EAAAA,GACA,kBAOA,OANA,uBAKA,0CAKA,oCACA,EAMA7V,WAAAA,WACA,gBACA,0BACA,GAMAgN,QAAAA,WAAA,QAIA,oDACA,2BACA,WAGA,2BAGA,gIACA,EAEA0B,cAAAA,WACA,iBACA,EAEArN,QAAAA,CACAoW,oBAAAA,WAAA,8IACA,8EAKA5C,GAAAA,EAAAA,YAAA,WAAA6C,EAAAA,KACAA,CAAA,eAEA,OADA,kDACA,gDAKA,kEAdA,EAeA,EAEAC,qBAAAA,WAAA,WAEA,kBAKA,qBACA,gBAIA,+CACA,gBAEAC,EAAAA,cAAAA,EAAAA,OAAAA,OAAAA,OACAA,EAAAA,OAAAA,WACA,kDACA,sBACAC,EAAAA,EACA,EACAD,EAAAA,QAAAA,WACA,sBACAE,EAAAA,EACA,EACAF,EAAAA,IAAAA,EAAAA,WAGAG,GAAAA,WACAH,EAAAA,QAAAA,KACAA,EAAAA,OAAAA,KACAA,EAAAA,IAAAA,EACA,GACA,IACA,EAEAI,WAAAA,WAEA,gBAGA,gBAGA,kBACA,EAEAC,SAAAA,WACA,wBACA,yBAEA,sBACA,6BACA,yBAEA,EAEAC,SAAAA,SAAAA,GAEA,IADA,QACA,uBAEAC,GAAAA,GAAAA,GAAAA,EADA,gBAEAA,GAAAA,EAEA,QACA,EAEAC,cAAAA,SAAAA,GAAA,iJAKA,OAJA3R,EAAAA,EAAAA,YAAAA,CAAAA,EAAAA,QAAAA,EAAAA,aAAA,SAGA,eACAnB,EAAAA,QAAAA,IAAAA,EAAAA,OAAAA,YAAAA,GAAA,SAEAyC,EAAAA,KAAAA,EAAAA,OAAAA,EAAAA,aAAA,WAAAsQ,EAAAA,KACAA,CAAA,gBACA,OAAAtJ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,QAAAA,+CAAAA,CAAAtI,YAAAA,KAAA,4BAGAnC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,QAAAA,gCAAAA,CAAAmC,YAAAA,KAAA,kDAEA5D,GAAAA,MAAAA,+BAAAA,CAAAkF,OAAAA,EAAA6C,EAAAA,EAAAA,MACAtG,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,QAAAA,gCAAAA,CAAAmC,YAAAA,KAAA,QAIA,OAJA,UAGA,aACAnB,EAAAA,QAAAA,IAAAA,EAAAA,OAAAA,YAAAA,GAAA,4EAnBA,EAqBA,EAEAgT,kBAAAA,SAAAA,GAAA,aACA,aACA,wCAGA,oEACA,+CAEA,gBACA,gBAEA,oCACA,aACArP,KAAAA,SAAAA,GAAA,sGACAsP,MAAAA,EAAAA,EAAAA,GAGA,yBACAtI,QAAAA,SAAAA,GAAA,0BAKA,OAHApN,GAAAA,MAAAA,oDAAAA,CAAA2V,MAAAA,EAAAC,IAAAA,EAAAC,cAAAA,EAAAC,kBAAAA,SAEA,0BAEA,CAEA9V,GAAAA,MAAAA,qBAAAA,CAAAmQ,UAAAA,IACA,2BACA,mCACA,EAGA4F,aAAAA,SAAAA,GAEA,qBAKA,kCACA,8DAGAlM,EAAAA,iBACAA,EAAAA,iBARA,CASA,EAEA9H,EAAAA,EAAAA,GACAiU,eAAAA,GAAAA,ME7gBsL,kBCWlL,GAAU,CAAC,EAEf,GAAQpX,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,gBCVI,GAAU,CAAC,EAEf,GAAQJ,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICZI,IAAY,OACd,ICVW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAM0S,YAAmB3S,EAAG,WAAW,CAACA,EAAG,KAAK,CAACE,YAAY,4BAA4B,CAAEJ,EAAI+T,OAAQ7T,EAAG,wBAAwB,CAACG,MAAM,CAAC,aAAaL,EAAI8C,EAAE,QAAS,mCAAoC,CAAE6B,YAAa3E,EAAI2E,cAAe,QAAU3E,EAAIgV,cAAc,MAAQhV,EAAIhC,OAAO,KAAO,iBAAiBuC,GAAG,CAAC,iBAAiBP,EAAIwW,qBAAqBxW,EAAImD,MAAM,GAAGnD,EAAIQ,GAAG,KAAKN,EAAG,KAAK,CAACE,YAAY,wBAAwB,CAACF,EAAG,IAAIF,EAAI+C,GAAG,CAACiU,IAAI,QAAQ,IAAIhX,EAAI6U,QAAO,GAAO,CAAC3U,EAAG,OAAO,CAACE,YAAY,wBAAwB,CAAsB,WAApBJ,EAAIyH,OAAO7J,KAAmBsC,EAAG,cAAeF,EAAI9B,aAAe8B,EAAIyU,iBAAkBvU,EAAG,OAAO,CAAC8W,IAAI,aAAa5W,YAAY,+BAA+BiB,MAAO,CAAEqT,gBAAiB1U,EAAI0U,mBAAsB1U,EAAIoV,YAAalV,EAAG,OAAO,CAACE,YAAY,kEAAkEiB,MAAO,CAAEqT,gBAAiB1U,EAAIoV,eAAiBlV,EAAG,aAAa,GAAGF,EAAIQ,GAAG,KAAKN,EAAG,OAAO,CAACE,YAAY,6BAA6B,CAACJ,EAAIQ,GAAGR,EAAIU,GAAGV,EAAI2E,oBAAoB3E,EAAIQ,GAAG,KAAKN,EAAG,KAAK,CAACE,YAAY,0BAA0BK,MAAK,kCAA4BT,EAAIwV,WAAY,CAAExV,EAAI+T,OAAQ7T,EAAG,YAAY,CAAC8W,IAAI,cAAc3W,MAAM,CAAC,SAAWL,EAAIyH,OAAOwP,SAAS,eAAc,EAAK,OAASjX,EAAIsV,qBAAqBpO,OAAO,KAAOlH,EAAIyV,YAAYlV,GAAG,CAAC,cAAc,SAASkC,GAAQzC,EAAIyV,WAAWhT,CAAM,IAAIzC,EAAIgD,GAAIhD,EAAIuV,oBAAoB,SAAStP,GAAQ,OAAO/F,EAAG,iBAAiB,CAACgD,IAAI+C,EAAOxH,GAAGgC,MAAM,0BAA4BwF,EAAOxH,GAAG8B,GAAG,CAAC,MAAQ,SAASkC,GAAQ,OAAOzC,EAAIsW,cAAcrQ,EAAO,GAAGqH,YAAYtN,EAAIuN,GAAG,CAAC,CAACrK,IAAI,OAAOsK,GAAG,WAAW,MAAO,CAAExN,EAAIgB,UAAYiF,EAAOxH,GAAIyB,EAAG,gBAAgB,CAACG,MAAM,CAAC,KAAO,MAAMH,EAAG,sBAAsB,CAACG,MAAM,CAAC,IAAM4F,EAAOI,cAAc,CAACrG,EAAIyH,QAASzH,EAAIiO,gBAAgB,EAAER,OAAM,IAAO,MAAK,IAAO,CAACzN,EAAIQ,GAAG,aAAaR,EAAIU,GAAGuF,EAAOtB,YAAY,CAAC3E,EAAIyH,QAASzH,EAAIiO,cAAc,aAAa,IAAG,GAAGjO,EAAImD,MAAM,GAAGnD,EAAIQ,GAAG,KAAMR,EAAIgU,gBAAiB9T,EAAG,KAAK,CAACE,YAAY,uBAAuBiB,MAAO,CAAE6V,QAASlX,EAAI4U,cAAgB,CAAC1U,EAAG,OAAO,CAACF,EAAIQ,GAAGR,EAAIU,GAAGV,EAAI2U,WAAW3U,EAAImD,KAAKnD,EAAIQ,GAAG,KAAKR,EAAIgD,GAAIhD,EAAIoJ,SAAS,SAASI,GAAO,MAAC,OAAOtJ,EAAG,KAAK,CAACgD,IAAIsG,EAAO/K,GAAG2B,YAAY,gCAAgCK,MAAK,0BAAmC,QAAnC,EAAoBT,EAAIiO,mBAAW,aAAf,EAAiBxP,GAAE,YAAI+K,EAAO/K,KAAM,CAAEuB,EAAI+T,OAAQ7T,EAAG,sBAAsB,CAACG,MAAM,CAAC,eAAeL,EAAIiO,YAAY,OAASzE,EAAOE,OAAO,OAAS1J,EAAIyH,UAAUzH,EAAImD,MAAM,EAAE,KAAI,EAC95E,GACsB,IDWpB,EACA,KACA,WACA,MAIF,GAAe,GAAiB,iPEyChC,IC7D4L,GD6D7K,iBAAW,CAC1BtG,KAAAA,kBAEA8D,WAAAA,CACA,EAEAjD,MAAAA,CACAsW,gBAAAA,CACApW,KAAAA,QACAG,SAAAA,GAEAgJ,MAAAA,CACAnJ,KAAAA,MACAC,UAAAA,GAEA+L,QAAAA,CACAhM,KAAAA,OACAG,QAAAA,KAIAuO,MAAAA,WACA,WAEA,OACA6F,WAFA,KAGA1B,WAAAA,EAEA,EAEAlS,SAAAA,CACA0P,YAAAA,WACA,8BACA,EAEA7L,IAAAA,WAAA,QAEA,uHACA,EAEA+U,cAAAA,WAAA,MACA,kDAIA,kBACA,oDAEA,4DACA,iCANA,CAOA,EAEA/N,QAAAA,WAAA,MACA,oEACA,EAEAgO,UAAAA,WAAA,MAEA,0DACA,sCAIA,qEACA,GAGA7X,QAAAA,CACA8X,eAAAA,SAAAA,GACA,UACA,gEACA,8bAEA,EAEAvU,EAAAA,EAAAA,kBE7HI,GAAU,CAAC,EAEf,GAAQnD,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAM0S,YAAmB3S,EAAG,KAAK,CAACA,EAAG,KAAK,CAACE,YAAY,4BAA4B,CAACF,EAAG,OAAO,CAACE,YAAY,mBAAmB,CAACJ,EAAIQ,GAAGR,EAAIU,GAAGV,EAAI8C,EAAE,QAAS,4BAA4B9C,EAAIQ,GAAG,KAAKN,EAAG,KAAK,CAACE,YAAY,wBAAwB,CAACF,EAAG,OAAO,CAACE,YAAY,yBAAyBJ,EAAIQ,GAAG,KAAKN,EAAG,OAAO,CAACF,EAAIQ,GAAGR,EAAIU,GAAGV,EAAI4J,cAAc5J,EAAIQ,GAAG,KAAKN,EAAG,KAAK,CAACE,YAAY,4BAA4BJ,EAAIQ,GAAG,KAAMR,EAAIgU,gBAAiB9T,EAAG,KAAK,CAACE,YAAY,2CAA2C,CAACF,EAAG,OAAO,CAACF,EAAIQ,GAAGR,EAAIU,GAAGV,EAAIoX,gBAAgBpX,EAAImD,KAAKnD,EAAIQ,GAAG,KAAKR,EAAIgD,GAAIhD,EAAIoJ,SAAS,SAASI,GAAO,MAAC,OAAOtJ,EAAG,KAAK,CAACgD,IAAIsG,EAAO/K,GAAGgC,MAAMT,EAAIqX,eAAe7N,IAAS,CAACtJ,EAAG,OAAO,CAACF,EAAIQ,GAAGR,EAAIU,GAAiB,QAAf,EAAC8I,EAAOI,eAAO,aAAd,OAAAJ,EAAiBxJ,EAAI+G,MAAO/G,EAAIiO,kBAAkB,KAAI,EACxzB,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,kIEuChC,YAEA,GAAe,iBAAW,CAC1BpR,KAAAA,yBAEA8D,WAAAA,CACA6S,oBAAAA,GACAK,UAAAA,KACAD,eAAAA,KACAE,cAAAA,MAGApW,MAAAA,CACAuQ,YAAAA,CACArQ,KAAAA,OACAC,UAAAA,GAEAyZ,cAAAA,CACA1Z,KAAAA,MACAG,QAAAA,WAAA,YAIAuO,MAAAA,WAIA,OACA2H,iBAJA,KAKA9B,WAJA,KAKAqC,eAJA,KAMA,EAEArX,KAAAA,WACA,OACA6D,QAAAA,KAEA,EAEAzC,SAAAA,CACA8W,eAAAA,WAAA,WACA,UACAlH,QAAAA,SAAAA,GAAA,sBACAA,QAAAA,SAAAA,GAAA,sDACAxE,MAAAA,SAAAA,EAAAA,GAAA,kCACA,EAEA5C,MAAAA,WAAA,WACA,0BACAI,KAAAA,SAAAA,GAAA,uBACAgH,QAAAA,SAAAA,GAAA,WACA,EAEAoJ,oBAAAA,WACA,wDACA,EAEA9B,WAAAA,CACAC,IAAAA,WACA,6CACA,EACAzE,IAAAA,SAAAA,GACA,4CACA,IAIA1R,QAAAA,CAOAoQ,QAAAA,SAAAA,GACA,iCACA,EAEA2G,cAAAA,SAAAA,GAAA,wJAUA,OATA3R,EAAAA,EAAAA,YAAAA,EAAAA,MAAAA,EAAAA,aACA6S,EAAAA,EAAAA,cAAA,SAGA,eACA,6BACAhU,EAAAA,QAAAA,IAAAA,EAAAA,YAAAA,EACA,IAEA,SACAyC,EAAAA,UAAAA,EAAAA,MAAAA,EAAAA,aAAA,YAAAwR,EAAAA,EAAAA,MAGAA,MAAAA,SAAAA,GAAA,iCAMA,OAJAC,EAAAA,EACAvJ,QAAAA,SAAAA,EAAAA,GAAA,mBACA,yBAEA3L,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,QAAAA,2CAAAA,CAAAmC,YAAAA,KAAA,4BAKAsI,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,QAAAA,qDAAAA,CAAAtI,YAAAA,KACA,2EAEA5D,GAAAA,MAAAA,+BAAAA,CAAAkF,OAAAA,EAAA6C,EAAAA,EAAAA,MACAtG,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,QAAAA,gCAAAA,CAAAmC,YAAAA,KAAA,QAMA,OANA,UAGA,eACA,6BACAnB,EAAAA,QAAAA,IAAAA,EAAAA,YAAAA,EACA,kQAEA,EAEAV,EAAAA,EAAAA,MChLmM,kBCW/L,GAAU,CAAC,EAEf,GAAQnD,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICbI,IAAY,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAM0S,YAAmB3S,EAAG,KAAK,CAACE,YAAY,mDAAmDC,MAAM,CAAC,QAAU,MAAM,CAACH,EAAG,YAAY,CAAC8W,IAAI,cAAc3W,MAAM,CAAC,WAAaL,EAAIgB,SAAWhB,EAAIuX,oBAAoB,eAAc,EAAK,OAAS,EAAE,KAAOvX,EAAIyV,YAAYlV,GAAG,CAAC,cAAc,SAASkC,GAAQzC,EAAIyV,WAAWhT,CAAM,IAAIzC,EAAIgD,GAAIhD,EAAIqV,gBAAgB,SAASpP,GAAQ,OAAO/F,EAAG,iBAAiB,CAACgD,IAAI+C,EAAOxH,GAAGgC,MAAM,iCAAmCwF,EAAOxH,GAAG8B,GAAG,CAAC,MAAQ,SAASkC,GAAQ,OAAOzC,EAAIsW,cAAcrQ,EAAO,GAAGqH,YAAYtN,EAAIuN,GAAG,CAAC,CAACrK,IAAI,OAAOsK,GAAG,WAAW,MAAO,CAAExN,EAAIgB,UAAYiF,EAAOxH,GAAIyB,EAAG,gBAAgB,CAACG,MAAM,CAAC,KAAO,MAAMH,EAAG,sBAAsB,CAACG,MAAM,CAAC,IAAM4F,EAAOI,cAAcrG,EAAI+G,MAAO/G,EAAIiO,gBAAgB,EAAER,OAAM,IAAO,MAAK,IAAO,CAACzN,EAAIQ,GAAG,WAAWR,EAAIU,GAAGuF,EAAOtB,YAAY3E,EAAI+G,MAAO/G,EAAIiO,cAAc,WAAW,IAAG,IAAI,EACp6B,GACsB,IDUpB,EACA,KACA,WACA,MAIF,GAAe,GAAiB,gvCEyBhC,IC5CkM,GD4CnL,iBAAW,CAC1BpR,KAAAA,wBAEA8D,WAAAA,CACAgX,SAAAA,GAAAA,EACAC,OAAAA,GAAAA,EACAC,SAAAA,MAGAC,OAAAA,CAAAA,gBAEApa,MAAAA,CACAb,KAAAA,CACAe,KAAAA,OACAC,UAAAA,GAEAyT,KAAAA,CACA1T,KAAAA,OACAC,UAAAA,IAIAyO,MAAAA,WAEA,OACAyL,aAFA,KAIA,EAEAxZ,SAAAA,GAAAA,GAAAA,CAAAA,GACAyZ,EAAAA,GAAAA,IAAAA,GAAAA,CAAAA,wBAAAA,CAAAA,EAAAA,CAEA/J,YAAAA,WACA,8BACA,EAEAgK,YAAAA,WACA,8DACA,iCACA,UACA,EACAvG,aAAAA,WACA,8DACA,IAGAnS,QAAAA,CACA2Y,cAAAA,SAAAA,GACA,wBACA,4BACA,6BACA,6DACA1O,OAAAA,EACA+H,UAAAA,GAEA,EAEAzO,EAAAA,EAAAA,kBE1FI,GAAU,CAAC,EAEf,GAAQnD,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAM0S,YAAmB3S,EAAG,WAAW,CAACE,YAAY,iCAAiCK,MAAM,CAAC,yCAA0CT,EAAIiY,cAAgBjY,EAAIsR,MAAMjR,MAAM,CAAC,aAAaL,EAAIkY,cAAclY,EAAInD,MAAM,KAAO,YAAY0D,GAAG,CAAC,MAAQ,SAASkC,GAAyD,OAAjDA,EAAOE,kBAAkBF,EAAOC,iBAAwB1C,EAAImY,aAAanY,EAAIsR,KAAK,IAAI,CAAEtR,EAAIiY,cAAgBjY,EAAIsR,MAAQtR,EAAI0R,aAAcxR,EAAG,SAAS,CAACG,MAAM,CAAC,KAAO,QAAQwK,KAAK,SAAS3K,EAAG,WAAW,CAACG,MAAM,CAAC,KAAO,QAAQwK,KAAK,SAAS7K,EAAIQ,GAAG,OAAOR,EAAIU,GAAGV,EAAInD,MAAM,OAAO,EAC/lB,GACsB,IDUpB,EACA,KACA,KACA,MAI8B,wtCE6DhC,IChF4L,GDgF7K,iBAAW,CAC1BA,KAAAA,kBAEA8D,WAAAA,CACAyX,sBAAAA,GACAjM,sBAAAA,KACAkM,uBAAAA,IAGAC,QAAAA,WACA,OACAH,aAAAA,KAAAA,aAEA,EAEAza,MAAAA,CACAsW,gBAAAA,CACApW,KAAAA,QACAG,SAAAA,GAEAgJ,MAAAA,CACAnJ,KAAAA,MACAC,UAAAA,IAIAyO,MAAAA,WAIA,OACA6F,WAJA,KAKAqC,eAJA,KAKAuD,aAJA,KAMA,EAEAxZ,SAAAA,GAAAA,GAAAA,CAAAA,GACAyZ,EAAAA,GAAAA,IAAAA,GAAAA,CAAAA,wBAAAA,CAAAA,EAAAA,CAEA/J,YAAAA,WACA,8BACA,EAEA7E,QAAAA,WAAA,MACA,oEACA,EAEAhH,IAAAA,WAAA,QAEA,uHACA,EAEAmW,cAAAA,WACA,+CACA,6BACA,+BACA,OACA,eACAza,QAAAA,KAAAA,cACA0a,cAAAA,KAAAA,eACA/O,MAAAA,EAEA,EAEA6N,cAAAA,WACA,mCACA,EAEAmB,cAAAA,WACA,oDACA,EAEAC,eAAAA,WACA,oCACA,EAEAC,eAAAA,WACA,+CACA,EAEAV,YAAAA,WACA,8DACA,iCACA,UACA,EACAvG,aAAAA,WACA,8DACA,IAGAnS,QAAAA,CACA8X,eAAAA,SAAAA,GACA,WACA,wBACA,wCACA,8DACA,yCAEA,EAEAuB,YAAAA,SAAAA,GACA,MACA,2EACA7X,GAAAA,MAAAA,+BAAAA,CAAAmQ,UAAAA,IACA,uCACA,0BACA,MACAnQ,GAAAA,MAAAA,qBACA,2BAEA,EAEAoX,aAAAA,SAAAA,GAEA,qBAKA,sDAJA,6DAKA,EAEArV,EAAAA,EAAAA,kBEhMI,GAAU,CAAC,EAEf,GAAQnD,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAM0S,YAAmB3S,EAAG,KAAK,CAACA,EAAG,KAAK,CAACE,YAAY,+CAA+C,CAACF,EAAG,wBAAwBF,EAAI+C,GAAG,CAACxC,GAAG,CAAC,iBAAiBP,EAAI4Y,cAAc,wBAAwB5Y,EAAIuY,eAAc,KAAS,GAAGvY,EAAIQ,GAAG,KAAOR,EAAI0Y,eAAyH,CAACxY,EAAG,KAAK,CAACE,YAAY,uEAAuEG,GAAG,CAAC,MAAQ,SAASkC,GAAyD,OAAjDA,EAAOE,kBAAkBF,EAAOC,iBAAwB1C,EAAImY,aAAa,WAAW,IAAI,CAACjY,EAAG,OAAO,CAACE,YAAY,yBAAyBJ,EAAIQ,GAAG,KAAKN,EAAG,wBAAwB,CAACG,MAAM,CAAC,KAAOL,EAAI8C,EAAE,QAAS,QAAQ,KAAO,eAAe,GAAG9C,EAAIQ,GAAG,KAAKN,EAAG,KAAK,CAACE,YAAY,4BAA4BJ,EAAIQ,GAAG,KAAMR,EAAIgU,gBAAiB9T,EAAG,KAAK,CAACE,YAAY,0CAA0CK,MAAM,CAAC,+BAAgCT,EAAIgU,kBAAkB,CAAC9T,EAAG,wBAAwB,CAACG,MAAM,CAAC,KAAOL,EAAI8C,EAAE,QAAS,QAAQ,KAAO,WAAW,GAAG9C,EAAImD,KAAKnD,EAAIQ,GAAG,KAAKR,EAAIgD,GAAIhD,EAAIoJ,SAAS,SAASI,GAAQ,OAAOtJ,EAAG,KAAK,CAACgD,IAAIsG,EAAO/K,GAAGgC,MAAMT,EAAIqX,eAAe7N,IAAS,CAAIA,EAAOG,KAAMzJ,EAAG,wBAAwB,CAACG,MAAM,CAAC,KAAOmJ,EAAOC,MAAM,KAAOD,EAAO/K,MAAMyB,EAAG,OAAO,CAACF,EAAIQ,GAAG,aAAaR,EAAIU,GAAG8I,EAAOC,OAAO,eAAe,EAAE,KAAhiCvJ,EAAG,yBAAyB,CAACG,MAAM,CAAC,eAAeL,EAAIiO,YAAY,iBAAiBjO,EAAIsX,kBAA68B,EACr3C,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,QEnB6J,GCqE9K,iBAAW,CAC1Bza,KAAAA,mBAEA8D,WAAAA,CACAkY,gBAAAA,GAAAA,GACAC,UAAAA,GACAC,gBAAAA,GACAC,gBAAAA,IAGAtb,MAAAA,CACAuQ,YAAAA,CACArQ,KAAAA,OACAC,UAAAA,GAEAkJ,MAAAA,CACAnJ,KAAAA,MACAC,UAAAA,IAIAV,KAAAA,WACA,OACA2b,UAAAA,GAEA,EAEAva,SAAAA,CACAiR,MAAAA,WACA,8DACA,EAEAyJ,YAAAA,WACA,wBACA,yDAAAC,MAAAA,GACA,EACAC,cAAAA,WACA,0CACA,6DAAAD,MAAAA,GACA,EACAtP,QAAAA,WACA,gEACA,EACAoK,gBAAAA,WACA,wEACA,GAGA9I,QAAAA,WAEA,+DACAkO,EAAAA,GAAAA,aAAAA,OAAAA,SACAA,EAAAA,GAAAA,aAAAA,OAAAA,QACA,EAEA7Z,QAAAA,CACA8Z,UAAAA,SAAAA,GACA,0BACA,EAEAvW,EAAAA,EAAAA,kBCtHI,GAAU,CAAC,EAEf,GAAQnD,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAM0S,YAAmB3S,EAAG,kBAAkB,CAAC8W,IAAI,kBAAkB5W,YAAY,aAAaC,MAAM,CAAC,YAAY,SAAS,MAAQL,EAAI+G,MAAM,YAAY,GAAG,cAAa,EAAK,aAAa,kBAAkB,WAAW,KAAK,aAAa,mBAAmB,WAAW,QAAQ,KAAO,SAASuG,YAAYtN,EAAIuN,GAAG,CAAC,CAACrK,IAAI,UAAUsK,GAAG,YAAiC,IAAtB8L,EAAI,EAAJA,KAAMvF,EAAM,EAANA,OAAQ1O,EAAK,EAALA,MAAS,MAAO,CAACnF,EAAG,YAAY,CAACG,MAAM,CAAC,OAAS0T,EAAO,MAAQ1O,EAAM,oBAAoBrF,EAAIgU,gBAAgB,MAAQhU,EAAI+G,MAAM,OAASuS,KAAQ,GAAG,CAACpW,IAAI,SAASsK,GAAG,WAAW,MAAO,CAACtN,EAAG,UAAU,CAACE,YAAY,mBAAmB,CAACJ,EAAIQ,GAAG,WAAWR,EAAIU,GAAGV,EAAIiO,YAAYsL,SAAW,IAAI,WAAWvZ,EAAIU,GAAGV,EAAI8C,EAAE,QAAS,2HAA2H,YAAY9C,EAAIQ,GAAG,KAAKN,EAAG,kBAAkB,CAACG,MAAM,CAAC,oBAAoBL,EAAIgU,gBAAgB,MAAQhU,EAAI+G,SAAS,EAAE0G,OAAM,GAAM,CAACvK,IAAI,QAAQsK,GAAG,WAAW,MAAO,CAACtN,EAAG,kBAAkB,CAACG,MAAM,CAAC,oBAAoBL,EAAIgU,gBAAgB,MAAQhU,EAAI+G,MAAM,QAAU/G,EAAI4J,WAAW,EAAE6D,OAAM,MAC1nC,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,ukEEmEhC,OAAe,iBAAW,CAC1B5Q,KAAAA,YAEA8D,WAAAA,CACA6Y,YAAAA,GACAC,iBAAAA,GACAC,aAAAA,KACA7B,SAAAA,KACAjX,eAAAA,IACAkT,cAAAA,KACA7M,SAAAA,GAAAA,GAGAqF,MAAAA,WACA,WAIA,OACA6F,WAJA,KAKA1B,WAAAA,EACA+D,eALA,KAMAuD,aALA,KAOA,EAEA5a,KAAAA,WACA,OACA6D,SAAAA,EACA2Y,QAAAA,KAEA,EAEApb,SAAAA,CAEA0P,YAAAA,WACA,gCACA,gEACA,EAOA7L,IAAAA,WAAA,QAEA,uHACA,EAOA+U,cAAAA,WAAA,MACA,kDAIA,kBACA,oDAEA,4DACA,iCANA,CAOA,EAEAc,YAAAA,WACA,8DACA,iCACA,UACA,EACAvG,aAAAA,WACA,8DACA,EAOAkI,YAAAA,WAAA,aACA,qBACA,SAGA,+BACA/R,MAAAA,SAAAA,GAAA,+BAGA,qDACA,6HACA8B,KAAAA,EAAAA,MACA,sCACA,CAEA,oBACA,mIAGA,0EAEA,qCAEA,iCAEA,6DAEA,EAKAkQ,WAAAA,WACA,kCACA,EAOAC,aAAAA,WACA,qCACA,iBACA,YACA,EAKAC,cAAAA,WACA,qDACA,iCAAAhU,MAAAA,CAAA3D,IAAAA,IACA,GAGAmM,MAAAA,CACAN,YAAAA,SAAAA,EAAAA,IACA,+CAIAlN,GAAAA,MAAAA,eAAAA,CAAAiZ,QAAAA,EAAAC,QAAAA,IACA,4BACA,oBACA,EAEA7X,IAAAA,SAAAA,EAAAA,GAAA,QACArB,GAAAA,MAAAA,oBAAAA,CAAAmZ,OAAAA,EAAAC,OAAAA,IAEA,4BACA,oBAGA,sFACA,4CAEA,GAGA5a,QAAAA,CACA6a,aAAAA,WAAA,iKACA,QADA,EACA,uFAgBA,OAZA,aACAhY,EAAAA,EAAAA,IACA6L,EAAAA,EAAAA,YAGA,uEACA,mBACAlN,GAAAA,MAAAA,qCAKA,8CAEA,2BAAAsZ,EAAAA,EAAAA,OAAAC,EAAAA,EAAAA,SACAvZ,GAAAA,MAAAA,mBAAAA,CAAAqB,IAAAA,EAAAiY,OAAAA,EAAAC,SAAAA,IAGA,4BAGAD,EAAAA,UAAAA,EAAAA,KAAAA,SAAAA,GAAA,8BAGA,QACA,sBAAArK,QAAAA,EAAAA,GAAAM,KAAAA,IAGA,qBACA,8BACA,sBAAAN,QAAAA,EAAAA,GAAAhS,OAAAA,EAAAA,WAAAA,OAAApB,KAAAA,KAGAmE,GAAAA,MAAAA,+BAAAA,CAAAqB,IAAAA,EAAAiY,OAAAA,EAAApM,YAAAA,IAIAsM,EAAAA,QAAAA,SAAAA,GAAA,2BACAA,SAAAA,SAAAA,GACA,sBAAAvK,QAAAA,EAAAA,GAAAhS,OAAAA,EAAAA,WAAAA,OAAApB,MAAAA,EAAAA,EAAAA,MAAAA,EAAAA,EAAAA,WACA,sDAEAmE,GAAAA,MAAAA,+BAAAA,CAAA8E,MAAAA,EAAAA,KAAA,QAEA,OAFA,UAEA,2QAGA,EAQA8J,QAAAA,SAAAA,GACA,iCACA,EAEA7M,EAAAA,EAAAA,MCxTsL,kBCWlL,GAAU,CAAC,EAEf,GAAQnD,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAiB,QAAKC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAM0S,YAAmB3S,EAAG,eAAe,CAACsa,WAAW,CAAC,CAAC3d,KAAK,OAAO4d,QAAQ,SAAS3b,QAAuB,QAAhB,EAACkB,EAAIiO,mBAAW,OAAf,EAAiBzF,QAAQkS,WAAW,yBAAyBja,MAAM,CAAC,sBAAsC,QAAjB,EAAET,EAAIiO,mBAAW,aAAf,EAAiBzF,QAAQnI,MAAM,CAAC,wBAAwB,KAAK,CAACH,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACF,EAAG,cAAc,CAACG,MAAM,CAAC,KAAOL,EAAIoC,KAAK7B,GAAG,CAAC,OAASP,EAAIoa,gBAAgBpa,EAAIQ,GAAG,KAAMR,EAAI8Z,aAAc5Z,EAAG,gBAAgB,CAACE,YAAY,6BAA6BJ,EAAImD,MAAM,GAAGnD,EAAIQ,GAAG,KAAMR,EAAIgB,UAAYhB,EAAI8Z,aAAc5Z,EAAG,gBAAgB,CAACE,YAAY,2BAA2BC,MAAM,CAAC,KAAO,GAAG,MAAQL,EAAI8C,EAAE,QAAS,8BAA+B9C,EAAIgB,SAAWhB,EAAI6Z,WAAY3Z,EAAG,iBAAiB,CAACG,MAAM,CAAC,MAAQL,EAAI8C,EAAE,QAAS,oBAAoB,YAAc9C,EAAI8C,EAAE,QAAS,6CAA6C,8BAA8B,IAAIwK,YAAYtN,EAAIuN,GAAG,CAAC,CAACrK,IAAI,SAASsK,GAAG,WAAW,MAAO,CAAc,MAAZxN,EAAIoC,IAAalC,EAAG,WAAW,CAACG,MAAM,CAAC,aAAa,0CAA0C,KAAO,UAAU,GAAKL,EAAI+Z,gBAAgB,CAAC/Z,EAAIQ,GAAG,aAAaR,EAAIU,GAAGV,EAAI8C,EAAE,QAAS,YAAY,cAAc9C,EAAImD,KAAK,EAAEsK,OAAM,GAAM,CAACvK,IAAI,OAAOsK,GAAG,WAAW,MAAO,CAACtN,EAAG,YAAY,EAAEuN,OAAM,OAAUvN,EAAG,mBAAmB,CAAC8W,IAAI,mBAAmB3W,MAAM,CAAC,eAAeL,EAAIiO,YAAY,MAAQjO,EAAI4Z,gBAAgB,EACj3C,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,itBEnBhC,IAsBqBe,GAAQ,WAI5B,oHAAc,yIACb1a,KAAK2a,UAAY,GACjBrY,GAAQyB,MAAM,iCACf,SAyBC,SAvBD,4BAOA,SAASgD,GACR,OAAI/G,KAAK2a,UAAUzM,QAAO,SAAArF,GAAC,OAAIA,EAAEjM,OAASmK,EAAKnK,IAAI,IAAEqK,OAAS,GAC7D3E,GAAQsD,MAAM,uDACP,IAER5F,KAAK2a,UAAU7S,KAAKf,IACb,EACR,GAEA,oBAKA,WACC,OAAO/G,KAAK2a,SACb,2EAAC,EAhC2B,+zBCtB7B,IAuBqBvO,GAAO,WAiB3B,WAAYxP,EAAM,GAAqB,IAAnBoO,EAAE,EAAFA,GAAI3J,EAAI,EAAJA,KAAMG,EAAK,EAALA,mGAAK,wGAClCxB,KAAK4a,MAAQhe,EACboD,KAAK6a,IAAM7P,EACXhL,KAAK8a,MAAQzZ,EACbrB,KAAK+a,OAASvZ,EAEY,mBAAfxB,KAAK8a,QACf9a,KAAK8a,MAAQ,WAAO,GAGM,mBAAhB9a,KAAK+a,SACf/a,KAAK+a,OAAS,WAAO,EAEvB,SAgBC,SAhBA,sBAED,WACC,OAAO/a,KAAK4a,KACb,GAAC,cAED,WACC,OAAO5a,KAAK6a,GACb,GAAC,gBAED,WACC,OAAO7a,KAAK8a,KACb,GAAC,iBAED,WACC,OAAO9a,KAAK+a,MACb,2EAAC,EA9C0B,2BCG5BxX,EAAAA,QAAAA,IAAQyX,GAAAA,IAER,UA4BA,GA5Be,IAAIA,GAAAA,GAAO,CACzB3J,KAAM,UAIN4J,MAAMrP,EAAAA,EAAAA,aAAY,cAAe,IACjCsP,gBAAiB,SAEjBC,OAAQ,CACP,CACCxe,KAAM,IAENye,MAAO,UAER,CACCze,KAAM,kBACNC,KAAM,WACNa,OAAO,IAKT4d,eAAc,SAACvV,GACd,IAAMwV,GAASC,EAAAA,GAAAA,WAAUzV,GAAOjJ,QAAQ,SAAU,KAClD,OAAOye,EAAU,IAAMA,EAAU,EAClC,IChCDlX,OAAO9H,IAAIC,MAAwB,QAAnB,GAAG6H,OAAO9H,IAAIC,aAAK,UAAI,CAAC,EACxC6H,OAAOiE,IAAI9L,MAAwB,QAAnB,GAAG6H,OAAOiE,IAAI9L,aAAK,UAAI,CAAC,EAGxCgH,EAAAA,QAAAA,IAAQiY,GAAAA,IACR,IAAMC,IAAQC,EAAAA,GAAAA,MAGRpT,GAAa,IAAIqT,GACvBC,OAAOC,OAAOzX,OAAOiE,IAAI9L,MAAO,CAAE+L,WAAAA,KAClC/E,EAAAA,QAAAA,UAAAA,YAA4B+E,GAG5B,IpFLOwT,GoFKDpB,GAAW,IAAIqB,GACrBH,OAAOC,OAAOzX,OAAO9H,IAAIC,MAAO,CAAEme,SAAAA,KAClCkB,OAAOC,OAAOzX,OAAO9H,IAAIC,MAAMme,SAAU,CAAEtO,QAAS4P,KAIxB,IADfzY,EAAAA,QAAAA,OAAW0Y,IACI,CAAS,CACpCrf,KAAM,sBACNsH,UAAW,CACVoE,WAAAA,IAED4T,OAAAA,GACAT,MAAAA,KAEmBtX,OAAO,yBAIT,IADDZ,EAAAA,QAAAA,OAAW4Y,IACV,CAAa,CAC9Bvf,KAAM,gBACNsf,OAAAA,GACAT,MAAAA,KAEStX,OAAO,qBpF5BV2X,GAAcF,OAAOQ,QAAOvY,EAAAA,EAAAA,GAAU,QAAS,aAAc,CAAC,KAEpDoD,OAAS,IACxBnG,GAAAA,MAAa,6CAA8Cgb,IAC3DA,GAAY5c,SAAQ,SAAA6H,GACnBgB,GAAmBhB,GACfA,EAAKsV,SACRtV,EAAKsV,QAAQnd,SAAQ,SAAAod,GAAO,OAAIvU,GAAmB,GAAD,MAAMuU,GAAO,IAAErU,OAAQlB,EAAKvI,KAAK,GAErF,KEbG,kBAAmBuO,UAEtB3I,OAAOC,iBAAiB,OAAM,4BAAE,qGAE2D,OAF3D,SAExB6Q,GAAMtJ,EAAAA,EAAAA,aAAY,wCAAyC,CAAC,EAAG,CAAE2Q,WAAW,IAAO,SAC9DxP,UAAUyP,cAAcrX,SAAS+P,EAAK,CAAEuH,MAAO,MAAM,OAA1EC,EAAe,EAAH,KAClB5b,GAAAA,MAAa,kBAAmB,CAAE4b,aAAAA,IAAe,gDAEjD5b,GAAAA,MAAa,2BAA4B,CAAE8E,MAAK,OAAG,0DAIrD9E,GAAAA,MAAa,4GmFlCX6b,QAA0B,GAA4B,KAE1DA,EAAwB7U,KAAK,CAAC8U,EAAOpe,GAAI,6HAA8H,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yDAAyD,MAAQ,GAAG,SAAW,8CAA8C,eAAiB,CAAC,qKAAqK,WAAa,MAEngB,gECJIme,QAA0B,GAA4B,KAE1DA,EAAwB7U,KAAK,CAAC8U,EAAOpe,GAAI,kPAAmP,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,iEAAiE,MAAQ,GAAG,SAAW,iIAAiI,eAAiB,CAAC,kXAAkX,WAAa,MAEh6B,gECJIme,QAA0B,GAA4B,KAE1DA,EAAwB7U,KAAK,CAAC8U,EAAOpe,GAAI,q+FAAs+F,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,uDAAuD,uDAAuD,MAAQ,GAAG,SAAW,kyBAAkyB,eAAiB,CAAC,uyIAAuyI,4ZAA4Z,WAAa,MAElrR,gECJIme,QAA0B,GAA4B,KAE1DA,EAAwB7U,KAAK,CAAC8U,EAAOpe,GAAI,y+FAA0+F,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,uDAAuD,6DAA6D,MAAQ,GAAG,SAAW,80BAA80B,eAAiB,CAAC,uyIAAuyI,kaAAka,WAAa,MAE9uR,gECJIme,QAA0B,GAA4B,KAE1DA,EAAwB7U,KAAK,CAAC8U,EAAOpe,GAAI,85FAA+5F,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,uDAAuD,6DAA6D,MAAQ,GAAG,SAAW,4yBAA4yB,eAAiB,CAAC,uyIAAuyI,iQAAiQ,WAAa,MAEh+Q,gECJIme,QAA0B,GAA4B,KAE1DA,EAAwB7U,KAAK,CAAC8U,EAAOpe,GAAI,iTAAkT,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,oEAAoE,MAAQ,GAAG,SAAW,yEAAyE,eAAiB,CAAC,+UAA+U,WAAa,MAEv4B,gECJIme,QAA0B,GAA4B,KAE1DA,EAAwB7U,KAAK,CAAC8U,EAAOpe,GAAI,yrBAA0rB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mEAAmE,MAAQ,GAAG,SAAW,iKAAiK,eAAiB,CAAC,43BAA43B,WAAa,MAEn5D,gECJIme,QAA0B,GAA4B,KAE1DA,EAAwB7U,KAAK,CAAC8U,EAAOpe,GAAI,itBAAktB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,8DAA8D,MAAQ,GAAG,SAAW,6QAA6Q,eAAiB,CAAC,wmCAAwmC,WAAa,MAE9vE,8DCJIme,QAA0B,GAA4B,KAE1DA,EAAwB7U,KAAK,CAAC8U,EAAOpe,GAAI,oQAAqQ,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6DAA6D,MAAQ,GAAG,SAAW,mEAAmE,eAAiB,CAAC,gVAAgV,WAAa,MAE90B,+DCJIme,QAA0B,GAA4B,KAE1DA,EAAwB7U,KAAK,CAAC8U,EAAOpe,GAAI,0rCAA2rC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6DAA6D,MAAQ,GAAG,SAAW,uYAAuY,eAAiB,CAAC,06CAA06C,WAAa,MAElqG,gECJIme,QAA0B,GAA4B,KAE1DA,EAAwB7U,KAAK,CAAC8U,EAAOpe,GAAI,qdAAsd,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kDAAkD,MAAQ,GAAG,SAAW,qLAAqL,eAAiB,CAAC,o5BAAo5B,WAAa,MAE1sD,gECJIme,QAA0B,GAA4B,KAE1DA,EAAwB7U,KAAK,CAAC8U,EAAOpe,GAAI,0WAA2W,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mDAAmD,MAAQ,GAAG,SAAW,gGAAgG,eAAiB,CAAC,miBAAmiB,WAAa,MAE1pC,gECJIme,QAA0B,GAA4B,KAE1DA,EAAwB7U,KAAK,CAAC8U,EAAOpe,GAAI,kEAAmE,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,iDAAiD,MAAQ,GAAG,SAAW,mBAAmB,eAAiB,CAAC,+DAA+D,WAAa,MAE/T,+DCJIme,QAA0B,GAA4B,KAE1DA,EAAwB7U,KAAK,CAAC8U,EAAOpe,GAAI,yiCAA0iC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,uDAAuD,MAAQ,GAAG,SAAW,sVAAsV,eAAiB,CAAC,i4CAAi4C,WAAa,MAEj7F,gECJIme,QAA0B,GAA4B,KAE1DA,EAAwB7U,KAAK,CAAC8U,EAAOpe,GAAI,yKAA0K,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,uDAAuD,MAAQ,GAAG,SAAW,wBAAwB,eAAiB,CAAC,u2gBAAoygB,WAAa,MAEtphB,QCNIqe,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIN,EAASC,EAAyBE,GAAY,CACjDve,GAAIue,EACJI,QAAQ,EACRD,QAAS,CAAC,GAUX,OANAE,EAAoBL,GAAUM,KAAKT,EAAOM,QAASN,EAAQA,EAAOM,QAASJ,GAG3EF,EAAOO,QAAS,EAGTP,EAAOM,OACf,CAGAJ,EAAoBQ,EAAIF,EvH5BpBjhB,EAAW,GACf2gB,EAAoBS,EAAI,SAASjC,EAAQkC,EAAUjQ,EAAIkQ,GACtD,IAAGD,EAAH,CAMA,IAAIE,EAAeC,IACnB,IAASC,EAAI,EAAGA,EAAIzhB,EAAS8K,OAAQ2W,IAAK,CACrCJ,EAAWrhB,EAASyhB,GAAG,GACvBrQ,EAAKpR,EAASyhB,GAAG,GACjBH,EAAWthB,EAASyhB,GAAG,GAE3B,IAJA,IAGIC,GAAY,EACPC,EAAI,EAAGA,EAAIN,EAASvW,OAAQ6W,MACpB,EAAXL,GAAsBC,GAAgBD,IAAa7B,OAAOmC,KAAKjB,EAAoBS,GAAGlW,OAAM,SAASpE,GAAO,OAAO6Z,EAAoBS,EAAEta,GAAKua,EAASM,GAAK,IAChKN,EAASQ,OAAOF,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACb1hB,EAAS6hB,OAAOJ,IAAK,GACrB,IAAIK,EAAI1Q,SACE0P,IAANgB,IAAiB3C,EAAS2C,EAC/B,CACD,CACA,OAAO3C,CArBP,CAJCmC,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIzhB,EAAS8K,OAAQ2W,EAAI,GAAKzhB,EAASyhB,EAAI,GAAG,GAAKH,EAAUG,IAAKzhB,EAASyhB,GAAKzhB,EAASyhB,EAAI,GACrGzhB,EAASyhB,GAAK,CAACJ,EAAUjQ,EAAIkQ,EAwB/B,EwH5BAX,EAAoBtZ,EAAI,SAASoZ,GAChC,IAAIsB,EAAStB,GAAUA,EAAOuB,WAC7B,WAAa,OAAOvB,EAAgB,OAAG,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADAE,EAAoBsB,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,CACR,ECNApB,EAAoBsB,EAAI,SAASlB,EAASoB,GACzC,IAAI,IAAIrb,KAAOqb,EACXxB,EAAoByB,EAAED,EAAYrb,KAAS6Z,EAAoByB,EAAErB,EAASja,IAC5E2Y,OAAO4C,eAAetB,EAASja,EAAK,CAAEwb,YAAY,EAAMhJ,IAAK6I,EAAWrb,IAG3E,ECPA6Z,EAAoB4B,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAO3e,MAAQ,IAAI4e,SAAS,cAAb,EAGhB,CAFE,MAAO/V,GACR,GAAsB,iBAAXzE,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxB0Y,EAAoByB,EAAI,SAASM,EAAKC,GAAQ,OAAOlD,OAAOmD,UAAUC,eAAe3B,KAAKwB,EAAKC,EAAO,ECCtGhC,EAAoBmB,EAAI,SAASf,GACX,oBAAX+B,QAA0BA,OAAOC,aAC1CtD,OAAO4C,eAAetB,EAAS+B,OAAOC,YAAa,CAAErgB,MAAO,WAE7D+c,OAAO4C,eAAetB,EAAS,aAAc,CAAEre,OAAO,GACvD,ECNAie,EAAoBqC,IAAM,SAASvC,GAGlC,OAFAA,EAAOwC,MAAQ,GACVxC,EAAOyC,WAAUzC,EAAOyC,SAAW,IACjCzC,CACR,ECJAE,EAAoBgB,EAAI,gBCAxBhB,EAAoBwC,EAAI3gB,SAAS4gB,SAAWC,KAAKC,SAAS3K,KAK1D,IAAI4K,EAAkB,CACrB,KAAM,GAaP5C,EAAoBS,EAAEO,EAAI,SAAS6B,GAAW,OAAoC,IAA7BD,EAAgBC,EAAgB,EAGrF,IAAIC,EAAuB,SAASC,EAA4B3iB,GAC/D,IAKI6f,EAAU4C,EALVnC,EAAWtgB,EAAK,GAChB4iB,EAAc5iB,EAAK,GACnB6iB,EAAU7iB,EAAK,GAGI0gB,EAAI,EAC3B,GAAGJ,EAASwC,MAAK,SAASxhB,GAAM,OAA+B,IAAxBkhB,EAAgBlhB,EAAW,IAAI,CACrE,IAAIue,KAAY+C,EACZhD,EAAoByB,EAAEuB,EAAa/C,KACrCD,EAAoBQ,EAAEP,GAAY+C,EAAY/C,IAGhD,GAAGgD,EAAS,IAAIzE,EAASyE,EAAQjD,EAClC,CAEA,IADG+C,GAA4BA,EAA2B3iB,GACrD0gB,EAAIJ,EAASvW,OAAQ2W,IACzB+B,EAAUnC,EAASI,GAChBd,EAAoByB,EAAEmB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAO7C,EAAoBS,EAAEjC,EAC9B,EAEI2E,EAAqBT,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FS,EAAmB/gB,QAAQ0gB,EAAqBM,KAAK,KAAM,IAC3DD,EAAmBnY,KAAO8X,EAAqBM,KAAK,KAAMD,EAAmBnY,KAAKoY,KAAKD,OClDvFnD,EAAoBqD,QAAKlD,ECGzB,IAAImD,EAAsBtD,EAAoBS,OAAEN,EAAW,CAAC,OAAO,WAAa,OAAOH,EAAoB,MAAQ,IACnHsD,EAAsBtD,EAAoBS,EAAE6C","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files/src/utils/davUtils.js","webpack:///nextcloud/apps/files/src/services/Templates.js","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files/src/utils/fileUtils.js","webpack://nextcloud/./apps/files/src/components/TemplatePreview.vue?8258","webpack://nextcloud/./apps/files/src/components/TemplatePreview.vue?81db","webpack://nextcloud/./apps/files/src/components/TemplatePreview.vue?c414","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/views/TemplatePicker.vue?6cbe","webpack://nextcloud/./apps/files/src/views/TemplatePicker.vue?afd8","webpack://nextcloud/./apps/files/src/views/TemplatePicker.vue?1f7b","webpack:///nextcloud/apps/files/src/templates.js","webpack:///nextcloud/apps/files/src/legacy/filelistSearch.js","webpack:///nextcloud/apps/files/src/logger.js","webpack:///nextcloud/apps/files/src/services/FileAction.ts","webpack:///nextcloud/apps/files/src/actions/deleteAction.ts","webpack:///nextcloud/apps/files/src/legacy/navigationMapper.js","webpack:///nextcloud/apps/files/src/services/Navigation.ts","webpack:///nextcloud/apps/files/src/services/ServiceWorker.js","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?2b80","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?2966","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?08cb","webpack:///nextcloud/apps/files/src/components/Setting.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files/src/components/Setting.vue","webpack://nextcloud/./apps/files/src/components/Setting.vue?98ea","webpack://nextcloud/./apps/files/src/components/Setting.vue?8d57","webpack:///nextcloud/apps/files/src/store/userconfig.ts","webpack:///nextcloud/apps/files/src/views/Settings.vue","webpack:///nextcloud/apps/files/src/views/Settings.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/views/Settings.vue?a515","webpack://nextcloud/./apps/files/src/views/Settings.vue?b81b","webpack://nextcloud/./apps/files/src/views/Settings.vue?84f7","webpack:///nextcloud/apps/files/src/views/Navigation.vue","webpack:///nextcloud/core/src/OCP/accessibility.js","webpack:///nextcloud/apps/files/src/views/Navigation.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/views/Navigation.vue?7ba1","webpack://nextcloud/./apps/files/src/views/Navigation.vue?74b9","webpack://nextcloud/./apps/files/src/views/Navigation.vue?8122","webpack:///nextcloud/apps/files/src/store/files.ts","webpack:///nextcloud/apps/files/src/store/paths.ts","webpack:///nextcloud/apps/files/src/store/selection.ts","webpack:///nextcloud/apps/files/src/store/sorting.ts","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?e59f","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?d357","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?e906","webpack:///nextcloud/apps/files/src/services/PreviewService.ts","webpack:///nextcloud/apps/files/src/store/actionsmenu.ts","webpack:///nextcloud/apps/files/src/components/CustomElementRender.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files/src/components/CustomElementRender.vue","webpack://nextcloud/./apps/files/src/components/CustomElementRender.vue?5f5c","webpack://nextcloud/./apps/files/src/components/CustomElementRender.vue?4ee7","webpack:///nextcloud/apps/files/src/components/CustomSvgIconRender.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files/src/components/CustomSvgIconRender.vue","webpack://nextcloud/./apps/files/src/components/CustomSvgIconRender.vue?822b","webpack://nextcloud/./apps/files/src/components/CustomSvgIconRender.vue?5641","webpack://nextcloud/./apps/files/src/components/CustomSvgIconRender.vue?2c34","webpack:///nextcloud/apps/files/src/components/FileEntry.vue","webpack:///nextcloud/apps/files/src/store/keyboard.ts","webpack:///nextcloud/apps/files/src/components/FileEntry.vue?vue&type=script&lang=ts&","webpack://nextcloud/./apps/files/src/components/FileEntry.vue?8ec7","webpack://nextcloud/./apps/files/src/components/FileEntry.vue?2fac","webpack://nextcloud/./apps/files/src/components/FileEntry.vue?da7c","webpack://nextcloud/./apps/files/src/components/FileEntry.vue?77f7","webpack:///nextcloud/apps/files/src/components/FilesListFooter.vue","webpack:///nextcloud/apps/files/src/components/FilesListFooter.vue?vue&type=script&lang=ts&","webpack://nextcloud/./apps/files/src/components/FilesListFooter.vue?489c","webpack://nextcloud/./apps/files/src/components/FilesListFooter.vue?80db","webpack://nextcloud/./apps/files/src/components/FilesListFooter.vue?a2f0","webpack:///nextcloud/apps/files/src/components/FilesListHeaderActions.vue","webpack:///nextcloud/apps/files/src/components/FilesListHeaderActions.vue?vue&type=script&lang=ts&","webpack://nextcloud/./apps/files/src/components/FilesListHeaderActions.vue?5d1b","webpack://nextcloud/./apps/files/src/components/FilesListHeaderActions.vue?9823","webpack://nextcloud/./apps/files/src/components/FilesListHeaderActions.vue?1b40","webpack:///nextcloud/apps/files/src/components/FilesListHeaderButton.vue","webpack:///nextcloud/apps/files/src/components/FilesListHeaderButton.vue?vue&type=script&lang=ts&","webpack://nextcloud/./apps/files/src/components/FilesListHeaderButton.vue?dfe5","webpack://nextcloud/./apps/files/src/components/FilesListHeaderButton.vue?5686","webpack://nextcloud/./apps/files/src/components/FilesListHeaderButton.vue?fb45","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue?vue&type=script&lang=ts&","webpack://nextcloud/./apps/files/src/components/FilesListHeader.vue?6cb5","webpack://nextcloud/./apps/files/src/components/FilesListHeader.vue?349b","webpack://nextcloud/./apps/files/src/components/FilesListHeader.vue?635d","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=script&lang=ts&","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?8577","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?3555","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?9d6c","webpack:///nextcloud/apps/files/src/views/FilesList.vue","webpack:///nextcloud/apps/files/src/views/FilesList.vue?vue&type=script&lang=ts&","webpack://nextcloud/./apps/files/src/views/FilesList.vue?da0a","webpack://nextcloud/./apps/files/src/views/FilesList.vue?1e5b","webpack://nextcloud/./apps/files/src/views/FilesList.vue?efeb","webpack:///nextcloud/apps/files/src/services/Settings.js","webpack:///nextcloud/apps/files/src/models/Setting.js","webpack:///nextcloud/apps/files/src/router/router.js","webpack:///nextcloud/apps/files/src/main.js","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/components/CustomSvgIconRender.vue?vue&type=style&index=0&id=6646d6a5&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/components/FileEntry.vue?vue&type=style&index=0&id=b676af6e&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListFooter.vue?vue&type=style&index=0&id=3a8b911c&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue?vue&type=style&index=0&id=2cb97ee2&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListHeaderActions.vue?vue&type=style&index=0&id=6d590bc4&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListHeaderButton.vue?vue&type=style&index=0&id=443029be&prod&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=style&index=0&id=e417a998&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue?vue&type=style&index=0&id=26c061ec&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue?vue&type=style&index=0&id=6c072a31&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/views/FilesList.vue?vue&type=style&index=0&id=f52708d2&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/views/Navigation.vue?vue&type=style&index=0&id=4238b71c&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/views/Settings.vue?vue&type=style&index=0&id=2e129f40&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue?vue&type=style&index=0&id=715b4161&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/components/FileEntry.vue?vue&type=style&index=1&id=b676af6e&prod&lang=css&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","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/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(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(function(key) { return __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};","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nexport const getRootPath = function() {\n\tif (getCurrentUser()) {\n\t\treturn generateRemoteUrl(`dav/files/${getCurrentUser().uid}`)\n\t} else {\n\t\treturn generateRemoteUrl('webdav').replace('/remote.php', '/public.php')\n\t}\n}\n\nexport const isPublic = function() {\n\treturn !getCurrentUser()\n}\n\nexport const getToken = function() {\n\treturn document.getElementById('sharingToken') && document.getElementById('sharingToken').value\n}\n\n/**\n * Return the current directory, fallback to root\n *\n * @return {string}\n */\nexport const getCurrentDirectory = function() {\n\tconst currentDirInfo = OCA?.Files?.App?.currentFileList?.dirInfo\n\t\t|| { path: '/', name: '' }\n\n\t// Make sure we don't have double slashes\n\treturn `${currentDirInfo.path}/${currentDirInfo.name}`.replace(/\\/\\//gi, '/')\n}\n","/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\n\nexport const getTemplates = async function() {\n\tconst response = await axios.get(generateOcsUrl('apps/files/api/v1/templates'))\n\treturn response.data.ocs.data\n}\n\n/**\n * Create a new file from a specified template\n *\n * @param {string} filePath The new file destination path\n * @param {string} templatePath The template source path\n * @param {string} templateType The template type e.g 'user'\n */\nexport const createFromTemplate = async function(filePath, templatePath, templateType) {\n\tconst response = await axios.post(generateOcsUrl('apps/files/api/v1/templates/create'), {\n\t\tfilePath,\n\t\ttemplatePath,\n\t\ttemplateType,\n\t})\n\treturn response.data.ocs.data\n}\n","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.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!./TemplatePreview.vue?vue&type=script&lang=js&\"","/**\n * @copyright Copyright (c) 2021 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\nconst encodeFilePath = function(path) {\n\tconst pathSections = (path.startsWith('/') ? path : `/${path}`).split('/')\n\tlet relativePath = ''\n\tpathSections.forEach((section) => {\n\t\tif (section !== '') {\n\t\t\trelativePath += '/' + encodeURIComponent(section)\n\t\t}\n\t})\n\treturn relativePath\n}\n\n/**\n * Extract dir and name from file path\n *\n * @param {string} path the full path\n * @return {string[]} [dirPath, fileName]\n */\nconst extractFilePaths = function(path) {\n\tconst pathSections = path.split('/')\n\tconst fileName = pathSections[pathSections.length - 1]\n\tconst dirPath = pathSections.slice(0, pathSections.length - 1).join('/')\n\treturn [dirPath, fileName]\n}\n\nexport { encodeFilePath, extractFilePaths }\n","\n 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!./TemplatePreview.vue?vue&type=style&index=0&id=6c072a31&prod&lang=scss&scoped=true&\";\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!./TemplatePreview.vue?vue&type=style&index=0&id=6c072a31&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TemplatePreview.vue?vue&type=template&id=6c072a31&scoped=true&\"\nimport script from \"./TemplatePreview.vue?vue&type=script&lang=js&\"\nexport * from \"./TemplatePreview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TemplatePreview.vue?vue&type=style&index=0&id=6c072a31&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6c072a31\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"template-picker__item\"},[_c('input',{staticClass:\"radio\",attrs:{\"id\":_vm.id,\"type\":\"radio\",\"name\":\"template-picker\"},domProps:{\"checked\":_vm.checked},on:{\"change\":_vm.onCheck}}),_vm._v(\" \"),_c('label',{staticClass:\"template-picker__label\",attrs:{\"for\":_vm.id}},[_c('div',{staticClass:\"template-picker__preview\",class:_vm.failedPreview ? 'template-picker__preview--failed' : ''},[_c('img',{staticClass:\"template-picker__image\",attrs:{\"src\":_vm.realPreviewUrl,\"alt\":\"\",\"draggable\":\"false\"},on:{\"error\":_vm.onFailure}})]),_vm._v(\" \"),_c('span',{staticClass:\"template-picker__title\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.nameWithoutExt)+\"\\n\\t\\t\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePicker.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!./TemplatePicker.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!./TemplatePicker.vue?vue&type=style&index=0&id=715b4161&prod&lang=scss&scoped=true&\";\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!./TemplatePicker.vue?vue&type=style&index=0&id=715b4161&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TemplatePicker.vue?vue&type=template&id=715b4161&scoped=true&\"\nimport script from \"./TemplatePicker.vue?vue&type=script&lang=js&\"\nexport * from \"./TemplatePicker.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TemplatePicker.vue?vue&type=style&index=0&id=715b4161&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"715b4161\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.opened)?_c('NcModal',{staticClass:\"templates-picker\",attrs:{\"clear-view-delay\":-1,\"size\":\"normal\"},on:{\"close\":_vm.close}},[_c('form',{staticClass:\"templates-picker__form\",style:(_vm.style),on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onSubmit.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('files', 'Pick a template for {name}', { name: _vm.nameWithoutExt })))]),_vm._v(\" \"),_c('ul',{staticClass:\"templates-picker__list\"},[_c('TemplatePreview',_vm._b({attrs:{\"checked\":_vm.checked === _vm.emptyTemplate.fileid},on:{\"check\":_vm.onCheck}},'TemplatePreview',_vm.emptyTemplate,false)),_vm._v(\" \"),_vm._l((_vm.provider.templates),function(template){return _c('TemplatePreview',_vm._b({key:template.fileid,attrs:{\"checked\":_vm.checked === template.fileid,\"ratio\":_vm.provider.ratio},on:{\"check\":_vm.onCheck}},'TemplatePreview',template,false))})],2),_vm._v(\" \"),_c('div',{staticClass:\"templates-picker__buttons\"},[_c('button',{on:{\"click\":_vm.close}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Cancel'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{staticClass:\"primary\",attrs:{\"type\":\"submit\",\"aria-label\":_vm.t('files', 'Create a new file with the selected template')},domProps:{\"value\":_vm.t('files', 'Create')}})])]),_vm._v(\" \"),(_vm.loading)?_c('NcEmptyContent',{staticClass:\"templates-picker__loading\",attrs:{\"icon\":\"icon-loading\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files', 'Creating file'))+\"\\n\\t\")]):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Julius Härtl \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 .\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentDirectory } from './utils/davUtils.js'\nimport axios from '@nextcloud/axios'\nimport Vue from 'vue'\n\nimport TemplatePickerView from './views/TemplatePicker.vue'\nimport { showError } from '@nextcloud/dialogs'\n\n// Set up logger\nconst logger = getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n\n// Add translates functions\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\n// Create document root\nconst TemplatePickerRoot = document.createElement('div')\nTemplatePickerRoot.id = 'template-picker'\ndocument.body.appendChild(TemplatePickerRoot)\n\n// Retrieve and init templates\nlet templates = loadState('files', 'templates', [])\nlet templatesPath = loadState('files', 'templates_path', false)\nlogger.debug('Templates providers', templates)\nlogger.debug('Templates folder', { templatesPath })\n\n// Init vue app\nconst View = Vue.extend(TemplatePickerView)\nconst TemplatePicker = new View({\n\tname: 'TemplatePicker',\n\tpropsData: {\n\t\tlogger,\n\t},\n})\nTemplatePicker.$mount('#template-picker')\n\n// Init template engine after load to make sure it's the last injected entry\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (!templatesPath) {\n\t\tlogger.debug('Templates folder not initialized')\n\t\tconst initTemplatesPlugin = {\n\t\t\tattach(menu) {\n\t\t\t\t// register the new menu entry\n\t\t\t\tmenu.addMenuEntry({\n\t\t\t\t\tid: 'template-init',\n\t\t\t\t\tdisplayName: t('files', 'Set up templates folder'),\n\t\t\t\t\ttemplateName: t('files', 'Templates'),\n\t\t\t\t\ticonClass: 'icon-template-add',\n\t\t\t\t\tfileType: 'file',\n\t\t\t\t\tactionHandler(name) {\n\t\t\t\t\t\tinitTemplatesFolder(name)\n\t\t\t\t\t\tmenu.removeMenuEntry('template-init')\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t},\n\t\t}\n\t\tOC.Plugins.register('OCA.Files.NewFileMenu', initTemplatesPlugin)\n\t}\n})\n\n// Init template files menu\ntemplates.forEach((provider, index) => {\n\tconst newTemplatePlugin = {\n\t\tattach(menu) {\n\t\t\tconst fileList = menu.fileList\n\n\t\t\t// only attach to main file list, public view is not supported yet\n\t\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// register the new menu entry\n\t\t\tmenu.addMenuEntry({\n\t\t\t\tid: `template-new-${provider.app}-${index}`,\n\t\t\t\tdisplayName: provider.label,\n\t\t\t\ttemplateName: provider.label + provider.extension,\n\t\t\t\ticonClass: provider.iconClass || 'icon-file',\n\t\t\t\tfileType: 'file',\n\t\t\t\tactionHandler(name) {\n\t\t\t\t\tTemplatePicker.open(name, provider)\n\t\t\t\t},\n\t\t\t})\n\t\t},\n\t}\n\tOC.Plugins.register('OCA.Files.NewFileMenu', newTemplatePlugin)\n})\n\n/**\n * Init the template directory\n *\n * @param {string} name the templates folder name\n */\nconst initTemplatesFolder = async function(name) {\n\tconst templatePath = (getCurrentDirectory() + `/${name}`).replace('//', '/')\n\ttry {\n\t\tlogger.debug('Initializing the templates directory', { templatePath })\n\t\tconst response = await axios.post(generateOcsUrl('apps/files/api/v1/templates/path'), {\n\t\t\ttemplatePath,\n\t\t\tcopySystemTemplates: true,\n\t\t})\n\n\t\t// Go to template directory\n\t\tOCA.Files.App.currentFileList.changeDirectory(templatePath, true, true)\n\n\t\ttemplates = response.data.ocs.data.templates\n\t\ttemplatesPath = response.data.ocs.data.template_path\n\t} catch (error) {\n\t\tlogger.error('Unable to initialize the templates directory')\n\t\tshowError(t('files', 'Unable to initialize the templates directory'))\n\t}\n}\n","/*\n * @copyright Copyright (c) 2021 Julius Härtl \n *\n * @author Julius Härtl \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 .\n *\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\n(function() {\n\n\tconst FilesPlugin = {\n\t\tattach(fileList) {\n\t\t\tsubscribe('nextcloud:unified-search.search', ({ query }) => {\n\t\t\t\tfileList.setFilter(query)\n\t\t\t})\n\t\t\tsubscribe('nextcloud:unified-search.reset', () => {\n\t\t\t\tthis.query = null\n\t\t\t\tfileList.setFilter('')\n\t\t\t})\n\n\t\t},\n\t}\n\n\twindow.OC.Plugins.register('OCA.Files.FileList', FilesPlugin)\n\n})()\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\nimport { Node } from '@nextcloud/files'\nimport logger from '../logger'\n\ndeclare global {\n\tinterface Window {\n\t\tOC: any;\n\t\t_nc_fileactions: FileAction[] | undefined;\n\t}\n}\n\n/**\n * TODO: remove and move to @nextcloud/files\n * @see https://github.com/nextcloud/nextcloud-files/pull/608\n */\ninterface FileActionData {\n\t/** Unique ID */\n\tid: string\n\t/** Translatable string displayed in the menu */\n\tdisplayName: (files: Node[], view) => string\n\t/** Svg as inline string. */\n\ticonSvgInline: (files: Node[], view) => string\n\t/** Condition wether this action is shown or not */\n\tenabled?: (files: Node[], view) => boolean\n\t/**\n\t * Function executed on single file action\n\t * @returns true if the action was executed, false otherwise\n\t * @throws Error if the action failed\n\t */\n\texec: (file: Node, view) => Promise,\n\t/**\n\t * Function executed on multiple files action\n\t * @returns true if the action was executed, false otherwise\n\t * @throws Error if the action failed\n\t */\n\texecBatch?: (files: Node[], view) => Promise\n\t/** This action order in the list */\n\torder?: number,\n\t/** Make this action the default */\n\tdefault?: boolean,\n\t/**\n\t * If true, the renderInline function will be called\n\t */\n\tinline?: (file: Node, view) => boolean,\n\t/**\n\t * If defined, the returned html element will be\n\t * appended before the actions menu.\n\t */\n\trenderInline?: (file: Node, view) => HTMLElement,\n}\n\nexport class FileAction {\n\n\tprivate _action: FileActionData\n\n\tconstructor(action: FileActionData) {\n\t\tthis.validateAction(action)\n\t\tthis._action = action\n\t}\n\n\tget id() {\n\t\treturn this._action.id\n\t}\n\n\tget displayName() {\n\t\treturn this._action.displayName\n\t}\n\n\tget iconSvgInline() {\n\t\treturn this._action.iconSvgInline\n\t}\n\n\tget enabled() {\n\t\treturn this._action.enabled\n\t}\n\n\tget exec() {\n\t\treturn this._action.exec\n\t}\n\n\tget execBatch() {\n\t\treturn this._action.execBatch\n\t}\n\n\tget order() {\n\t\treturn this._action.order\n\t}\n\n\tget default() {\n\t\treturn this._action.default\n\t}\n\n\tget inline() {\n\t\treturn this._action.inline\n\t}\n\n\tget renderInline() {\n\t\treturn this._action.renderInline\n\t}\n\n\tprivate validateAction(action: FileActionData) {\n\t\tif (!action.id || typeof action.id !== 'string') {\n\t\t\tthrow new Error('Invalid id')\n\t\t}\n\n\t\tif (!action.displayName || typeof action.displayName !== 'function') {\n\t\t\tthrow new Error('Invalid displayName function')\n\t\t}\n\n\t\tif (!action.iconSvgInline || typeof action.iconSvgInline !== 'function') {\n\t\t\tthrow new Error('Invalid iconSvgInline function')\n\t\t}\n\n\t\tif (!action.exec || typeof action.exec !== 'function') {\n\t\t\tthrow new Error('Invalid exec function')\n\t\t}\n\n\t\t// Optional properties --------------------------------------------\n\t\tif ('enabled' in action && typeof action.enabled !== 'function') {\n\t\t\tthrow new Error('Invalid enabled function')\n\t\t}\n\n\t\tif ('execBatch' in action && typeof action.execBatch !== 'function') {\n\t\t\tthrow new Error('Invalid execBatch function')\n\t\t}\n\n\t\tif ('order' in action && typeof action.order !== 'number') {\n\t\t\tthrow new Error('Invalid order')\n\t\t}\n\n\t\tif ('default' in action && typeof action.default !== 'boolean') {\n\t\t\tthrow new Error('Invalid default')\n\t\t}\n\n\t\tif ('inline' in action && typeof action.inline !== 'function') {\n\t\t\tthrow new Error('Invalid inline function')\n\t\t}\n\n\t\tif ('renderInline' in action && typeof action.renderInline !== 'function') {\n\t\t\tthrow new Error('Invalid renderInline function')\n\t\t}\n\t}\n\n}\n\nexport const registerFileAction = function(action: FileAction): void {\n\tif (typeof window._nc_fileactions === 'undefined') {\n\t\twindow._nc_fileactions = []\n\t\tlogger.debug('FileActions initialized')\n\t}\n\n\t// Check duplicates\n\tif (window._nc_fileactions.find(search => search.id === action.id)) {\n\t\tlogger.error(`FileAction ${action.id} already registered`, { action })\n\t\treturn\n\t}\n\n\twindow._nc_fileactions.push(action)\n}\n\nexport const getFileActions = function(): FileAction[] {\n\treturn window._nc_fileactions || []\n}\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\nimport { emit } from '@nextcloud/event-bus'\nimport { Permission, Node } from '@nextcloud/files'\nimport { translate as t } from '@nextcloud/l10n'\nimport axios from '@nextcloud/axios'\nimport TrashCan from '@mdi/svg/svg/trash-can.svg?raw'\n\nimport { registerFileAction, FileAction } from '../services/FileAction.ts'\nimport logger from '../logger.js'\n\nregisterFileAction(new FileAction({\n\tid: 'delete',\n\tdisplayName(nodes: Node[], view) {\n\t\treturn view.id === 'trashbin'\n\t\t\t? t('files_trashbin', 'Delete permanently')\n\t\t\t: t('files', 'Delete')\n\t},\n\ticonSvgInline: () => TrashCan,\n\n\tenabled(nodes: Node[]) {\n\t\treturn nodes.length > 0 && nodes\n\t\t\t.map(node => node.permissions)\n\t\t\t.every(permission => (permission & Permission.DELETE) !== 0)\n\t},\n\n\tasync exec(node: Node) {\n\t\ttry {\n\t\t\tawait axios.delete(node.source)\n\n\t\t\t// Let's delete even if it's moved to the trashbin\n\t\t\t// since it has been removed from the current view\n\t\t\t// and changing the view will trigger a reload anyway.\n\t\t\temit('files:file:deleted', node)\n\t\t\treturn true\n\t\t} catch (error) {\n\t\t\tlogger.error('Error while deleting a file', { error, source: node.source, node })\n\t\t\treturn false\n\t\t}\n\t},\n\tasync execBatch(nodes: Node[], view) {\n\t\treturn Promise.all(nodes.map(node => this.exec(node, view)))\n\t},\n\n\torder: 100,\n}))\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport logger from '../logger.js'\n\n/**\n * Fetch and register the legacy files views\n */\nexport default function() {\n\tconst legacyViews = Object.values(loadState('files', 'navigation', {}))\n\n\tif (legacyViews.length > 0) {\n\t\tlogger.debug('Legacy files views detected. Processing...', legacyViews)\n\t\tlegacyViews.forEach(view => {\n\t\t\tregisterLegacyView(view)\n\t\t\tif (view.sublist) {\n\t\t\t\tview.sublist.forEach(subview => registerLegacyView({ ...subview, parent: view.id }))\n\t\t\t}\n\t\t})\n\t}\n}\n\nconst registerLegacyView = function({ id, name, order, icon, parent, classes = '', expanded, params }) {\n\tOCP.Files.Navigation.register({\n\t\tid,\n\t\tname,\n\t\torder,\n\t\tparams,\n\t\tparent,\n\t\texpanded: expanded === true,\n\t\ticonClass: icon ? `icon-${icon}` : 'nav-icon-' + id,\n\t\tlegacy: true,\n\t\tsticky: classes.includes('pinned'),\n\t})\n}\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n/* eslint-disable */\nimport type { Folder, Node } from '@nextcloud/files'\nimport isSvg from 'is-svg'\n\nimport logger from '../logger.js'\n\nexport type ContentsWithRoot = {\n\tfolder: Folder,\n\tcontents: Node[]\n}\n\nexport interface Column {\n\t/** Unique column ID */\n\tid: string\n\t/** Translated column title */\n\ttitle: string\n\t/** The content of the cell. The element will be appended within */\n\trender: (node: Node, view: Navigation) => HTMLElement\n\t/** Function used to sort Nodes between them */\n\tsort?: (nodeA: Node, nodeB: Node) => number\n\t/** Custom summary of the column to display at the end of the list.\n\t Will not be displayed if nothing is provided */\n\tsummary?: (node: Node[], view: Navigation) => string\n}\n\nexport interface Navigation {\n\t/** Unique view ID */\n\tid: string\n\t/** Translated view name */\n\tname: string\n\t/**\n\t * Method return the content of the provided path\n\t * This ideally should be a cancellable promise.\n\t * promise.cancel(reason) will be called when the directory\n\t * change and the promise is not resolved yet.\n\t * You _must_ also return the current directory\n\t * information alongside with its content.\n\t */\n\tgetContents: (path: string) => Promise\n\t/** The view icon as an inline svg */\n\ticon: string\n\t/** The view order */\n\torder: number\n\t/** This view column(s). Name and actions are\n\tby default always included */\n\tcolumns?: Column[]\n\t/** The empty view element to render your empty content into */\n\temptyView?: (div: HTMLDivElement) => void\n\t/** The parent unique ID */\n\tparent?: string\n\t/** This view is sticky (sent at the bottom) */\n\tsticky?: boolean\n\t/** This view has children and is expanded or not */\n\texpanded?: boolean\n\n\t/**\n\t * Will be used as default if the user\n\t * haven't customized their sorting column\n\t * */\n\tdefaultSortKey?: string\n\n\t/**\n\t * This view is sticky a legacy view.\n\t * Here until all the views are migrated to Vue.\n\t * @deprecated It will be removed in a near future\n\t */\n\tlegacy?: boolean\n\t/**\n\t * An icon class. \n\t * @deprecated It will be removed in a near future\n\t */\n\ticonClass?: string\n}\n\nexport default class {\n\n\tprivate _views: Navigation[] = []\n\tprivate _currentView: Navigation | null = null\n\n\tconstructor() {\n\t\tlogger.debug('Navigation service initialized')\n\t}\n\n\tregister(view: Navigation) {\n\t\ttry {\n\t\t\tisValidNavigation(view)\n\t\t\tisUniqueNavigation(view, this._views)\n\t\t} catch (e) {\n\t\t\tif (e instanceof Error) {\n\t\t\t\tlogger.error(e.message, { view })\n\t\t\t}\n\t\t\tthrow e\n\t\t}\n\n\t\tif (view.legacy) {\n\t\t\tlogger.warn('Legacy view detected, please migrate to Vue')\n\t\t}\n\n\t\tif (view.iconClass) {\n\t\t\tview.legacy = true\n\t\t}\n\n\t\tthis._views.push(view)\n\t}\n\n\tget views(): Navigation[] {\n\t\treturn this._views\n\t}\n\n\tsetActive(view: Navigation | null) {\n\t\tthis._currentView = view\n\t}\n\n\tget active(): Navigation | null {\n\t\treturn this._currentView\n\t}\n\n}\n\n/**\n * Make sure the given view is unique\n * and not already registered.\n */\nconst isUniqueNavigation = function(view: Navigation, views: Navigation[]): boolean {\n\tif (views.find(search => search.id === view.id)) {\n\t\tthrow new Error(`Navigation id ${view.id} is already registered`)\n\t}\n\treturn true\n}\n\n/**\n * Typescript cannot validate an interface.\n * Please keep in sync with the Navigation interface requirements.\n */\nconst isValidNavigation = function(view: Navigation): boolean {\n\tif (!view.id || typeof view.id !== 'string') {\n\t\tthrow new Error('Navigation id is required and must be a string')\n\t}\n\n\tif (!view.name || typeof view.name !== 'string') {\n\t\tthrow new Error('Navigation name is required and must be a string')\n\t}\n\n\t/**\n\t * Legacy handle their content and icon differently\n\t * TODO: remove when support for legacy views is removed\n\t */\n\tif (!view.legacy) {\n\t\tif (!view.getContents || typeof view.getContents !== 'function') {\n\t\t\tthrow new Error('Navigation getContents is required and must be a function')\n\t\t}\n\n\t\tif (!view.icon || typeof view.icon !== 'string' || !isSvg(view.icon)) {\n\t\t\tthrow new Error('Navigation icon is required and must be a valid svg string')\n\t\t}\n\t}\n\n\tif (!('order' in view) || typeof view.order !== 'number') {\n\t\tthrow new Error('Navigation order is required and must be a number')\n\t}\n\n\t// Optional properties\n\tif (view.columns) {\n\t\tview.columns.forEach(isValidColumn)\n\t}\n\n\tif (view.emptyView && typeof view.emptyView !== 'function') {\n\t\tthrow new Error('Navigation emptyView must be a function')\n\t}\n\n\tif (view.parent && typeof view.parent !== 'string') {\n\t\tthrow new Error('Navigation parent must be a string')\n\t}\n\n\tif ('sticky' in view && typeof view.sticky !== 'boolean') {\n\t\tthrow new Error('Navigation sticky must be a boolean')\n\t}\n\n\tif ('expanded' in view && typeof view.expanded !== 'boolean') {\n\t\tthrow new Error('Navigation expanded must be a boolean')\n\t}\n\n\tif (view.defaultSortKey && typeof view.defaultSortKey !== 'string') {\n\t\tthrow new Error('Navigation defaultSortKey must be a string')\n\t}\n\n\treturn true\n}\n\n/**\n * Typescript cannot validate an interface.\n * Please keep in sync with the Column interface requirements.\n */\nconst isValidColumn = function(column: Column): boolean {\n\tif (!column.id || typeof column.id !== 'string') {\n\t\tthrow new Error('A column id is required')\n\t}\n\n\tif (!column.title || typeof column.title !== 'string') {\n\t\tthrow new Error('A column title is required')\n\t}\n\n\tif (!column.render || typeof column.render !== 'function') {\n\t\tthrow new Error('A render function is required')\n\t}\n\n\t// Optional properties\n\tif (column.sort && typeof column.sort !== 'function') {\n\t\tthrow new Error('Column sortFunction must be a function')\n\t}\n\n\tif (column.summary && typeof column.summary !== 'function') {\n\t\tthrow new Error('Column summary must be a function')\n\t}\n\n\treturn true\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim \n *\n * @author Gary Kim \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 .\n *\n */\nimport { generateUrl } from '@nextcloud/router'\nimport logger from '../logger.js'\n\nexport default () => {\n\tif ('serviceWorker' in navigator) {\n\t\t// Use the window load event to keep the page load performant\n\t\twindow.addEventListener('load', async () => {\n\t\t\ttry {\n\t\t\t\tconst url = generateUrl('/apps/files/preview-service-worker.js', {}, { noRewrite: true })\n\t\t\t\tconst registration = await navigator.serviceWorker.register(url, { scope: '/' })\n\t\t\t\tlogger.debug('SW registered: ', { registration })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('SW registration failed: ', { error })\n\t\t\t}\n\t\t})\n\t} else {\n\t\tlogger.debug('Service Worker is not enabled on this browser.')\n\t}\n}\n","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.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!./NavigationQuota.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!./NavigationQuota.vue?vue&type=style&index=0&id=26c061ec&prod&lang=scss&scoped=true&\";\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!./NavigationQuota.vue?vue&type=style&index=0&id=26c061ec&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NavigationQuota.vue?vue&type=template&id=26c061ec&scoped=true&\"\nimport script from \"./NavigationQuota.vue?vue&type=script&lang=js&\"\nexport * from \"./NavigationQuota.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NavigationQuota.vue?vue&type=style&index=0&id=26c061ec&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"26c061ec\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.storageStats)?_c('NcAppNavigationItem',{staticClass:\"app-navigation-entry__settings-quota\",class:{ 'app-navigation-entry__settings-quota--not-unlimited': _vm.storageStats.quota >= 0},attrs:{\"aria-label\":_vm.t('files', 'Storage informations'),\"loading\":_vm.loadingStorageStats,\"name\":_vm.storageStatsTitle,\"title\":_vm.storageStatsTooltip,\"data-cy-files-navigation-settings-quota\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.debounceUpdateStorageStats.apply(null, arguments)}}},[_c('ChartPie',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"}),_vm._v(\" \"),(_vm.storageStats.quota >= 0)?_c('NcProgressBar',{attrs:{\"slot\":\"extra\",\"error\":_vm.storageStats.relative > 80,\"value\":Math.min(_vm.storageStats.relative, 100)},slot:\"extra\"}):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.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!./Setting.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./Setting.vue?vue&type=template&id=03406edc&\"\nimport script from \"./Setting.vue?vue&type=script&lang=js&\"\nexport * from \"./Setting.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n/* eslint-disable */\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateUrl } from '@nextcloud/router'\nimport { defineStore } from 'pinia'\nimport Vue from 'vue'\nimport axios from '@nextcloud/axios'\nimport type { UserConfig, UserConfigStore } from '../types.ts'\nimport { emit, subscribe } from '@nextcloud/event-bus'\n\nconst userConfig = loadState('files', 'config', {\n\tshow_hidden: false,\n\tcrop_image_previews: true,\n}) as UserConfig\n\nexport const useUserConfigStore = () => {\n\tconst store = defineStore('userconfig', {\n\t\tstate: () => ({\n\t\t\tuserConfig,\n\t\t} as UserConfigStore),\n\n\t\tactions: {\n\t\t\t/**\n\t\t\t * Update the user config local store\n\t\t\t */\n\t\t\tonUpdate(key: string, value: boolean) {\n\t\t\t\tVue.set(this.userConfig, key, value)\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Update the user config local store AND on server side\n\t\t\t */\n\t\t\tasync update(key: string, value: boolean) {\n\t\t\t\tawait axios.post(generateUrl('/apps/files/api/v1/config/' + key), {\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\n\t\t\t\temit('files:config:updated', { key, value })\n\t\t\t}\n\t\t}\n\t})\n\n\tconst userConfigStore = store()\n\n\t// Make sure we only register the listeners once\n\tif (!userConfigStore._initialized) {\n\t\tsubscribe('files:config:updated', function({ key, value }: { key: string, value: boolean }) {\n\t\t\tuserConfigStore.onUpdate(key, value)\n\t\t})\n\t\tuserConfigStore._initialized = true\n\t}\n\n\treturn userConfigStore\n}\n\n","\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.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!./Settings.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!./Settings.vue?vue&type=style&index=0&id=2e129f40&prod&lang=scss&scoped=true&\";\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!./Settings.vue?vue&type=style&index=0&id=2e129f40&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=2e129f40&scoped=true&\"\nimport script from \"./Settings.vue?vue&type=script&lang=js&\"\nexport * from \"./Settings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Settings.vue?vue&type=style&index=0&id=2e129f40&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2e129f40\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSettingsDialog',{attrs:{\"open\":_vm.open,\"show-navigation\":true,\"title\":_vm.t('files', 'Files settings')},on:{\"update:open\":_vm.onClose}},[_c('NcAppSettingsSection',{attrs:{\"id\":\"settings\",\"title\":_vm.t('files', 'Files settings')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.show_hidden},on:{\"update:checked\":function($event){return _vm.setConfig('show_hidden', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Show hidden files'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.crop_image_previews},on:{\"update:checked\":function($event){return _vm.setConfig('crop_image_previews', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Crop image previews'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.settings.length !== 0)?_c('NcAppSettingsSection',{attrs:{\"id\":\"more-settings\",\"title\":_vm.t('files', 'Additional settings')}},[_vm._l((_vm.settings),function(setting){return [_c('Setting',{key:setting.name,attrs:{\"el\":setting.el}})]})],2):_vm._e(),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"webdav\",\"title\":_vm.t('files', 'WebDAV')}},[_c('NcInputField',{attrs:{\"id\":\"webdav-url-input\",\"show-trailing-button\":true,\"success\":_vm.webdavUrlCopied,\"trailing-button-label\":_vm.t('files', 'Copy to clipboard'),\"value\":_vm.webdavUrl,\"readonly\":\"readonly\",\"type\":\"url\"},on:{\"focus\":function($event){return $event.target.select()},\"trailing-button-click\":_vm.copyCloudId},scopedSlots:_vm._u([{key:\"trailing-button-icon\",fn:function(){return [_c('Clipboard',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.webdavDocs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Use this address to access your Files via WebDAV'))+\" ↗\\n\\t\\t\\t\")])]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.appPasswordUrl}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'If you have enabled 2FA, you must create and use a new app password by clicking here.'))+\" ↗\\n\\t\\t\\t\")])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","/**\n * @copyright Copyright (c) 2022 Joas Schilling \n *\n * @author Joas Schilling \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 .\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\n/**\n * Set the page heading\n *\n * @param {string} heading page title from the history api\n * @since 27.0.0\n */\nexport function setPageHeading(heading) {\n\tconst headingEl = document.getElementById('page-heading-level-1')\n\tif (headingEl) {\n\t\theadingEl.textContent = heading\n\t}\n}\nexport default {\n\t/**\n\t * @return {boolean} Whether the user opted-out of shortcuts so that they should not be registered\n\t */\n\tdisableKeyboardShortcuts() {\n\t\treturn loadState('theming', 'shortcutsDisabled', false)\n\t},\n\tsetPageHeading,\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.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!./Navigation.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!./Navigation.vue?vue&type=style&index=0&id=4238b71c&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!./Navigation.vue?vue&type=style&index=0&id=4238b71c&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Navigation.vue?vue&type=template&id=4238b71c&scoped=true&\"\nimport script from \"./Navigation.vue?vue&type=script&lang=js&\"\nexport * from \"./Navigation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navigation.vue?vue&type=style&index=0&id=4238b71c&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 \"4238b71c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppNavigation',{attrs:{\"data-cy-files-navigation\":\"\"},scopedSlots:_vm._u([{key:\"list\",fn:function(){return _vm._l((_vm.parentViews),function(view){return _c('NcAppNavigationItem',{key:view.id,attrs:{\"allow-collapse\":true,\"data-cy-files-navigation-item\":view.id,\"icon\":view.iconClass,\"open\":view.expanded,\"pinned\":view.sticky,\"title\":view.name,\"to\":_vm.generateToNavigation(view)},on:{\"update:open\":function($event){return _vm.onToggleExpand(view)}}},[(view.icon)?_c('NcIconSvgWrapper',{attrs:{\"slot\":\"icon\",\"svg\":view.icon},slot:\"icon\"}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.childViews[view.id]),function(child){return _c('NcAppNavigationItem',{key:child.id,attrs:{\"data-cy-files-navigation-item\":child.id,\"exact\":true,\"icon\":child.iconClass,\"title\":child.name,\"to\":_vm.generateToNavigation(child)}},[(view.icon)?_c('NcIconSvgWrapper',{attrs:{\"slot\":\"icon\",\"svg\":view.icon},slot:\"icon\"}):_vm._e()],1)})],2)})},proxy:true},{key:\"footer\",fn:function(){return [_c('ul',{staticClass:\"app-navigation-entry__settings\"},[_c('NavigationQuota'),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"aria-label\":_vm.t('files', 'Open the files app settings'),\"title\":_vm.t('files', 'Files settings'),\"data-cy-files-navigation-settings-button\":\"\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openSettings.apply(null, arguments)}}},[_c('Cog',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"})],1)],1)]},proxy:true}])},[_vm._v(\" \"),_vm._v(\" \"),_c('SettingsModal',{attrs:{\"open\":_vm.settingsOpened,\"data-cy-files-navigation-settings\":\"\"},on:{\"close\":_vm.onSettingsClose}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n/* eslint-disable */\nimport type { Folder, Node } from '@nextcloud/files'\nimport type { FilesStore, RootsStore, RootOptions, Service, FilesState } from '../types.ts'\n\nimport { defineStore } from 'pinia'\nimport { subscribe } from '@nextcloud/event-bus'\nimport Vue from 'vue'\nimport logger from '../logger'\nimport { FileId } from '../types'\n\nexport const useFilesStore = () => {\n\tconst store = defineStore('files', {\n\t\tstate: (): FilesState => ({\n\t\t\tfiles: {} as FilesStore,\n\t\t\troots: {} as RootsStore,\n\t\t}),\n\n\t\tgetters: {\n\t\t\t/**\n\t\t\t * Get a file or folder by id\n\t\t\t */\n\t\t\tgetNode: (state) => (id: FileId): Node|undefined => state.files[id],\n\n\t\t\t/**\n\t\t\t * Get a list of files or folders by their IDs\n\t\t\t * Does not return undefined values\n\t\t\t */\n\t\t\tgetNodes: (state) => (ids: FileId[]): Node[] => ids\n\t\t\t\t.map(id => state.files[id])\n\t\t\t\t.filter(Boolean),\n\t\t\t/**\n\t\t\t * Get a file or folder by id\n\t\t\t */\n\t\t\tgetRoot: (state) => (service: Service): Folder|undefined => state.roots[service],\n\t\t},\n\n\t\tactions: {\n\t\t\tupdateNodes(nodes: Node[]) {\n\t\t\t\t// Update the store all at once\n\t\t\t\tconst files = nodes.reduce((acc, node) => {\n\t\t\t\t\tif (!node.attributes.fileid) {\n\t\t\t\t\t\tlogger.warn('Trying to update/set a node without fileid', node)\n\t\t\t\t\t\treturn acc\n\t\t\t\t\t}\n\t\t\t\t\tacc[node.attributes.fileid] = node\n\t\t\t\t\treturn acc\n\t\t\t\t}, {} as FilesStore)\n\n\t\t\t\tVue.set(this, 'files', {...this.files, ...files})\n\t\t\t},\n\n\t\t\tdeleteNodes(nodes: Node[]) {\n\t\t\t\tnodes.forEach(node => {\n\t\t\t\t\tif (node.fileid) {\n\t\t\t\t\t\tVue.delete(this.files, node.fileid)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\n\t\t\tsetRoot({ service, root }: RootOptions) {\n\t\t\t\tVue.set(this.roots, service, root)\n\t\t\t},\n\n\t\t\tonDeletedNode(node: Node) {\n\t\t\t\tthis.deleteNodes([node])\n\t\t\t},\n\t\t}\n\t})\n\n\tconst fileStore = store()\n\t// Make sure we only register the listeners once\n\tif (!fileStore._initialized) {\n\t\t// subscribe('files:file:created', fileStore.onCreatedNode)\n\t\tsubscribe('files:file:deleted', fileStore.onDeletedNode)\n\t\t// subscribe('files:file:moved', fileStore.onMovedNode)\n\t\t// subscribe('files:file:updated', fileStore.onUpdatedNode)\n\n\t\t// subscribe('files:folder:created', fileStore.onCreatedNode)\n\t\tsubscribe('files:folder:deleted', fileStore.onDeletedNode)\n\t\t// subscribe('files:folder:moved', fileStore.onMovedNode)\n\t\t// subscribe('files:folder:updated', fileStore.onUpdatedNode)\n\n\t\tfileStore._initialized = true\n\t}\n\n\treturn fileStore\n}\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n/* eslint-disable */\nimport type { PathOptions, ServicesState } from '../types.ts'\n\nimport { defineStore } from 'pinia'\nimport Vue from 'vue'\nimport { subscribe } from '@nextcloud/event-bus'\nimport { FileId } from '../types'\n\nexport const usePathsStore = () => {\n\tconst store = defineStore('paths', {\n\t\tstate: (): ServicesState => ({}),\n\n\t\tgetters: {\n\t\t\tgetPath: (state) => {\n\t\t\t\treturn (service: string, path: string): FileId|undefined => {\n\t\t\t\t\tif (!state[service]) {\n\t\t\t\t\t\treturn undefined\n\t\t\t\t\t}\n\t\t\t\t\treturn state[service][path]\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\n\t\tactions: {\n\t\t\taddPath(payload: PathOptions) {\n\t\t\t\t// If it doesn't exists, init the service state\n\t\t\t\tif (!this[payload.service]) {\n\t\t\t\t\tVue.set(this, payload.service, {})\n\t\t\t\t}\n\n\t\t\t\t// Now we can set the provided path\n\t\t\t\tVue.set(this[payload.service], payload.path, payload.fileid)\n\t\t\t},\n\t\t}\n\t})\n\n\tconst pathsStore = store()\n\t// Make sure we only register the listeners once\n\tif (!pathsStore._initialized) {\n\t\t// TODO: watch folders to update paths?\n\t\t// subscribe('files:folder:created', pathsStore.onCreatedNode)\n\t\t// subscribe('files:folder:deleted', pathsStore.onDeletedNode)\n\t\t// subscribe('files:folder:moved', pathsStore.onMovedNode)\n\n\t\tpathsStore._initialized = true\n\t}\n\n\treturn pathsStore\n}\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n/* eslint-disable */\nimport { defineStore } from 'pinia'\nimport Vue from 'vue'\nimport { FileId, SelectionStore } from '../types'\n\nexport const useSelectionStore = defineStore('selection', {\n\tstate: () => ({\n\t\tselected: [],\n\t\tlastSelection: [],\n\t\tlastSelectedIndex: null,\n\t} as SelectionStore),\n\n\tactions: {\n\t\t/**\n\t\t * Set the selection of fileIds\n\t\t */\n\t\tset(selection = [] as FileId[]) {\n\t\t\tVue.set(this, 'selected', selection)\n\t\t},\n\n\t\t/**\n\t\t * Set the last selected index\n\t\t */\n\t\tsetLastIndex(lastSelectedIndex = null as FileId | null) {\n\t\t\t// Update the last selection if we provided a new selection starting point\n\t\t\tVue.set(this, 'lastSelection', lastSelectedIndex ? this.selected : [])\n\t\t\tVue.set(this, 'lastSelectedIndex', lastSelectedIndex)\n\t\t},\n\n\t\t/**\n\t\t * Reset the selection\n\t\t */\n\t\treset() {\n\t\t\tVue.set(this, 'selected', [])\n\t\t\tVue.set(this, 'lastSelection', [])\n\t\t\tVue.set(this, 'lastSelectedIndex', null)\n\t\t}\n\t}\n})\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n/* eslint-disable */\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateUrl } from '@nextcloud/router'\nimport { defineStore } from 'pinia'\nimport Vue from 'vue'\nimport axios from '@nextcloud/axios'\nimport type { direction, SortingStore } from '../types.ts'\n\nconst saveUserConfig = (mode: string, direction: direction, view: string) => {\n\treturn axios.post(generateUrl('/apps/files/api/v1/sorting'), {\n\t\tmode,\n\t\tdirection,\n\t\tview,\n\t})\n}\n\nconst filesSortingConfig = loadState('files', 'filesSortingConfig', {}) as SortingStore\n\nexport const useSortingStore = defineStore('sorting', {\n\tstate: () => ({\n\t\tfilesSortingConfig,\n\t}),\n\n\tgetters: {\n\t\tisAscSorting: (state) => (view: string = 'files') => state.filesSortingConfig[view]?.direction !== 'desc',\n\t\tgetSortingMode: (state) => (view: string = 'files') => state.filesSortingConfig[view]?.mode,\n\t},\n\n\tactions: {\n\t\t/**\n\t\t * Set the sorting key AND sort by ASC\n\t\t * The key param must be a valid key of a File object\n\t\t * If not found, will be searched within the File attributes\n\t\t */\n\t\tsetSortingBy(key: string = 'basename', view: string = 'files') {\n\t\t\tconst config = this.filesSortingConfig[view] || {}\n\t\t\tconfig.mode = key\n\t\t\tconfig.direction = 'asc'\n\n\t\t\t// Save new config\n\t\t\tVue.set(this.filesSortingConfig, view, config)\n\t\t\tsaveUserConfig(config.mode, config.direction, view)\n\t\t},\n\n\t\t/**\n\t\t * Toggle the sorting direction\n\t\t */\n\t\ttoggleSortingDirection(view: string = 'files') {\n\t\t\tconst config = this.filesSortingConfig[view] || { 'direction': 'asc' }\n\t\t\tconst newDirection = config.direction === 'asc' ? 'desc' : 'asc'\n\t\t\tconfig.direction = newDirection\n\n\t\t\t// Save new config\n\t\t\tVue.set(this.filesSortingConfig, view, config)\n\t\t\tsaveUserConfig(config.mode, config.direction, view)\n\t\t}\n\t}\n})\n\n","\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.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!./BreadCrumbs.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!./BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&\";\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!./BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BreadCrumbs.vue?vue&type=template&id=68b3b20b&scoped=true&\"\nimport script from \"./BreadCrumbs.vue?vue&type=script&lang=js&\"\nexport * from \"./BreadCrumbs.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"68b3b20b\",\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('NcBreadcrumbs',{attrs:{\"data-cy-files-content-breadcrumbs\":\"\"}},_vm._l((_vm.sections),function(section,index){return _c('NcBreadcrumb',_vm._b({key:section.dir,attrs:{\"aria-label\":_vm.ariaLabel(section),\"title\":_vm.ariaLabel(section)},nativeOn:{\"click\":function($event){return _vm.onClick(section.to)}},scopedSlots:_vm._u([(index === 0)?{key:\"icon\",fn:function(){return [_c('Home',{attrs:{\"size\":20}})]},proxy:true}:null],null,true)},'NcBreadcrumb',section,false))}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\n// The preview service worker cache name (see webpack config)\nconst SWCacheName = 'previews'\n\n/**\n * Check if the preview is already cached by the service worker\n */\nexport const isCachedPreview = function(previewUrl: string) {\n\treturn caches.open(SWCacheName)\n\t\t.then(function(cache) {\n\t\t\treturn cache.match(previewUrl)\n\t\t\t\t.then(function(response) {\n\t\t\t\t\treturn !!response\n\t\t\t\t})\n\t\t})\n}\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n/* eslint-disable */\nimport { defineStore } from 'pinia'\nimport Vue from 'vue'\nimport type { ActionsMenuStore } from '../types'\n\nexport const useActionsMenuStore = defineStore('actionsmenu', {\n\tstate: () => ({\n\t\topened: null,\n\t} as ActionsMenuStore),\n})\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.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!./CustomElementRender.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./CustomElementRender.vue?vue&type=template&id=2c07e380&\"\nimport script from \"./CustomElementRender.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomElementRender.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomSvgIconRender.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!./CustomSvgIconRender.vue?vue&type=script&lang=js&\"","\n\n\n\n\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!./CustomSvgIconRender.vue?vue&type=style&index=0&id=6646d6a5&prod&lang=scss&scoped=true&\";\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!./CustomSvgIconRender.vue?vue&type=style&index=0&id=6646d6a5&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CustomSvgIconRender.vue?vue&type=template&id=6646d6a5&scoped=true&\"\nimport script from \"./CustomSvgIconRender.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomSvgIconRender.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CustomSvgIconRender.vue?vue&type=style&index=0&id=6646d6a5&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6646d6a5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"custom-svg-icon\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n/* eslint-disable */\nimport { defineStore } from 'pinia'\nimport Vue from 'vue'\n\n/**\n * Observe various events and save the current\n * special keys states. Useful for checking the\n * current status of a key when executing a method.\n */\nexport const useKeyboardStore = () => {\n\tconst store = defineStore('keyboard', {\n\t\tstate: () => ({\t\t\t\n\t\t\taltKey: false,\n\t\t\tctrlKey: false,\n\t\t\tmetaKey: false,\n\t\t\tshiftKey: false,\n\t\t}),\n\n\t\tactions: {\n\t\t\tonEvent(event: MouseEvent | KeyboardEvent) {\n\t\t\t\tif (!event) {\n\t\t\t\t\tevent = window.event as MouseEvent | KeyboardEvent\n\t\t\t\t}\n\t\t\t\tVue.set(this, 'altKey', !!event.altKey)\n\t\t\t\tVue.set(this, 'ctrlKey', !!event.ctrlKey)\n\t\t\t\tVue.set(this, 'metaKey', !!event.metaKey)\n\t\t\t\tVue.set(this, 'shiftKey', !!event.shiftKey)\n\t\t\t},\n\t\t}\n\t})\n\n\tconst keyboardStore = store()\n\t// Make sure we only register the listeners once\n\tif (!keyboardStore._initialized) {\n\t\twindow.addEventListener('keydown', keyboardStore.onEvent)\n\t\twindow.addEventListener('keyup', keyboardStore.onEvent)\n\t\twindow.addEventListener('mousemove', keyboardStore.onEvent)\n\n\t\tkeyboardStore._initialized = true\n\t}\n\n\treturn keyboardStore\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.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!./FileEntry.vue?vue&type=style&index=0&id=b676af6e&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!./FileEntry.vue?vue&type=style&index=0&id=b676af6e&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\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/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=1&id=b676af6e&prod&lang=css&\";\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/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=1&id=b676af6e&prod&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntry.vue?vue&type=template&id=b676af6e&scoped=true&\"\nimport script from \"./FileEntry.vue?vue&type=script&lang=ts&\"\nexport * from \"./FileEntry.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FileEntry.vue?vue&type=style&index=0&id=b676af6e&prod&scoped=true&lang=scss&\"\nimport style1 from \"./FileEntry.vue?vue&type=style&index=1&id=b676af6e&prod&lang=css&\"\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 \"b676af6e\",\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('Fragment',[_c('td',{staticClass:\"files-list__row-checkbox\"},[(_vm.active)?_c('NcCheckboxRadioSwitch',{attrs:{\"aria-label\":_vm.t('files', 'Select the row for {displayName}', { displayName: _vm.displayName }),\"checked\":_vm.selectedFiles,\"value\":_vm.fileid,\"name\":\"selectedFiles\"},on:{\"update:checked\":_vm.onSelectionChange}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\"},[_c('a',_vm._b({ref:\"name\"},'a',_vm.linkTo,false),[_c('span',{staticClass:\"files-list__row-icon\"},[(_vm.source.type === 'folder')?_c('FolderIcon'):(_vm.previewUrl && !_vm.backgroundFailed)?_c('span',{ref:\"previewImg\",staticClass:\"files-list__row-icon-preview\",style:({ backgroundImage: _vm.backgroundImage })}):(_vm.mimeIconUrl)?_c('span',{staticClass:\"files-list__row-icon-preview files-list__row-icon-preview--mime\",style:({ backgroundImage: _vm.mimeIconUrl })}):_c('FileIcon')],1),_vm._v(\" \"),_c('span',{staticClass:\"files-list__row-name-text\"},[_vm._v(_vm._s(_vm.displayName))])])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-actions\",class:`files-list__row-actions-${_vm.uniqueId}`},[(_vm.active)?_c('NcActions',{ref:\"actionsMenu\",attrs:{\"disabled\":_vm.source._loading,\"force-title\":true,\"inline\":_vm.enabledInlineActions.length,\"open\":_vm.openedMenu},on:{\"update:open\":function($event){_vm.openedMenu=$event}}},_vm._l((_vm.enabledMenuActions),function(action){return _c('NcActionButton',{key:action.id,class:'files-list__row-action-' + action.id,on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('CustomSvgIconRender',{attrs:{\"svg\":action.iconSvgInline([_vm.source], _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(action.displayName([_vm.source], _vm.currentView))+\"\\n\\t\\t\\t\")])}),1):_vm._e()],1),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__row-size\",style:({ opacity: _vm.sizeOpacity })},[_c('span',[_vm._v(_vm._s(_vm.size))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('td',{key:column.id,staticClass:\"files-list__row-column-custom\",class:`files-list__row-${_vm.currentView?.id}-${column.id}`},[(_vm.active)?_c('CustomElementRender',{attrs:{\"current-view\":_vm.currentView,\"render\":column.render,\"source\":_vm.source}}):_vm._e()],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.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!./FilesListFooter.vue?vue&type=style&index=0&id=3a8b911c&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!./FilesListFooter.vue?vue&type=style&index=0&id=3a8b911c&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListFooter.vue?vue&type=template&id=3a8b911c&scoped=true&\"\nimport script from \"./FilesListFooter.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListFooter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListFooter.vue?vue&type=style&index=0&id=3a8b911c&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 \"3a8b911c\",\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('tr',[_c('th',{staticClass:\"files-list__row-checkbox\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('files', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\"},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.summary))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-size\"},[_c('span',[_vm._v(_vm._s(_vm.totalSize))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column)},[_c('span',[_vm._v(_vm._s(column.summary?.(_vm.nodes, _vm.currentView)))])])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.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!./FilesListHeaderActions.vue?vue&type=style&index=0&id=6d590bc4&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!./FilesListHeaderActions.vue?vue&type=style&index=0&id=6d590bc4&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListHeaderActions.vue?vue&type=template&id=6d590bc4&scoped=true&\"\nimport script from \"./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListHeaderActions.vue?vue&type=style&index=0&id=6d590bc4&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 \"6d590bc4\",\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('th',{staticClass:\"files-list__column files-list__row-actions-batch\",attrs:{\"colspan\":\"2\"}},[_c('NcActions',{ref:\"actionsMenu\",attrs:{\"disabled\":!!_vm.loading || _vm.areSomeNodesLoading,\"force-title\":true,\"inline\":3,\"open\":_vm.openedMenu},on:{\"update:open\":function($event){_vm.openedMenu=$event}}},_vm._l((_vm.enabledActions),function(action){return _c('NcActionButton',{key:action.id,class:'files-list__row-actions-batch-' + action.id,on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('CustomSvgIconRender',{attrs:{\"svg\":action.iconSvgInline(_vm.nodes, _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_vm.nodes, _vm.currentView))+\"\\n\\t\\t\")])}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.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!./FilesListHeaderButton.vue?vue&type=style&index=0&id=443029be&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!./FilesListHeaderButton.vue?vue&type=style&index=0&id=443029be&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListHeaderButton.vue?vue&type=template&id=443029be&\"\nimport script from \"./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListHeaderButton.vue?vue&type=style&index=0&id=443029be&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,_setup=_vm._self._setupProxy;return _c('NcButton',{staticClass:\"files-list__column-sort-button\",class:{'files-list__column-sort-button--active': _vm.sortingMode === _vm.mode},attrs:{\"aria-label\":_vm.sortAriaLabel(_vm.name),\"type\":\"tertiary\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleSortBy(_vm.mode)}}},[(_vm.sortingMode !== _vm.mode || _vm.isAscSorting)?_c('MenuUp',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}):_c('MenuDown',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\"+_vm._s(_vm.name)+\"\\n\")],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.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!./FilesListHeader.vue?vue&type=style&index=0&id=2cb97ee2&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!./FilesListHeader.vue?vue&type=style&index=0&id=2cb97ee2&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListHeader.vue?vue&type=template&id=2cb97ee2&scoped=true&\"\nimport script from \"./FilesListHeader.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListHeader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListHeader.vue?vue&type=style&index=0&id=2cb97ee2&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 \"2cb97ee2\",\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('tr',[_c('th',{staticClass:\"files-list__column files-list__row-checkbox\"},[_c('NcCheckboxRadioSwitch',_vm._b({on:{\"update:checked\":_vm.onToggleAll}},'NcCheckboxRadioSwitch',_vm.selectAllBind,false))],1),_vm._v(\" \"),(!_vm.isNoneSelected)?_c('FilesListHeaderActions',{attrs:{\"current-view\":_vm.currentView,\"selected-nodes\":_vm.selectedNodes}}):[_c('th',{staticClass:\"files-list__column files-list__row-name files-list__column--sortable\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleSortBy('basename')}}},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('FilesListHeaderButton',{attrs:{\"name\":_vm.t('files', 'Name'),\"mode\":\"basename\"}})],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-size\",class:{'files-list__column--sortable': _vm.isSizeAvailable}},[_c('FilesListHeaderButton',{attrs:{\"name\":_vm.t('files', 'Size'),\"mode\":\"size\"}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column)},[(!!column.sort)?_c('FilesListHeaderButton',{attrs:{\"name\":column.title,\"mode\":column.id}}):_c('span',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(column.title)+\"\\n\\t\\t\\t\")])],1)})]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts&\"","\n\n\n\n\n\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!./FilesListVirtual.vue?vue&type=style&index=0&id=e417a998&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!./FilesListVirtual.vue?vue&type=style&index=0&id=e417a998&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListVirtual.vue?vue&type=template&id=e417a998&scoped=true&\"\nimport script from \"./FilesListVirtual.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListVirtual.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListVirtual.vue?vue&type=style&index=0&id=e417a998&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 \"e417a998\",\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('RecycleScroller',{ref:\"recycleScroller\",staticClass:\"files-list\",attrs:{\"key-field\":\"source\",\"items\":_vm.nodes,\"item-size\":55,\"table-mode\":true,\"item-class\":\"files-list__row\",\"item-tag\":\"tr\",\"list-class\":\"files-list__body\",\"list-tag\":\"tbody\",\"role\":\"table\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ item, active, index }){return [_c('FileEntry',{attrs:{\"active\":active,\"index\":index,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes,\"source\":item}})]}},{key:\"before\",fn:function(){return [_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.currentView.caption || '')+\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list.'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('FilesListHeader',{attrs:{\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes}})]},proxy:true},{key:\"after\",fn:function(){return [_c('FilesListFooter',{attrs:{\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes,\"summary\":_vm.summary}})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.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!./FilesList.vue?vue&type=style&index=0&id=f52708d2&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!./FilesList.vue?vue&type=style&index=0&id=f52708d2&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesList.vue?vue&type=template&id=f52708d2&scoped=true&\"\nimport script from \"./FilesList.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesList.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesList.vue?vue&type=style&index=0&id=f52708d2&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 \"f52708d2\",\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('NcAppContent',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.currentView?.legacy),expression:\"!currentView?.legacy\"}],class:{'app-content--hidden': _vm.currentView?.legacy},attrs:{\"data-cy-files-content\":\"\"}},[_c('div',{staticClass:\"files-list__header\"},[_c('BreadCrumbs',{attrs:{\"path\":_vm.dir},on:{\"reload\":_vm.fetchContent}}),_vm._v(\" \"),(_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__refresh-icon\"}):_vm._e()],1),_vm._v(\" \"),(_vm.loading && !_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"title\":_vm.t('files', 'Loading current folder')}}):(!_vm.loading && _vm.isEmptyDir)?_c('NcEmptyContent',{attrs:{\"title\":_vm.t('files', 'No files in here'),\"description\":_vm.t('files', 'No files or folders have been deleted yet'),\"data-cy-files-content-empty\":\"\"},scopedSlots:_vm._u([{key:\"action\",fn:function(){return [(_vm.dir !== '/')?_c('NcButton',{attrs:{\"aria-label\":\"t('files', 'Go to the previous folder')\",\"type\":\"primary\",\"to\":_vm.toPreviousDir}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Go back'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true},{key:\"icon\",fn:function(){return [_c('TrashCan')]},proxy:true}])}):_c('FilesListVirtual',{ref:\"filesListVirtual\",attrs:{\"current-view\":_vm.currentView,\"nodes\":_vm.dirContents}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Gary Kim \n *\n * @author Gary Kim \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 .\n *\n */\n\nexport default class Settings {\n\n\t_settings\n\n\tconstructor() {\n\t\tthis._settings = []\n\t\tconsole.debug('OCA.Files.Settings initialized')\n\t}\n\n\t/**\n\t * Register a new setting\n\t *\n\t * @since 19.0.0\n\t * @param {OCA.Files.Settings.Setting} view element to add to settings\n\t * @return {boolean} whether registering was successful\n\t */\n\tregister(view) {\n\t\tif (this._settings.filter(e => e.name === view.name).length > 0) {\n\t\t\tconsole.error('A setting with the same name is already registered')\n\t\t\treturn false\n\t\t}\n\t\tthis._settings.push(view)\n\t\treturn true\n\t}\n\n\t/**\n\t * All settings elements\n\t *\n\t * @return {OCA.Files.Settings.Setting[]} All currently registered settings\n\t */\n\tget settings() {\n\t\treturn this._settings\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim \n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author Gary Kim \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 .\n *\n */\n\nexport default class Setting {\n\n\t_close\n\t_el\n\t_name\n\t_open\n\n\t/**\n\t * Create a new files app setting\n\t *\n\t * @since 19.0.0\n\t * @param {string} name the name of this setting\n\t * @param {object} component the component\n\t * @param {Function} component.el function that returns an unmounted dom element to be added\n\t * @param {Function} [component.open] callback for when setting is added\n\t * @param {Function} [component.close] callback for when setting is closed\n\t */\n\tconstructor(name, { el, open, close }) {\n\t\tthis._name = name\n\t\tthis._el = el\n\t\tthis._open = open\n\t\tthis._close = close\n\n\t\tif (typeof this._open !== 'function') {\n\t\t\tthis._open = () => {}\n\t\t}\n\n\t\tif (typeof this._close !== 'function') {\n\t\t\tthis._close = () => {}\n\t\t}\n\t}\n\n\tget name() {\n\t\treturn this._name\n\t}\n\n\tget el() {\n\t\treturn this._el\n\t}\n\n\tget open() {\n\t\treturn this._open\n\t}\n\n\tget close() {\n\t\treturn this._close\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\nimport Vue from 'vue'\nimport Router from 'vue-router'\nimport { generateUrl } from '@nextcloud/router'\nimport { stringify } from 'query-string'\n\nVue.use(Router)\n\nconst router = new Router({\n\tmode: 'history',\n\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: generateUrl('/apps/files', ''),\n\tlinkActiveClass: 'active',\n\n\troutes: [\n\t\t{\n\t\t\tpath: '/',\n\t\t\t// Pretending we're using the default view\n\t\t\talias: '/files',\n\t\t},\n\t\t{\n\t\t\tpath: '/:view/:fileid?',\n\t\t\tname: 'filelist',\n\t\t\tprops: true,\n\t\t},\n\t],\n\n\t// Custom stringifyQuery to prevent encoding of slashes in the url\n\tstringifyQuery(query) {\n\t\tconst result = stringify(query).replace(/%2F/gmi, '/')\n\t\treturn result ? ('?' + result) : ''\n\t},\n})\n\nexport default router\n","import './templates.js'\nimport './legacy/filelistSearch.js'\nimport './actions/deleteAction.ts'\n\nimport processLegacyFilesViews from './legacy/navigationMapper.js'\n\nimport Vue from 'vue'\nimport { createPinia, PiniaVuePlugin } from 'pinia'\n\nimport NavigationService from './services/Navigation.ts'\nimport registerPreviewServiceWorker from './services/ServiceWorker.js'\n\nimport NavigationView from './views/Navigation.vue'\nimport FilesListView from './views/FilesList.vue'\n\nimport SettingsService from './services/Settings.js'\nimport SettingsModel from './models/Setting.js'\n\nimport router from './router/router.js'\n\n// Init private and public Files namespace\nwindow.OCA.Files = window.OCA.Files ?? {}\nwindow.OCP.Files = window.OCP.Files ?? {}\n\n// Init Pinia store\nVue.use(PiniaVuePlugin)\nconst pinia = createPinia()\n\n// Init Navigation Service\nconst Navigation = new NavigationService()\nObject.assign(window.OCP.Files, { Navigation })\nVue.prototype.$navigation = Navigation\n\n// Init Files App Settings Service\nconst Settings = new SettingsService()\nObject.assign(window.OCA.Files, { Settings })\nObject.assign(window.OCA.Files.Settings, { Setting: SettingsModel })\n\n// Init Navigation View\nconst View = Vue.extend(NavigationView)\nconst FilesNavigationRoot = new View({\n\tname: 'FilesNavigationRoot',\n\tpropsData: {\n\t\tNavigation,\n\t},\n\trouter,\n\tpinia,\n})\nFilesNavigationRoot.$mount('#app-navigation-files')\n\n// Init content list view\nconst ListView = Vue.extend(FilesListView)\nconst FilesList = new ListView({\n\tname: 'FilesListRoot',\n\trouter,\n\tpinia,\n})\nFilesList.$mount('#app-content-vue')\n\n// Init legacy files views\nprocessLegacyFilesViews()\n\n// Register preview service worker\nregisterPreviewServiceWorker()\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, \".breadcrumb[data-v-68b3b20b]{flex:1 1 100% !important;width:100%}.breadcrumb[data-v-68b3b20b] a{cursor:pointer !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/BreadCrumbs.vue\"],\"names\":[],\"mappings\":\"AACA,6BAEC,wBAAA,CACA,UAAA,CAEA,+BACC,yBAAA\",\"sourcesContent\":[\"\\n.breadcrumb {\\n\\t// Take as much space as possible\\n\\tflex: 1 1 100% !important;\\n\\twidth: 100%;\\n\\n\\t::v-deep a {\\n\\t\\tcursor: pointer !important;\\n\\t}\\n}\\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, \".custom-svg-icon[data-v-6646d6a5]{display:flex;align-items:center;align-self:center;justify-content:center;justify-self:center;width:44px;height:44px;opacity:1}.custom-svg-icon[data-v-6646d6a5] svg{height:22px;width:22px;fill:currentColor}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/CustomSvgIconRender.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,YAAA,CACA,kBAAA,CACA,iBAAA,CACA,sBAAA,CACA,mBAAA,CACA,UAAA,CACA,WAAA,CACA,SAAA,CAEA,sCAGC,WAAA,CACA,UAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n.custom-svg-icon {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\talign-self: center;\\n\\tjustify-content: center;\\n\\tjustify-self: center;\\n\\twidth: 44px;\\n\\theight: 44px;\\n\\topacity: 1;\\n\\n\\t::v-deep svg {\\n\\t\\t// mdi icons have a size of 24px\\n\\t\\t// 22px results in roughly 16px inner size\\n\\t\\theight: 22px;\\n\\t\\twidth: 22px;\\n\\t\\tfill: currentColor;\\n\\t}\\n}\\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, \"td[data-v-b676af6e],th[data-v-b676af6e]{display:flex;align-items:center;flex:0 0 auto;justify-content:left;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}td span[data-v-b676af6e],th span[data-v-b676af6e]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list__row-checkbox[data-v-b676af6e]{justify-content:center}.files-list__row-checkbox[data-v-b676af6e] .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list__row-checkbox[data-v-b676af6e] .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list__row-checkbox[data-v-b676af6e] .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list__row-icon[data-v-b676af6e]{display:flex;align-items:center;justify-content:center;width:var(--icon-preview-size);height:100%;margin-right:var(--checkbox-padding);color:var(--color-primary-element)}.files-list__row-icon>span[data-v-b676af6e]{justify-content:flex-start}.files-list__row-icon[data-v-b676af6e] svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list__row-icon-preview[data-v-b676af6e]{overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center;background-size:contain}.files-list__row-name[data-v-b676af6e]{overflow:hidden;flex:1 1 auto}.files-list__row-name a[data-v-b676af6e]{display:flex;align-items:center;width:100%;height:100%}.files-list__row-name a:focus .files-list__row-name-text[data-v-b676af6e],.files-list__row-name a:focus-visible .files-list__row-name-text[data-v-b676af6e]{outline:2px solid var(--color-main-text) !important;border-radius:20px}.files-list__row-name .files-list__row-name-text[data-v-b676af6e]{padding:5px 10px;margin-left:-10px}.files-list__row-actions[data-v-b676af6e]{width:auto}.files-list__row-actions~td[data-v-b676af6e],.files-list__row-actions~th[data-v-b676af6e]{margin:0 var(--cell-margin)}.files-list__row-actions[data-v-b676af6e]>button .button-vue__text{font-weight:normal}.files-list__row-actions[data-v-b676af6e]>button:not(:hover,:focus,:active) .button-vue__wrapper{color:var(--color-text-maxcontrast)}.files-list__row-size[data-v-b676af6e]{justify-content:flex-end;width:calc(var(--row-height)*1.5);color:var(--color-main-text)}.files-list__row-size[data-v-b676af6e] .files-list__column-sort-button{padding:0 16px 0 4px !important}.files-list__row-size[data-v-b676af6e] .files-list__column-sort-button .button-vue__wrapper{flex-direction:row}.files-list__row-column-custom[data-v-b676af6e]{width:calc(var(--row-height)*2)}tr[data-v-b676af6e]:hover,tr[data-v-b676af6e]:focus,tr[data-v-b676af6e]:active{background-color:var(--color-background-dark)}.files-list__row-icon-preview[data-v-b676af6e]:not([style*=background]){background:var(--color-loading-dark)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/mixins/fileslist-row.scss\",\"webpack://./apps/files/src/components/FileEntry.vue\"],\"names\":[],\"mappings\":\"AA4BA,wCACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,oBAAA,CACA,uBAAA,CACA,wBAAA,CACA,QAAA,CACA,SAAA,CACA,mCAAA,CACA,WAAA,CAKA,kDACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAIF,2CACC,sBAAA,CACA,kEACC,YAAA,CACA,sBAAA,CAEA,iCAAA,CAEA,qGACC,2BAAA,CACA,4BAAA,CACA,QAAA,CACA,8DAAA,CAGD,+FACC,mBAAA,CAKH,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,8BAAA,CACA,WAAA,CAEA,oCAAA,CACA,kCAAA,CAEA,4CACC,0BAAA,CAGD,2CACC,8BAAA,CACA,+BAAA,CAGD,+CACC,eAAA,CACA,8BAAA,CACA,+BAAA,CACA,kCAAA,CACA,2BAAA,CAEA,0BAAA,CACA,uBAAA,CAIF,uCAEC,eAAA,CAEA,aAAA,CAEA,yCACC,YAAA,CACA,kBAAA,CAEA,UAAA,CACA,WAAA,CAGA,4JAEC,mDAAA,CACA,kBAAA,CAIF,kEAEC,gBAAA,CACA,iBAAA,CAIF,0CACC,UAAA,CAGA,0FAEC,2BAAA,CAIA,mEAEC,kBAAA,CAED,iGAEC,mCAAA,CAKH,uCAEC,wBAAA,CACA,iCAAA,CAEA,4BAAA,CAGA,uEACC,+BAAA,CACA,4FACC,kBAAA,CAKH,gDACC,+BAAA,CCnKA,+EAGC,6CAAA,CAKF,wEACI,oCAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2023 John Molakvoæ \\n *\\n * @author John Molakvoæ \\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 .\\n *\\n */\\n\\n/**\\n * ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠\\n * This file is for every column styling that must be\\n * shared between BOTH the files list AND the list header.\\n * ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠\\n */\\ntd, th {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tflex: 0 0 auto;\\n\\tjustify-content: left;\\n\\twidth: var(--row-height);\\n\\theight: var(--row-height);\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tborder: none;\\n\\n\\t// Columns should try to add any text\\n\\t// node wrapped in a span. That should help\\n\\t// with the ellipsis on overflow.\\n\\tspan {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\\n.files-list__row-checkbox {\\n\\tjustify-content: center;\\n\\t&::v-deep .checkbox-radio-switch {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\n\\t\\t--icon-size: var(--checkbox-size);\\n\\n\\t\\tlabel.checkbox-radio-switch__label {\\n\\t\\t\\twidth: var(--clickable-area);\\n\\t\\t\\theight: var(--clickable-area);\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\\n\\t\\t}\\n\\n\\t\\t.checkbox-radio-switch__icon {\\n\\t\\t\\tmargin: 0 !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n.files-list__row-icon {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\twidth: var(--icon-preview-size);\\n\\theight: 100%;\\n\\t// Show same padding as the checkbox right padding for visual balance\\n\\tmargin-right: var(--checkbox-padding);\\n\\tcolor: var(--color-primary-element);\\n\\n\\t& > span {\\n\\t\\tjustify-content: flex-start;\\n\\t}\\n\\n\\t&::v-deep svg {\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: var(--icon-preview-size);\\n\\t}\\n\\n\\t&-preview {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: var(--icon-preview-size);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\t// Center and contain the preview\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: contain;\\n\\t}\\n}\\n\\n.files-list__row-name {\\n\\t// Prevent link from overflowing\\n\\toverflow: hidden;\\n\\t// Take as much space as possible\\n\\tflex: 1 1 auto;\\n\\n\\ta {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\t// Fill cell height and width\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\n\\t\\t// Keyboard indicator a11y\\n\\t\\t&:focus .files-list__row-name-text,\\n\\t\\t&:focus-visible .files-list__row-name-text {\\n\\t\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t\\tborder-radius: 20px;\\n\\t\\t}\\n\\t}\\n\\n\\t.files-list__row-name-text {\\n\\t\\t// Make some space for the outline\\n\\t\\tpadding: 5px 10px;\\n\\t\\tmargin-left: -10px;\\n\\t}\\n}\\n\\n.files-list__row-actions {\\n\\twidth: auto;\\n\\n\\t// Add margin to all cells after the actions\\n\\t& ~ td,\\n\\t& ~ th {\\n\\t\\tmargin: 0 var(--cell-margin);\\n\\t}\\n\\n\\t&::v-deep > button {\\n\\t\\t.button-vue__text {\\n\\t\\t\\t// Remove bold from default button styling\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t}\\n\\t\\t&:not(:hover, :focus, :active) .button-vue__wrapper {\\n\\t\\t\\t// Also apply color-text-maxcontrast to non-active button\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n}\\n\\n.files-list__row-size {\\n\\t// Right align text\\n\\tjustify-content: flex-end;\\n\\twidth: calc(var(--row-height) * 1.5);\\n\\t// opacity varies with the size\\n\\tcolor: var(--color-main-text);\\n\\n\\t// Icon is before text since size is right aligned\\n\\t::v-deep .files-list__column-sort-button {\\n\\t\\tpadding: 0 16px 0 4px !important;\\n\\t\\t.button-vue__wrapper {\\n\\t\\t\\tflex-direction: row;\\n\\t\\t}\\n\\t}\\n}\\n\\n.files-list__row-column-custom {\\n\\twidth: calc(var(--row-height) * 2);\\n}\\n\",\"\\n@import '../mixins/fileslist-row.scss';\\n\\n/* Hover effect on tbody lines only */\\ntr {\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n}\\n\\n/* Preview not loaded animation effect */\\n.files-list__row-icon-preview:not([style*='background']) {\\n background: var(--color-loading-dark);\\n\\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\\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, \"td[data-v-3a8b911c],th[data-v-3a8b911c]{display:flex;align-items:center;flex:0 0 auto;justify-content:left;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}td span[data-v-3a8b911c],th span[data-v-3a8b911c]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list__row-checkbox[data-v-3a8b911c]{justify-content:center}.files-list__row-checkbox[data-v-3a8b911c] .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list__row-checkbox[data-v-3a8b911c] .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list__row-checkbox[data-v-3a8b911c] .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list__row-icon[data-v-3a8b911c]{display:flex;align-items:center;justify-content:center;width:var(--icon-preview-size);height:100%;margin-right:var(--checkbox-padding);color:var(--color-primary-element)}.files-list__row-icon>span[data-v-3a8b911c]{justify-content:flex-start}.files-list__row-icon[data-v-3a8b911c] svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list__row-icon-preview[data-v-3a8b911c]{overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center;background-size:contain}.files-list__row-name[data-v-3a8b911c]{overflow:hidden;flex:1 1 auto}.files-list__row-name a[data-v-3a8b911c]{display:flex;align-items:center;width:100%;height:100%}.files-list__row-name a:focus .files-list__row-name-text[data-v-3a8b911c],.files-list__row-name a:focus-visible .files-list__row-name-text[data-v-3a8b911c]{outline:2px solid var(--color-main-text) !important;border-radius:20px}.files-list__row-name .files-list__row-name-text[data-v-3a8b911c]{padding:5px 10px;margin-left:-10px}.files-list__row-actions[data-v-3a8b911c]{width:auto}.files-list__row-actions~td[data-v-3a8b911c],.files-list__row-actions~th[data-v-3a8b911c]{margin:0 var(--cell-margin)}.files-list__row-actions[data-v-3a8b911c]>button .button-vue__text{font-weight:normal}.files-list__row-actions[data-v-3a8b911c]>button:not(:hover,:focus,:active) .button-vue__wrapper{color:var(--color-text-maxcontrast)}.files-list__row-size[data-v-3a8b911c]{justify-content:flex-end;width:calc(var(--row-height)*1.5);color:var(--color-main-text)}.files-list__row-size[data-v-3a8b911c] .files-list__column-sort-button{padding:0 16px 0 4px !important}.files-list__row-size[data-v-3a8b911c] .files-list__column-sort-button .button-vue__wrapper{flex-direction:row}.files-list__row-column-custom[data-v-3a8b911c]{width:calc(var(--row-height)*2)}tr[data-v-3a8b911c]{padding-bottom:300px;border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}td[data-v-3a8b911c]{user-select:none;color:var(--color-text-maxcontrast) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/mixins/fileslist-row.scss\",\"webpack://./apps/files/src/components/FilesListFooter.vue\"],\"names\":[],\"mappings\":\"AA4BA,wCACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,oBAAA,CACA,uBAAA,CACA,wBAAA,CACA,QAAA,CACA,SAAA,CACA,mCAAA,CACA,WAAA,CAKA,kDACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAIF,2CACC,sBAAA,CACA,kEACC,YAAA,CACA,sBAAA,CAEA,iCAAA,CAEA,qGACC,2BAAA,CACA,4BAAA,CACA,QAAA,CACA,8DAAA,CAGD,+FACC,mBAAA,CAKH,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,8BAAA,CACA,WAAA,CAEA,oCAAA,CACA,kCAAA,CAEA,4CACC,0BAAA,CAGD,2CACC,8BAAA,CACA,+BAAA,CAGD,+CACC,eAAA,CACA,8BAAA,CACA,+BAAA,CACA,kCAAA,CACA,2BAAA,CAEA,0BAAA,CACA,uBAAA,CAIF,uCAEC,eAAA,CAEA,aAAA,CAEA,yCACC,YAAA,CACA,kBAAA,CAEA,UAAA,CACA,WAAA,CAGA,4JAEC,mDAAA,CACA,kBAAA,CAIF,kEAEC,gBAAA,CACA,iBAAA,CAIF,0CACC,UAAA,CAGA,0FAEC,2BAAA,CAIA,mEAEC,kBAAA,CAED,iGAEC,mCAAA,CAKH,uCAEC,wBAAA,CACA,iCAAA,CAEA,4BAAA,CAGA,uEACC,+BAAA,CACA,4FACC,kBAAA,CAKH,gDACC,+BAAA,CCpKD,oBACC,oBAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAGD,oBACC,gBAAA,CAEA,8CAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2023 John Molakvoæ \\n *\\n * @author John Molakvoæ \\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 .\\n *\\n */\\n\\n/**\\n * ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠\\n * This file is for every column styling that must be\\n * shared between BOTH the files list AND the list header.\\n * ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠\\n */\\ntd, th {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tflex: 0 0 auto;\\n\\tjustify-content: left;\\n\\twidth: var(--row-height);\\n\\theight: var(--row-height);\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tborder: none;\\n\\n\\t// Columns should try to add any text\\n\\t// node wrapped in a span. That should help\\n\\t// with the ellipsis on overflow.\\n\\tspan {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\\n.files-list__row-checkbox {\\n\\tjustify-content: center;\\n\\t&::v-deep .checkbox-radio-switch {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\n\\t\\t--icon-size: var(--checkbox-size);\\n\\n\\t\\tlabel.checkbox-radio-switch__label {\\n\\t\\t\\twidth: var(--clickable-area);\\n\\t\\t\\theight: var(--clickable-area);\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\\n\\t\\t}\\n\\n\\t\\t.checkbox-radio-switch__icon {\\n\\t\\t\\tmargin: 0 !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n.files-list__row-icon {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\twidth: var(--icon-preview-size);\\n\\theight: 100%;\\n\\t// Show same padding as the checkbox right padding for visual balance\\n\\tmargin-right: var(--checkbox-padding);\\n\\tcolor: var(--color-primary-element);\\n\\n\\t& > span {\\n\\t\\tjustify-content: flex-start;\\n\\t}\\n\\n\\t&::v-deep svg {\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: var(--icon-preview-size);\\n\\t}\\n\\n\\t&-preview {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: var(--icon-preview-size);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\t// Center and contain the preview\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: contain;\\n\\t}\\n}\\n\\n.files-list__row-name {\\n\\t// Prevent link from overflowing\\n\\toverflow: hidden;\\n\\t// Take as much space as possible\\n\\tflex: 1 1 auto;\\n\\n\\ta {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\t// Fill cell height and width\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\n\\t\\t// Keyboard indicator a11y\\n\\t\\t&:focus .files-list__row-name-text,\\n\\t\\t&:focus-visible .files-list__row-name-text {\\n\\t\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t\\tborder-radius: 20px;\\n\\t\\t}\\n\\t}\\n\\n\\t.files-list__row-name-text {\\n\\t\\t// Make some space for the outline\\n\\t\\tpadding: 5px 10px;\\n\\t\\tmargin-left: -10px;\\n\\t}\\n}\\n\\n.files-list__row-actions {\\n\\twidth: auto;\\n\\n\\t// Add margin to all cells after the actions\\n\\t& ~ td,\\n\\t& ~ th {\\n\\t\\tmargin: 0 var(--cell-margin);\\n\\t}\\n\\n\\t&::v-deep > button {\\n\\t\\t.button-vue__text {\\n\\t\\t\\t// Remove bold from default button styling\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t}\\n\\t\\t&:not(:hover, :focus, :active) .button-vue__wrapper {\\n\\t\\t\\t// Also apply color-text-maxcontrast to non-active button\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n}\\n\\n.files-list__row-size {\\n\\t// Right align text\\n\\tjustify-content: flex-end;\\n\\twidth: calc(var(--row-height) * 1.5);\\n\\t// opacity varies with the size\\n\\tcolor: var(--color-main-text);\\n\\n\\t// Icon is before text since size is right aligned\\n\\t::v-deep .files-list__column-sort-button {\\n\\t\\tpadding: 0 16px 0 4px !important;\\n\\t\\t.button-vue__wrapper {\\n\\t\\t\\tflex-direction: row;\\n\\t\\t}\\n\\t}\\n}\\n\\n.files-list__row-column-custom {\\n\\twidth: calc(var(--row-height) * 2);\\n}\\n\",\"\\n@import '../mixins/fileslist-row.scss';\\n\\n// Scoped row\\ntr {\\n\\tpadding-bottom: 300px;\\n\\tborder-top: 1px solid var(--color-border);\\n\\t// Prevent hover effect on the whole row\\n\\tbackground-color: transparent !important;\\n\\tborder-bottom: none !important;\\n}\\n\\ntd {\\n\\tuser-select: none;\\n\\t// Make sure the cell colors don't apply to column headers\\n\\tcolor: var(--color-text-maxcontrast) !important;\\n}\\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, \"td[data-v-2cb97ee2],th[data-v-2cb97ee2]{display:flex;align-items:center;flex:0 0 auto;justify-content:left;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}td span[data-v-2cb97ee2],th span[data-v-2cb97ee2]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list__row-checkbox[data-v-2cb97ee2]{justify-content:center}.files-list__row-checkbox[data-v-2cb97ee2] .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list__row-checkbox[data-v-2cb97ee2] .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list__row-checkbox[data-v-2cb97ee2] .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list__row-icon[data-v-2cb97ee2]{display:flex;align-items:center;justify-content:center;width:var(--icon-preview-size);height:100%;margin-right:var(--checkbox-padding);color:var(--color-primary-element)}.files-list__row-icon>span[data-v-2cb97ee2]{justify-content:flex-start}.files-list__row-icon[data-v-2cb97ee2] svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list__row-icon-preview[data-v-2cb97ee2]{overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center;background-size:contain}.files-list__row-name[data-v-2cb97ee2]{overflow:hidden;flex:1 1 auto}.files-list__row-name a[data-v-2cb97ee2]{display:flex;align-items:center;width:100%;height:100%}.files-list__row-name a:focus .files-list__row-name-text[data-v-2cb97ee2],.files-list__row-name a:focus-visible .files-list__row-name-text[data-v-2cb97ee2]{outline:2px solid var(--color-main-text) !important;border-radius:20px}.files-list__row-name .files-list__row-name-text[data-v-2cb97ee2]{padding:5px 10px;margin-left:-10px}.files-list__row-actions[data-v-2cb97ee2]{width:auto}.files-list__row-actions~td[data-v-2cb97ee2],.files-list__row-actions~th[data-v-2cb97ee2]{margin:0 var(--cell-margin)}.files-list__row-actions[data-v-2cb97ee2]>button .button-vue__text{font-weight:normal}.files-list__row-actions[data-v-2cb97ee2]>button:not(:hover,:focus,:active) .button-vue__wrapper{color:var(--color-text-maxcontrast)}.files-list__row-size[data-v-2cb97ee2]{justify-content:flex-end;width:calc(var(--row-height)*1.5);color:var(--color-main-text)}.files-list__row-size[data-v-2cb97ee2] .files-list__column-sort-button{padding:0 16px 0 4px !important}.files-list__row-size[data-v-2cb97ee2] .files-list__column-sort-button .button-vue__wrapper{flex-direction:row}.files-list__row-column-custom[data-v-2cb97ee2]{width:calc(var(--row-height)*2)}.files-list__column[data-v-2cb97ee2]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-2cb97ee2]{cursor:pointer}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/mixins/fileslist-row.scss\",\"webpack://./apps/files/src/components/FilesListHeader.vue\"],\"names\":[],\"mappings\":\"AA4BA,wCACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,oBAAA,CACA,uBAAA,CACA,wBAAA,CACA,QAAA,CACA,SAAA,CACA,mCAAA,CACA,WAAA,CAKA,kDACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAIF,2CACC,sBAAA,CACA,kEACC,YAAA,CACA,sBAAA,CAEA,iCAAA,CAEA,qGACC,2BAAA,CACA,4BAAA,CACA,QAAA,CACA,8DAAA,CAGD,+FACC,mBAAA,CAKH,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,8BAAA,CACA,WAAA,CAEA,oCAAA,CACA,kCAAA,CAEA,4CACC,0BAAA,CAGD,2CACC,8BAAA,CACA,+BAAA,CAGD,+CACC,eAAA,CACA,8BAAA,CACA,+BAAA,CACA,kCAAA,CACA,2BAAA,CAEA,0BAAA,CACA,uBAAA,CAIF,uCAEC,eAAA,CAEA,aAAA,CAEA,yCACC,YAAA,CACA,kBAAA,CAEA,UAAA,CACA,WAAA,CAGA,4JAEC,mDAAA,CACA,kBAAA,CAIF,kEAEC,gBAAA,CACA,iBAAA,CAIF,0CACC,UAAA,CAGA,0FAEC,2BAAA,CAIA,mEAEC,kBAAA,CAED,iGAEC,mCAAA,CAKH,uCAEC,wBAAA,CACA,iCAAA,CAEA,4BAAA,CAGA,uEACC,+BAAA,CACA,4FACC,kBAAA,CAKH,gDACC,+BAAA,CCtKD,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2023 John Molakvoæ \\n *\\n * @author John Molakvoæ \\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 .\\n *\\n */\\n\\n/**\\n * ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠\\n * This file is for every column styling that must be\\n * shared between BOTH the files list AND the list header.\\n * ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠ ⚠\\n */\\ntd, th {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tflex: 0 0 auto;\\n\\tjustify-content: left;\\n\\twidth: var(--row-height);\\n\\theight: var(--row-height);\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tborder: none;\\n\\n\\t// Columns should try to add any text\\n\\t// node wrapped in a span. That should help\\n\\t// with the ellipsis on overflow.\\n\\tspan {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\\n.files-list__row-checkbox {\\n\\tjustify-content: center;\\n\\t&::v-deep .checkbox-radio-switch {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\n\\t\\t--icon-size: var(--checkbox-size);\\n\\n\\t\\tlabel.checkbox-radio-switch__label {\\n\\t\\t\\twidth: var(--clickable-area);\\n\\t\\t\\theight: var(--clickable-area);\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\\n\\t\\t}\\n\\n\\t\\t.checkbox-radio-switch__icon {\\n\\t\\t\\tmargin: 0 !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n.files-list__row-icon {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\twidth: var(--icon-preview-size);\\n\\theight: 100%;\\n\\t// Show same padding as the checkbox right padding for visual balance\\n\\tmargin-right: var(--checkbox-padding);\\n\\tcolor: var(--color-primary-element);\\n\\n\\t& > span {\\n\\t\\tjustify-content: flex-start;\\n\\t}\\n\\n\\t&::v-deep svg {\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: var(--icon-preview-size);\\n\\t}\\n\\n\\t&-preview {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: var(--icon-preview-size);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\t// Center and contain the preview\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: contain;\\n\\t}\\n}\\n\\n.files-list__row-name {\\n\\t// Prevent link from overflowing\\n\\toverflow: hidden;\\n\\t// Take as much space as possible\\n\\tflex: 1 1 auto;\\n\\n\\ta {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\t// Fill cell height and width\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\n\\t\\t// Keyboard indicator a11y\\n\\t\\t&:focus .files-list__row-name-text,\\n\\t\\t&:focus-visible .files-list__row-name-text {\\n\\t\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t\\tborder-radius: 20px;\\n\\t\\t}\\n\\t}\\n\\n\\t.files-list__row-name-text {\\n\\t\\t// Make some space for the outline\\n\\t\\tpadding: 5px 10px;\\n\\t\\tmargin-left: -10px;\\n\\t}\\n}\\n\\n.files-list__row-actions {\\n\\twidth: auto;\\n\\n\\t// Add margin to all cells after the actions\\n\\t& ~ td,\\n\\t& ~ th {\\n\\t\\tmargin: 0 var(--cell-margin);\\n\\t}\\n\\n\\t&::v-deep > button {\\n\\t\\t.button-vue__text {\\n\\t\\t\\t// Remove bold from default button styling\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t}\\n\\t\\t&:not(:hover, :focus, :active) .button-vue__wrapper {\\n\\t\\t\\t// Also apply color-text-maxcontrast to non-active button\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n}\\n\\n.files-list__row-size {\\n\\t// Right align text\\n\\tjustify-content: flex-end;\\n\\twidth: calc(var(--row-height) * 1.5);\\n\\t// opacity varies with the size\\n\\tcolor: var(--color-main-text);\\n\\n\\t// Icon is before text since size is right aligned\\n\\t::v-deep .files-list__column-sort-button {\\n\\t\\tpadding: 0 16px 0 4px !important;\\n\\t\\t.button-vue__wrapper {\\n\\t\\t\\tflex-direction: row;\\n\\t\\t}\\n\\t}\\n}\\n\\n.files-list__row-column-custom {\\n\\twidth: calc(var(--row-height) * 2);\\n}\\n\",\"\\n@import '../mixins/fileslist-row.scss';\\n.files-list__column {\\n\\tuser-select: none;\\n\\t// Make sure the cell colors don't apply to column headers\\n\\tcolor: var(--color-text-maxcontrast) !important;\\n\\n\\t&--sortable {\\n\\t\\tcursor: pointer;\\n\\t}\\n}\\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, \".files-list__row-actions-batch[data-v-6d590bc4]{flex:1 1 100% !important}.files-list__row-actions-batch[data-v-6d590bc4] .button-vue__wrapper{width:100%}.files-list__row-actions-batch[data-v-6d590bc4] .button-vue__wrapper span.button-vue__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListHeaderActions.vue\"],\"names\":[],\"mappings\":\"AACA,gDACC,wBAAA,CAGA,qEACC,UAAA,CACA,2FACC,eAAA,CACA,sBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.files-list__row-actions-batch {\\n\\tflex: 1 1 100% !important;\\n\\n\\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\\n\\t::v-deep .button-vue__wrapper {\\n\\t\\twidth: 100%;\\n\\t\\tspan.button-vue__text {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\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, \".files-list__column-sort-button{margin:0 calc(var(--cell-margin)*-1);padding:0 4px 0 16px !important}.files-list__column-sort-button .button-vue__wrapper{flex-direction:row-reverse;width:100%}.files-list__column-sort-button .button-vue__icon{transition-timing-function:linear;transition-duration:.1s;transition-property:opacity;opacity:0}.files-list__column-sort-button .button-vue__text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list__column-sort-button--active .button-vue__icon,.files-list__column-sort-button:hover .button-vue__icon,.files-list__column-sort-button:focus .button-vue__icon,.files-list__column-sort-button:active .button-vue__icon{opacity:1 !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListHeaderButton.vue\"],\"names\":[],\"mappings\":\"AACA,gCAEC,oCAAA,CAEA,+BAAA,CAGA,qDACC,0BAAA,CAGA,UAAA,CAGD,kDACC,iCAAA,CACA,uBAAA,CACA,2BAAA,CACA,SAAA,CAID,kDACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAOA,mOACC,oBAAA\",\"sourcesContent\":[\"\\n.files-list__column-sort-button {\\n\\t// Compensate for cells margin\\n\\tmargin: 0 calc(var(--cell-margin) * -1);\\n\\t// Reverse padding\\n\\tpadding: 0 4px 0 16px !important;\\n\\n\\t// Icon after text\\n\\t.button-vue__wrapper {\\n\\t\\tflex-direction: row-reverse;\\n\\t\\t// Take max inner width for text overflow ellipsis\\n\\t\\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t.button-vue__icon {\\n\\t\\ttransition-timing-function: linear;\\n\\t\\ttransition-duration: .1s;\\n\\t\\ttransition-property: opacity;\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\\n\\t.button-vue__text {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\n\\t&--active,\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\t.button-vue__icon {\\n\\t\\t\\topacity: 1 !important;\\n\\t\\t}\\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, \".files-list[data-v-e417a998]{--row-height: 55px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: 44px;--icon-preview-size: 32px;display:block;overflow:auto;height:100%}.files-list[data-v-e417a998] tbody,.files-list[data-v-e417a998] .vue-recycle-scroller__slot{display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-e417a998] .vue-recycle-scroller__slot[role=thead]{position:sticky;z-index:10;top:0;height:var(--row-height);background-color:var(--color-main-background)}.files-list[data-v-e417a998] tr{position:absolute;display:flex;align-items:center;width:100%;border-bottom:1px solid var(--color-border)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,kBAAA,CACA,mBAAA,CAEA,wEAAA,CACA,qBAAA,CACA,sBAAA,CACA,yBAAA,CAEA,aAAA,CACA,aAAA,CACA,WAAA,CAIC,4FACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,iBAAA,CAID,qEAEC,eAAA,CACA,UAAA,CACA,KAAA,CACA,wBAAA,CACA,6CAAA,CAQD,gCACC,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,UAAA,CACA,2CAAA\",\"sourcesContent\":[\"\\n.files-list {\\n\\t--row-height: 55px;\\n\\t--cell-margin: 14px;\\n\\n\\t--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);\\n\\t--checkbox-size: 24px;\\n\\t--clickable-area: 44px;\\n\\t--icon-preview-size: 32px;\\n\\n\\tdisplay: block;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\n\\t&::v-deep {\\n\\t\\t// Table head, body and footer\\n\\t\\ttbody, .vue-recycle-scroller__slot {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\t// Necessary for virtual scrolling absolute\\n\\t\\t\\tposition: relative;\\n\\t\\t}\\n\\n\\t\\t// Table header\\n\\t\\t.vue-recycle-scroller__slot[role='thead'] {\\n\\t\\t\\t// Pinned on top when scrolling\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tz-index: 10;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t/**\\n\\t\\t * Common row styling. tr are handled by\\n\\t\\t * vue-virtual-scroller, so we need to\\n\\t\\t * have those rules in here.\\n\\t\\t */\\n\\t\\ttr {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n}\\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, \".app-navigation-entry__settings-quota--not-unlimited[data-v-26c061ec] .app-navigation-entry__title{margin-top:-4px}.app-navigation-entry__settings-quota progress[data-v-26c061ec]{position:absolute;bottom:10px;margin-left:44px;width:calc(100% - 44px - 22px)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/NavigationQuota.vue\"],\"names\":[],\"mappings\":\"AAIC,mGACC,eAAA,CAGD,gEACC,iBAAA,CACA,WAAA,CACA,gBAAA,CACA,8BAAA\",\"sourcesContent\":[\"\\n// User storage stats display\\n.app-navigation-entry__settings-quota {\\n\\t// Align title with progress and icon\\n\\t&--not-unlimited::v-deep .app-navigation-entry__title {\\n\\t\\tmargin-top: -4px;\\n\\t}\\n\\n\\tprogress {\\n\\t\\tposition: absolute;\\n\\t\\tbottom: 10px;\\n\\t\\tmargin-left: 44px;\\n\\t\\twidth: calc(100% - 44px - 22px);\\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, \".template-picker__item[data-v-6c072a31]{display:flex}.template-picker__label[data-v-6c072a31]{display:flex;align-items:center;flex:1 1;flex-direction:column}.template-picker__label[data-v-6c072a31],.template-picker__label *[data-v-6c072a31]{cursor:pointer;user-select:none}.template-picker__label[data-v-6c072a31]::before{display:none !important}.template-picker__preview[data-v-6c072a31]{display:block;overflow:hidden;flex:1 1;width:var(--width);min-height:var(--height);max-height:var(--height);padding:0;border:var(--border) solid var(--color-border);border-radius:var(--border-radius-large)}input:checked+label>.template-picker__preview[data-v-6c072a31]{border-color:var(--color-primary)}.template-picker__preview--failed[data-v-6c072a31]{display:flex}.template-picker__image[data-v-6c072a31]{max-width:100%;background-color:var(--color-main-background);object-fit:cover}.template-picker__preview--failed .template-picker__image[data-v-6c072a31]{width:calc(var(--margin)*8);margin:auto;background-color:rgba(0,0,0,0) !important;object-fit:initial}.template-picker__title[data-v-6c072a31]{overflow:hidden;max-width:calc(var(--width) + 4px);padding:var(--margin);white-space:nowrap;text-overflow:ellipsis}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/TemplatePreview.vue\"],\"names\":[],\"mappings\":\"AAGC,wCACC,YAAA,CAGD,yCACC,YAAA,CAEA,kBAAA,CACA,QAAA,CACA,qBAAA,CAEA,oFACC,cAAA,CACA,gBAAA,CAGD,iDACC,uBAAA,CAIF,2CACC,aAAA,CACA,eAAA,CAEA,QAAA,CACA,kBAAA,CACA,wBAAA,CACA,wBAAA,CACA,SAAA,CACA,8CAAA,CACA,wCAAA,CAEA,+DACC,iCAAA,CAGD,mDAEC,YAAA,CAIF,yCACC,cAAA,CACA,6CAAA,CAEA,gBAAA,CAID,2EACC,2BAAA,CAEA,WAAA,CACA,yCAAA,CAEA,kBAAA,CAGD,yCACC,eAAA,CAEA,kCAAA,CACA,qBAAA,CACA,kBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n\\n.template-picker {\\n\\t&__item {\\n\\t\\tdisplay: flex;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tdisplay: flex;\\n\\t\\t// Align in the middle of the grid\\n\\t\\talign-items: center;\\n\\t\\tflex: 1 1;\\n\\t\\tflex-direction: column;\\n\\n\\t\\t&, * {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&::before {\\n\\t\\t\\tdisplay: none !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview {\\n\\t\\tdisplay: block;\\n\\t\\toverflow: hidden;\\n\\t\\t// Stretch so all entries are the same width\\n\\t\\tflex: 1 1;\\n\\t\\twidth: var(--width);\\n\\t\\tmin-height: var(--height);\\n\\t\\tmax-height: var(--height);\\n\\t\\tpadding: 0;\\n\\t\\tborder: var(--border) solid var(--color-border);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\n\\t\\tinput:checked + label > & {\\n\\t\\t\\tborder-color: var(--color-primary);\\n\\t\\t}\\n\\n\\t\\t&--failed {\\n\\t\\t\\t// Make sure to properly center fallback icon\\n\\t\\t\\tdisplay: flex;\\n\\t\\t}\\n\\t}\\n\\n\\t&__image {\\n\\t\\tmax-width: 100%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\n\\t\\tobject-fit: cover;\\n\\t}\\n\\n\\t// Failed preview, fallback to mime icon\\n\\t&__preview--failed &__image {\\n\\t\\twidth: calc(var(--margin) * 8);\\n\\t\\t// Center mime icon\\n\\t\\tmargin: auto;\\n\\t\\tbackground-color: transparent !important;\\n\\n\\t\\tobject-fit: initial;\\n\\t}\\n\\n\\t&__title {\\n\\t\\toverflow: hidden;\\n\\t\\t// also count preview border\\n\\t\\tmax-width: calc(var(--width) + 2*2px);\\n\\t\\tpadding: var(--margin);\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\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, \".app-content[data-v-f52708d2]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}.app-content[data-v-f52708d2]:not(.app-content--hidden)+#app-content{display:none}.files-list__header[data-v-f52708d2]{display:flex;align-content:center;flex:0 0;margin:4px 4px 4px 50px}.files-list__header>*[data-v-f52708d2]{flex:0 0}.files-list__refresh-icon[data-v-f52708d2]{flex:0 0 44px;width:44px;height:44px}.files-list__loading-icon[data-v-f52708d2]{margin:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesList.vue\"],\"names\":[],\"mappings\":\"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CAIA,qEACC,YAAA,CAQD,qCACC,YAAA,CACA,oBAAA,CAEA,QAAA,CAEA,uBAAA,CACA,uCAGC,QAAA,CAGF,2CACC,aAAA,CACA,UAAA,CACA,WAAA,CAED,2CACC,WAAA\",\"sourcesContent\":[\"\\n.app-content {\\n\\t// Virtual list needs to be full height and is scrollable\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\tflex-direction: column;\\n\\tmax-height: 100%;\\n\\n\\t// TODO: remove after all legacy views are migrated\\n\\t// Hides the legacy app-content if shown view is not legacy\\n\\t&:not(&--hidden)::v-deep + #app-content {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\\n$margin: 4px;\\n$navigationToggleSize: 50px;\\n\\n.files-list {\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-content: center;\\n\\t\\t// Do not grow or shrink (vertically)\\n\\t\\tflex: 0 0;\\n\\t\\t// Align with the navigation toggle icon\\n\\t\\tmargin: $margin $margin $margin $navigationToggleSize;\\n\\t\\t> * {\\n\\t\\t\\t// Do not grow or shrink (horizontally)\\n\\t\\t\\t// Only the breadcrumbs shrinks\\n\\t\\t\\tflex: 0 0;\\n\\t\\t}\\n\\t}\\n\\t&__refresh-icon {\\n\\t\\tflex: 0 0 44px;\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t}\\n\\t&__loading-icon {\\n\\t\\tmargin: auto;\\n\\t}\\n}\\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, \".app-navigation[data-v-4238b71c] .app-navigation-entry-icon{background-repeat:no-repeat;background-position:center}.app-navigation>ul.app-navigation__list[data-v-4238b71c]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-4238b71c]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Navigation.vue\"],\"names\":[],\"mappings\":\"AAEA,4DACC,2BAAA,CACA,0BAAA,CAGD,yDAEC,gDAAA,CAGD,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA\",\"sourcesContent\":[\"\\n// TODO: remove when https://github.com/nextcloud/nextcloud-vue/pull/3539 is in\\n.app-navigation::v-deep .app-navigation-entry-icon {\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-position: center;\\n}\\n\\n.app-navigation > ul.app-navigation__list {\\n\\t// Use flex gap value for more elegant spacing\\n\\tpadding-bottom: var(--default-grid-baseline, 4px);\\n}\\n\\n.app-navigation-entry__settings {\\n\\theight: auto !important;\\n\\toverflow: hidden !important;\\n\\tpadding-top: 0 !important;\\n\\t// Prevent shrinking or growing\\n\\tflex: 0 0 auto;\\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, \".setting-link[data-v-2e129f40]:hover{text-decoration:underline}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Settings.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,yBAAA\",\"sourcesContent\":[\"\\n.setting-link:hover {\\n\\ttext-decoration: underline;\\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, \".templates-picker__form[data-v-715b4161]{padding:calc(var(--margin)*2);padding-bottom:0}.templates-picker__form h2[data-v-715b4161]{text-align:center;font-weight:bold;margin:var(--margin) 0 calc(var(--margin)*2)}.templates-picker__list[data-v-715b4161]{display:grid;grid-gap:calc(var(--margin)*2);grid-auto-columns:1fr;max-width:calc(var(--fullwidth)*6);grid-template-columns:repeat(auto-fit, var(--fullwidth));grid-auto-rows:1fr;justify-content:center}.templates-picker__buttons[data-v-715b4161]{display:flex;justify-content:space-between;padding:calc(var(--margin)*2) var(--margin);position:sticky;bottom:0;background-image:linear-gradient(0, var(--gradient-main-background))}.templates-picker__buttons button[data-v-715b4161],.templates-picker__buttons input[type=submit][data-v-715b4161]{height:44px}.templates-picker[data-v-715b4161] .modal-container{position:relative}.templates-picker__loading[data-v-715b4161]{position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;margin:0;background-color:var(--color-main-background-translucent)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/TemplatePicker.vue\"],\"names\":[],\"mappings\":\"AAEC,yCACC,6BAAA,CAEA,gBAAA,CAEA,4CACC,iBAAA,CACA,gBAAA,CACA,4CAAA,CAIF,yCACC,YAAA,CACA,8BAAA,CACA,qBAAA,CAEA,kCAAA,CACA,wDAAA,CAEA,kBAAA,CAEA,sBAAA,CAGD,4CACC,YAAA,CACA,6BAAA,CACA,2CAAA,CACA,eAAA,CACA,QAAA,CACA,oEAAA,CAEA,kHACC,WAAA,CAKF,oDACC,iBAAA,CAGD,4CACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,yDAAA\",\"sourcesContent\":[\"\\n.templates-picker {\\n\\t&__form {\\n\\t\\tpadding: calc(var(--margin) * 2);\\n\\t\\t// Will be handled by the buttons\\n\\t\\tpadding-bottom: 0;\\n\\n\\t\\th2 {\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin: var(--margin) 0 calc(var(--margin) * 2);\\n\\t\\t}\\n\\t}\\n\\n\\t&__list {\\n\\t\\tdisplay: grid;\\n\\t\\tgrid-gap: calc(var(--margin) * 2);\\n\\t\\tgrid-auto-columns: 1fr;\\n\\t\\t// We want maximum 5 columns. Putting 6 as we don't count the grid gap. So it will always be lower than 6\\n\\t\\tmax-width: calc(var(--fullwidth) * 6);\\n\\t\\tgrid-template-columns: repeat(auto-fit, var(--fullwidth));\\n\\t\\t// Make sure all rows are the same height\\n\\t\\tgrid-auto-rows: 1fr;\\n\\t\\t// Center the columns set\\n\\t\\tjustify-content: center;\\n\\t}\\n\\n\\t&__buttons {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: calc(var(--margin) * 2) var(--margin);\\n\\t\\tposition: sticky;\\n\\t\\tbottom: 0;\\n\\t\\tbackground-image: linear-gradient(0, var(--gradient-main-background));\\n\\n\\t\\tbutton, input[type='submit'] {\\n\\t\\t\\theight: 44px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Make sure we're relative for the loading emptycontent on top\\n\\t::v-deep .modal-container {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t&__loading {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\tmargin: 0;\\n\\t\\tbackground-color: var(--color-main-background-translucent);\\n\\t}\\n}\\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, \"\\n/* @keyframes preview-gradient-fade {\\n 0% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0.5;\\n }\\n 100% {\\n opacity: 1;\\n }\\n} */\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry.vue\"],\"names\":[],\"mappings\":\";AAsiBA;;;;;;;;;;GAUA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.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 = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(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 = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2181;","__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\t2181: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(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(function(id) { return 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], function() { return __webpack_require__(18107); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getCurrentDirectory","currentDirInfo","OCA","Files","App","currentFileList","dirInfo","path","name","replace","getTemplates","axios","generateOcsUrl","response","data","ocs","createFromTemplate","filePath","templatePath","templateType","inheritAttrs","props","basename","type","required","checked","default","fileid","filename","previewUrl","hasPreview","mime","ratio","failedPreview","computed","nameWithoutExt","id","realPreviewUrl","getCurrentUser","document","getElementById","value","pathSections","startsWith","split","relativePath","forEach","section","encodeURIComponent","mimeIcon","methods","onCheck","onFailure","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","attrs","domProps","on","_v","class","_s","components","NcEmptyContent","NcModal","TemplatePreview","logger","loading","opened","provider","emptyTemplate","selectedTemplate","style","open","templates","fetchedProvider","close","onSubmit","currentDirectory","fileList","extension","normalize","fileInfo","model","filesClient","fileAction","$file","dir","fileActions","fileInfoModel","console","showError","$event","preventDefault","stopPropagation","apply","arguments","t","_b","_l","template","key","_e","getLoggerBuilder","setApp","detectUser","build","Vue","n","TemplatePickerRoot","createElement","body","appendChild","loadState","templatesPath","debug","TemplatePicker","TemplatePickerView","propsData","$mount","window","addEventListener","initTemplatesPlugin","attach","menu","addMenuEntry","displayName","templateName","iconClass","fileType","actionHandler","initTemplatesFolder","removeMenuEntry","OC","Plugins","register","index","newTemplatePlugin","app","label","FilesPlugin","copySystemTemplates","changeDirectory","template_path","error","subscribe","query","setFilter","action","FileAction","validateAction","_action","iconSvgInline","enabled","exec","execBatch","order","inline","renderInline","Error","getFileActions","_nc_fileactions","nodes","view","TrashCan","length","map","node","permissions","every","permission","Permission","source","emit","Promise","all","find","search","push","registerLegacyView","icon","parent","classes","expanded","params","OCP","Navigation","legacy","sticky","includes","isValidNavigation","isUniqueNavigation","_views","e","message","_currentView","views","getContents","isSvg","columns","isValidColumn","emptyView","defaultSortKey","column","title","render","sort","summary","ChartPie","NcAppNavigationItem","NcProgressBar","loadingStorageStats","storageStats","storageStatsTitle","usedQuotaByte","used","quota","storageStatsTooltip","beforeMount","setInterval","debounceUpdateStorageStats","throttleUpdateStorageStats","updateStorageStats","event","slot","relative","Math","min","el","mounted","userConfig","show_hidden","crop_image_previews","useUserConfigStore","store","defineStore","state","actions","onUpdate","update","generateUrl","userConfigStore","_initialized","Clipboard","NcAppSettingsDialog","NcAppSettingsSection","NcCheckboxRadioSwitch","NcInputField","Setting","setup","settings","webdavUrl","webdavDocs","appPasswordUrl","webdavUrlCopied","beforeDestroy","onClose","setConfig","copyCloudId","navigator","showSuccess","setTimeout","setting","target","select","scopedSlots","_u","fn","proxy","Cog","NavigationQuota","NcAppNavigation","NcIconSvgWrapper","SettingsModal","settingsOpened","currentViewId","currentView","parentViews","filter","childViews","reduce","list","watch","showView","heading","headingEl","newAppContent","itemId","setPageHeading","textContent","onLegacyNavigationChanged","onToggleExpand","show","generateToNavigation","openSettings","onSettingsClose","child","useFilesStore","fileStore","files","roots","getters","getNode","getNodes","ids","Boolean","getRoot","service","updateNodes","acc","attributes","deleteNodes","setRoot","root","onDeletedNode","usePathsStore","pathsStore","getPath","addPath","payload","useSelectionStore","selected","lastSelection","lastSelectedIndex","set","selection","setLastIndex","reset","saveUserConfig","mode","direction","filesSortingConfig","useSortingStore","isAscSorting","getSortingMode","setSortingBy","config","toggleSortingDirection","newDirection","Home","NcBreadcrumbs","NcBreadcrumb","filesStore","dirs","sections","exact","to","getNodeFromId","getFileIdFromPath","getDirDisplayName","onClick","ariaLabel","_setupProxy","nativeOn","isCachedPreview","caches","then","cache","match","useActionsMenuStore","element","svg","CustomElementRender","CustomSvgIconRender","FileIcon","FolderIcon","Fragment","NcActionButton","NcActions","NcLoadingIcon","active","isSizeAvailable","actionsMenuStore","keyboardStore","altKey","ctrlKey","metaKey","shiftKey","onEvent","selectionStore","backgroundFailed","backgroundImage","size","sizeOpacity","linkTo","is","href","selectedFiles","isSelected","cropPreviews","url","mimeIconUrl","enabledActions","enabledInlineActions","enabledMenuActions","uniqueId","openedMenu","get","debounceIfNotCached","isCached","fetchAndApplyPreview","img","resolve","reject","onCancel","resetState","clearImg","hashCode","hash","onActionClick","success","onSelectionChange","slice","start","end","filesToSelect","isAlreadySelected","onRightClick","formatFileSize","ref","_loading","opacity","currentFolder","totalSize","classForColumn","selectedNodes","areSomeNodesLoading","selectionIds","results","failedIds","MenuDown","MenuUp","NcButton","inject","sortingStore","mapState","sortingMode","sortAriaLabel","toggleSortBy","FilesListHeaderButton","FilesListHeaderActions","provide","selectAllBind","indeterminate","isAllSelected","isNoneSelected","isSomeSelected","onToggleAll","RecycleScroller","FileEntry","FilesListHeader","FilesListFooter","summaryFile","count","summaryFolder","slots","getFileId","item","caption","BreadCrumbs","FilesListVirtual","NcAppContent","promise","dirContents","isEmptyDir","isRefreshing","toPreviousDir","newView","oldView","newDir","oldDir","fetchContent","folder","contents","folders","directives","rawName","expression","Settings","_settings","_name","_el","_open","_close","Router","base","linkActiveClass","routes","alias","stringifyQuery","result","stringify","PiniaVuePlugin","pinia","createPinia","NavigationService","Object","assign","legacyViews","SettingsService","SettingsModel","NavigationView","router","FilesListView","values","sublist","subview","noRewrite","serviceWorker","scope","registration","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","keys","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file